| Voir le sujet précédent :: Voir le sujet suivant |
| Auteur |
Message |
igsoft Invité
|
Posté le: 08 Mai 2008 18:53 Sujet du message: probleme avec l'envoi d'un tampon mémoire sur la RS232 probleme avec l'envoi d'un tampon mémoire sur la RS232 |
|
|
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: |
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  |
|
| Revenir en haut de page |
|
 |
igor NOUVEAU

Inscrit le: 31 Aoû 2007 Messages: 4
|
Posté le: 08 Mai 2008 18:56 Sujet du message: probleme avec l'envoi d'un tampon mémoire sur la RS232 |
|
|
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 |
|
| Revenir en haut de page |
|
 |
|
|
Vous pouvez poster de nouveaux sujets dans ce forum Vous pouvez répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum Vous ne pouvez pas joindre des fichiers Vous pouvez télécharger des fichiers
|
|