Sommaire

 

Réalisation de la partie mise en marche du moteur :

 

    Afin de derterminer si le moteur doit être en marche ou à l'arrêt, j'ai utilisé une variable mr_ar qui si elle est à 1, indique que le moteur doit fonctionner et à 0, indique que le moteur doit être à l'arrêt.

 

La mise en marche du moteur se fera donc selon l’organigramme suivant :

 


Le code source en assembleur est alors le suivant :

 

 

;************************

;******** marche ********

;************************

 

 

marche:

 

     ldaa #$01            ;* met 01 ds MR_AR pour indiquer

     staa mr_ar           ;* que le moteur doit etre en marche

 

     ldaa #$05            ;* met first = 5 pour indiquer attente de

     staa first           ;* 5 impulsions du capteur avant test de patinage

 

     ldaa #$00            ;* init detect= 0 pour indique

     staa detect          ;* non detection d'un front sur le capteur

 

     jmp menu             ;affiche message d'invite

 

*********************************************************

*********************************************************

 

     Ce programme n'a en fait était utilisé que pour la partie de tests et peut être utilisé par la suite pour d'autres commandes de moteurs CC.

     Les commandes qui le constitue seront utilisées dans les autres sous programmes ayant à démarrer le moteur, comme le programme de position.

 

 

Réalisation de la partie mise à l'arrêt du moteur :

 

 La mise à l'arrêt du moteur se fera donc selon l’organigramme suivant :

 


Le code source en assembleur est alors le suivant :

 

;************************

;******** arret *********

;************************

 

arret:

 

     ldaa #$00            ;* met MR_AR = 00 pour indiquer

     staa mr_ar           ;* que le moteur doit etre a l'arret

 

     ldaa #$00

     staa porta            ;* met pwm a 0

 

     jmp menu             ;* affiche message d'invite

 

*******************************************************

*******************************************************

 

 

Réalisation du programme d'initialisation du sens de rotation :

 

    Le circuit lmd18200 permet de changer le sens de rotation en changeant l'état logique de sa broche  3. C'est cette fonction qu'on va exploiter dans le programme suivant :

 

 

Le code source en assembleur est alors le suivant :

 

 

;************************

;******** sens **********

;************************

 

sens:

 

     ;ldx #text2          ;* affiche message    *****

     ;jsr transmit        ;* "d ou g"           *****

     jsr receive          ;* attent un caractere

     ldab comm            ;* test

     cmpb #'g'            ;* si comm = 'g'

     beq gauche           ;* branche en 'gauche'

 

     ldaa #$00            ;* init sens = droite

     staa sensr           ;* 

     staa portb           ;* met portb a 00

 

     jmp menu             ;* affiche message d'invite

 

gauche:

 

     ldaa #$01            ;* init sens = gauche

     staa sensr           ;*

     staa portb           ;* met portb a 01

 

     jmp menu             ;affiche message d'invite

 

 

********************************************************

********************************************************

 

 

Réalisation programme d'initialisation de la vitesse de rotation :

  

  Ce programme permet de saisir la vitesse de rotation du moteur, en changeant tout simplement la valeur de rpcycl.


     L'organigramme du programme est le suivant :

 


   La conversion ascii/vitesse se fait tout simplement en retirant 30 (hexa) à la valeur ascii du caractère recu. C'est à dire que si on rentre 4 au clavier, sa valeur ascii va être 34 (hexa), alors pour retrouver sa valeur en decimal, on fait 34 - 30 cela nous donne alors la valeur 4 de départ. Cette valeur est sauvegardé dans la variable rpcycl, faisant alors changer le rapport cyclique du signal PWM et donc la vitesse de rotation du moteur.

   En fonction de la vitesse qui est entrée, les variables pulseh et pulsel sont initialisées avec les valeurs spécifiques à la vitesse.

   ( L'utilité de ces variables va être expliquer dans le prochain programme.)

 

Le code source en assembleur est alors le suivant :

 

 

;************************

;******* vitesse ********

;************************

 

vitesse:

 

     ;ldx #text4          ;* affiche message          *****

     ;jsr transmit        ;* "entrer une vitesse"     *****

 

     jsr receive          ;* attend un caractere

 

     ldab comm            ;* test

 

     cmpb #$31            ;* si caract < 31 ASCII

     blo erreur           ;* branche en ERREUR

 

     cmpb #$35            ;* si caract > 35 ASCII

     bhi erreur           ;* branche en ERREUR1

 

     ldaa #$05            ;* met first = 5 pour indiquer attente de  

     staa first           ;* 5 impulsions du capteur avant test de patinage

 

     ldaa #$00            ;* init detect= 0 pour indique

     staa detect          ;* non detection d'un front sur le capteur

 

     ldaa comm            ;* prend la comm (30 a 35 en ASCII)

     suba #$30            ;* retire 30 pour avoir 1 a 5

     staa svrpcycl        ;* enregistre la new vitesse

     staa rpcycl          ;* idem

 

     ldaa svrpcycl        ;* test si vitesse = 2

     cmpa #$02            ;*

     beq v2               ;* branche en v2 si vitesse = 2

 

     cmpa #$03            ;*

     beq v3               ;* branche en v3 si vitesse = 3

 

     cmpa #$04            ;*

     beq v4               ;* branche en v4 si vitesse = 4

 

     ldaa pulseh5         ;*

     staa pulseh          ;* init le pulseh avec la valeur 

     staa svpulseh        ;* pour la vitesse 5

  

 

     ldaa pulsel5         ;*

     staa pulsel          ;* init le pulsel avec la valeur 

     staa svpulsel        ;* pour la vitesse 5

 

     jmp menu             ;* affiche message d'invite

 

v2:  ldaa pulseh2         ;*

     staa pulseh          ;* init le pulseh avec la valeur

     staa svpulseh        ;* pour la vitesse 2

 

     ldaa pulsel2         ;* init le pulsel avec la valeur

     staa pulsel          ;* pour la vitesse 2

     staa svpulsel        ;*

 

     jmp menu             ;* affiche message d'invite

 

v3:  ldaa pulseh3         ;*

     staa pulseh          ;* init le pulseh avec la valeur

     staa svpulseh        ;* pour la vitesse 3

 

     ldaa pulsel3         ;*

     staa pulsel          ;* init le pulsel avec la valeur

     staa svpulsel        ;* pour la vitesse 3

 

     jmp menu             ;* affiche message d'invite

 

v4:  ldaa pulseh4         ;*

     staa pulseh          ;* init le pulseh avec la valeur

     staa svpulseh        ;* pour la vitesse 4

 

     ldaa pulsel4         ;*

     staa pulsel          ;* init le pulsel avec la valeur

     staa svpulsel        ;* pour la vitesse 4

 

     jmp menu             ;* affiche message d'invite

 

erreur:

 

     ldx #text3           ;* affiche message d'erreur

     jsr transmit         ;* (e4)

     jmp menu             ;* affiche message d'invite

 

Sommaire