probleme avec l'envoi d'un tampon mémoire sur la RS232

Une question sur l’un des microcontrôleurs de la série des AT90, ATtiny ou des ATmega ? Une question sur la programmation assembleur ? C’est par ici.

Modérateur: Modérateur

probleme avec l'envoi d'un tampon mémoire sur la RS232

Messagede igsoft le 08 Mai 2008 18:53

Bonjour à tous,

J'ai un petit soucis avec le code suivant, explication avant de lire :
- ce code est lancé par l'interruption UDRE
- le contenu des cases mémoire pointeur_buff_em et pointeur_buff_em+1 est à 0 lors de l'activation de l'interruption UDRE.
- Le but du jeu est de vider sur le Tx le tampon en mémoire buff_em_entete qui fait 0x0120 octets, en évitant de transmettre les cases mémoires remplit par l'octet 0.
- Ca ne marche pas, la transmission n'est jamais complète !!! je ne sais plus ou chercher.

Merci de votre aide précieuse

Code: Tout sélectionner
vide_buffer_emission:
   ; Charge la valeur actuelle du pointeur
   lds YH,pointeur_buff_em
   lds YL,pointeur_buff_em+1

lire_caractere:
   ; Pointe le début du tampon d'entête
   ldi ZH,high(buff_em_entete)
   ldi ZL,low(buff_em_entete)
   ; Pointe à la position exacte dans le tampon
      add ZL,YL
   adc ZH,YH
   ; Lit le caractère en mémoire tampon d'emission
   ld r16,Z       
   tst r16   
   brne emettre_caractere
   ; Si le caractère lu est 0, lire le suivant
   adiw YH:YL,1   ; Incrémente le pointeur
   ; Teste si le pointeur est à la fin de la mémoire
   cpi YH,high(0x0120)
   brne lire_caractere
   cpi YL,low(0x0120)
   breq stopper_udre   ; Si oui, stopper l'interruption UDRE
   rjmp lire_caractere

emettre_caractere:
   out UDR,r16   
   adiw YH:YL,1
   ; Teste si le pointeur est à la fin de la mémoire
   cpi YH,high(0x0120)
   brne lire_caractere
   cpi YL,low(0x0120)
   brne fin_emit_rs232   ; Si non, on attend que l'UART soit libre
            ; Si oui, stoppe l'interruption UDRE
stopper_udre:
   cbi UCSRB,UDRIE   

fin_emit_rs232:
   sts pointeur_buff_em,YH
   sts pointeur_buff_em+1,YL
   ret


je suis :cry: :cry:
igsoft
 

Messagede igor le 08 Mai 2008 18:56

PS Igsoft, c'est moi, j'avais pas réussi à me connecter avec mon pseudo pour poster le message du dessus.

merci de votre aide.

PS : c'est sur ATMEGA 16
igor
NOUVEAU
NOUVEAU
 
Messages: 4
Inscription: 31 Aoû 2007 11:28


Retourner vers AT90-ATmega-ATtiny

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités