Commits

Pierre Surply committed 5904e12

sout3: redac surf_prog

  • Participants
  • Parent commits aba5e64

Comments (0)

Files changed (2)

File doc/sout3/drivers.md

 * `Vdd` : Tension d'alimentation (5V)
 * `V0` : Reglage du contraste (Maximal lorsque relié à la masse)
 * `RS` (`R`egister `S`elect)
-        - 0 : Sélection du registre d'instruction
-        - 1 : Sélection du registre de donnée
+    - 0 : Sélection du registre d'instruction
+    - 1 : Sélection du registre de donnée
 * `R/W` (`R`ead/`W`rite)
-        - 0 : Écriture
-        - 1 : Lecture
+    - 0 : Écriture
+    - 1 : Lecture
 * `E` (`E`nable)
 * `DB0:DB7` : Bus de données
 
 
 Permet de paramètrer la direction du curseur et de l'affichage.
 
-- `RS` : 0
-- `RW` : 0
-- `DB7` : 0
-- `DB6` : 0
-- `DB5` : 0
-- `DB4` : 0
-- `DB3` : 0
-- `DB2` : 0
-- `DB1` :
-        * 0 : Se déplacer vers la gauche
-        * 1 : Se déplacer vers la droite
-- `DB0` : Faire défiler l'affichage entier
+* `RS` : 0
+* `RW` : 0
+* `DB7` : 0
+* `DB6` : 0
+* `DB5` : 0
+* `DB4` : 0
+* `DB3` : 0
+* `DB2` : 0
+* `DB1` :
+    - 0 : Se déplacer vers la gauche
+    - 1 : Se déplacer vers la droite
+* `DB0` : Faire défiler l'affichage entier
 
 ##### Positionnement manuel du curseur
 
 
 Le registre `ADMUX` permet de contrôler le multiplexeur analogique du `CAN`.
 
-- Les bits 7:6 permettent de sélectionner la tension de référence. Dans notre cas, nous utilisons la tension AVCC avec un condensateur externe (présent sur la carte `Atmega 1280`) : cela équivaut à la valeur 01.
-- Le bit 5 permet d'aligner les 10 bits de résultat à gauche. Ici, nous les alignerons à droite.
-- Les bits 4:0 permet de choisir le canal et le gain que le multiplexeur sélectionnera. Cette valeur dépend donc de l'entrée que l'on souhaite convertir.
+- Les bits `7:6` permettent de sélectionner la tension de référence. Dans notre cas, nous utilisons la tension AVCC avec un condensateur externe (présent sur la carte `Atmega 1280`) : cela équivaut à la valeur 01.
+- Le bit `5` permet d'aligner les 10 bits de résultat à gauche. Ici, nous les alignerons à droite.
+- Les bits `4:0` permet de choisir le canal et le gain que le multiplexeur sélectionnera. Cette valeur dépend donc de l'entrée que l'on souhaite convertir.
 
 ##### Le registre `ADCSRA` (`ADC` `C`ontrol and `S`tatus `R`egister `A`)
 
 Ce registre permet de définir le comportement global du `CAN` et de lancer une conversion.
 
-- Le bit 7 permet d'activer le `CAN`.
-- Le bit 6 permet de lancer une conversion
-- Le bit 5 permet de lancer automatiquement une conversion lorsqu'un front montant est détecté.
-- Le bit 4 est mis à 1 lorsqu'une conversion est terminée.
-- Le bit 3 permet d'activer une interruption lorsqu'une conversion est terminée.
-- Les bit 2:0 permettent de définir la prédivision qui sera appliquée entre signal d'horloge `XTAL` et l'horloge qui cadence le convertisseur. Ici, nous appliquerons un facteur de 128 (ce qui correspond à une valeur de 111).
+- Le bit `7` permet d'activer le `CAN`.
+- Le bit `6` permet de lancer une conversion
+- Le bit `5` permet de lancer automatiquement une conversion lorsqu'un front montant est détecté.
+- Le bit `4` est mis à 1 lorsqu'une conversion est terminée.
+- Le bit `3` permet d'activer une interruption lorsqu'une conversion est terminée.
+- Les bit `2:0` permettent de définir la prédivision qui sera appliquée entre signal d'horloge `XTAL` et l'horloge qui cadence le convertisseur. Ici, nous appliquerons un facteur de 128 (ce qui correspond à une valeur de 111).
 
 ##### Les registres `ADCL` et `ADCH` (`ADC` Data Register)
 
     end
 
 #### Problèmes rencontrés
+\label{sec:pbcan}
 
 La bonne manière de faire pour réaliser un tel circuit éléctronique aurait été d'utiliser des bobines et des condensateurs pour filtrer les écarts de tensions et ainsi diminuer le bruit.
 

File doc/sout3/surf_prog.md

 
 ### Protocol de communication
 
-#### Connection avec le logiciel
+#### Connexion avec le logiciel
+
+Lorsque le logiciel cherche à se connecter à la surface, celui-ci envoie l'octet `0b00101010` à travers la connexion série. Si la surface répond la même chose, alors la connexion s'établie. Dans le cas contraire, le programme s'arrête avec un message d'erreur.
+
+Une fois la connxion établie, le logiciel envoie le titre du fichier traité sans extension ni chemin d'accès. La fin du titre est marquée par un caractère nul. À cause de la taille de l'écran, la taille du titre est limitée à 16 caractères.
 
 #### Actualisation des données
 
+Lors du traitement du signal sonore, le logiciel *StarDSP* envoie régulierement un octet décrivant l'état du programme. Il est découpé de cette manière :
+
+* Bit `4` :
+    - 0 : Le signal est en train d'être traité
+    - 1 : Le traitement est mis en pause
+* Bits `3:0` : Cette valeur représente l'intensité du signal sonore traité à cet instant. Elle est comprise entre 0 et 7.
+
+Une fois cet octet reçu, la surface répond en indiquant un évenement qui vient de se produire sur ses entrées. Un premier octet est alors envoyé au logiciel pour indiquer le type d'évenement :
+
+* `00000000` : Cette instruction indique qu'aucun évenement ne s'est produit.
+* `00000001` : Le bouton poussoir vient d'être pressé
+* `000XXX10` : Indique que le potentiomètre XXX vient de changer de valeur.
+
+Lorsqu'un potentiomètre vient de changer de valeur, un second octet est alors envoyé pour indiquer la nouvelle valeur de ce dernier. Cette valeur est comprise en 0 et 63 (voir \ref{sec:pbcan}).
+
 ### Affichage
+
+Un grand soin a été apporté sur l'affichage de la surface : c'est par ce biais qu'elle communique avec l'utilisateur.
+
+Lorsque le périphérique est brancher par `USB`, cet écran est affiché :
+
+    *** StarDSP  ***
+                   /
+
+Cela signifie que la surface est en attente de connexion avec le logiciel *StarDSP* : elle attend de recevoir le caractère `0b00101010`.
+
+Essayons de lancer le logiciel de cette manière :
+
+    $ stardsp -core -surface /dev/ttyUSB0 -file ~/Music/titre_du_fichier.aiff -default
+    
+La surface affichera alors :
+
+    titre_du_fichier
+    =====      =====
+
+Lorsque le bouton poussoir est pressé :
+
+    titre_du_fichier
+    ==== PAUSE  ====
+
+Et enfin, lorsque le potentiomètre blanc est tourné :
+
+    titre_du_fichier
+    Drive       42 %
+