FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs  Galerie PhotosGalerie Photos   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

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



 
Poster un nouveau sujet   Répondre au sujet    forums.jelectronique.com Index du Forum -> AT90-ATmega-ATtiny AT90-ATmega-ATtiny
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
igsoft
Invité





MessagePosté 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 Répondre en citant

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 Pleure ou Très triste Pleure ou Très triste
Revenir en haut de page
igor
NOUVEAU
NOUVEAU


Inscrit le: 31 Aoû 2007
Messages: 4

MessagePosté le: 08 Mai 2008 18:56    Sujet du message: probleme avec l'envoi d'un tampon mémoire sur la RS232 Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    forums.jelectronique.com Index du Forum -> AT90-ATmega-ATtiny Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
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


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com