J'ai ouvert un rapport de bug sur le bugzilla. Après un peu de debug, j'ai trouvé que la ligne qui causait le reset est celle-ci (dans uart_send_nowait.c, ligne 61) : sbi(*uart_regs[num].ucsrb, UDRIE); //FIXME: Apparement le bug est ici
T'aurais pas une idée, parce que là je sèche un peu... A+ Le 26 mai 2009 22:58, Antoine albertelli <antoinea...@gmail.com> a écrit : > En fait, à l'émission, le 1er caractère passe, mais les suivants ne passent > jamais et le uc fait un reset. Bon sinon c'est pas trop grave, de toute > façon je passe bientôt au 128, parce que le 168, pour faire tourner un > asserv, c'est chaud quand même :D > > A+ > > Le 26 mai 2009 22:44, Olivier MATZ <z...@droids-corp.org> a écrit : > > hmmm j'ai pas trop d'idée là comme ça... >> >> je pensais d'abord à un dépassement de pile : le uC a >> 1024 octets de RAM et 128 sont utilisés pour les fifo >> d'émission / réception. Celà dit s'il n'y a que ça >> comme code, je n'y crois pas trop. >> >> Que se passe-t-il exactement lorsque tu émets ? Est-ce >> que tu vois quelques caractères sortir avant le reset ? >> Est-ce que tu peux reproduire le problème en émettant >> juste un seul caractère ? >> >> J'ai testé le module UART sur atmega8, 32, 128 et 2560. >> Il se peut que ça déconne sur un 168... Jette à tout >> hasard un coup d'oeil aux valeurs des vecteurs >> d'interruptions dans iom168.h. Tu peux aussi essayer >> de configurer l'uart à la main, et comparer les valeurs >> des registres. Il est possible qu'il y ait un bug dans >> le module... >> >> Oliv >> >> Antoine albertelli wrote: >> > le voilà : >> > >> > >> > #ifndef UART_CONFIG_H >> > #define UART_CONFIG_H >> > >> > /* >> > * UART0 definitions >> > */ >> > >> > /* compile uart0 fonctions, undefine it to pass compilation */ >> > #define UART0_COMPILE >> > >> > /* enable uart0 if == 1, disable if == 0 */ >> > #define UART0_ENABLED 1 >> > >> > /* enable uart0 interrupts if == 1, disable if == 0 */ >> > #define UART0_INTERRUPT_ENABLED 1 >> > >> > #define UART0_BAUDRATE 38400 >> > >> > /* >> > * if you enable this, the maximum baudrate you can reach is >> > * higher, but the precision is lower. >> > */ >> > #define UART0_USE_DOUBLE_SPEED 0 >> > //#define UART0_USE_DOUBLE_SPEED 1 >> > >> > #define UART0_RX_FIFO_SIZE 64 >> > #define UART0_TX_FIFO_SIZE 64 >> > //#define UART0_NBITS 5 >> > //#define UART0_NBITS 6 >> > //#define UART0_NBITS 7 >> > #define UART0_NBITS 8 >> > //#define UART0_NBITS 9 >> > >> > #define UART0_PARITY UART_PARTITY_NONE >> > //#define UART0_PARITY UART_PARTITY_ODD >> > //#define UART0_PARITY UART_PARTITY_EVEN >> > >> > #define UART0_STOP_BIT UART_STOP_BITS_1 >> > //#define UART0_STOP_BIT UART_STOP_BITS_2 >> > >> > >> > >> > >> > /* .... same for uart 1, 2, 3 ... */ >> > >> > >> > Le 26 mai 2009 22:21, Olivier MATZ <z...@droids-corp.org >> > <mailto:z...@droids-corp.org>> a écrit : >> > >> > Salut Antoine, >> > >> > Tu pourrais envoyer ton fichier uart_config.h aussi ? >> > >> > Olivier >> > >> > Antoine albertelli wrote: >> > > Hello, >> > > Voilà, j'ai faits quelques tests du module UART de Aversive, et >> > j'ai des >> > > petits bugs. Tant que je n'active pas les interrupts, tout va très >> > bien. >> > > Mais dés que je mets un sei() pour utiliser le scheduler, le >> > module UART >> > > déclenche ce que je pense être un reset du processeur... une idée >> ? >> > > Merci pour votre attention >> > > >> > > Antoine >> > > >> > > P.S. : Je travaille sur Atmega168, et voici mon code (tiré en >> grande >> > > partie du code microb 2009) : >> > > >> > > int main(void) { >> > > >> > > sbi(DDRB,5); >> > > /* Met la LED en sortie. */ >> > > >> > > uart_init(); >> > > fdevopen(uart0_dev_send, NULL); >> > > sei(); /* BUG. */ >> > > for(counter = 0;counter < 5;counter++) { // chenillard pour le >> > reset >> > > BIT_TOGGLE(PORTB,5); >> > > wait_ms(500); >> > > } >> > > for(;;) printf_P(PSTR("Dass das Gluck deinen Haus >> setzt.\r\n")); >> > > return 0; >> > > } >> > > >> > > >> > > >> > >> ------------------------------------------------------------------------ >> > > >> > > _______________________________________________ >> > > Avr-list mailing list >> > > Avr-list@droids-corp.org <mailto:Avr-list@droids-corp.org> >> > > CVSWEB : >> http://cvsweb.droids-corp.org/cgi-bin/viewcvs.cgi/aversive >> > > WIKI : http://wiki.droids-corp.org/index.php/Aversive >> > > DOXYGEN : http://zer0.droids-corp.org/doxygen_aversive/html/ >> > > BUGZILLA : http://bugzilla.droids-corp.org >> > > COMMIT LOGS : http://zer0.droids-corp.org/aversive_commitlog >> > >> > >> > _______________________________________________ >> > Avr-list mailing list >> > Avr-list@droids-corp.org <mailto:Avr-list@droids-corp.org> >> > CVSWEB : http://cvsweb.droids-corp.org/cgi-bin/viewcvs.cgi/aversive >> > WIKI : http://wiki.droids-corp.org/index.php/Aversive >> > DOXYGEN : http://zer0.droids-corp.org/doxygen_aversive/html/ >> > BUGZILLA : http://bugzilla.droids-corp.org >> > COMMIT LOGS : http://zer0.droids-corp.org/aversive_commitlog >> > >> > >> > >> > ------------------------------------------------------------------------ >> > >> > _______________________________________________ >> > Avr-list mailing list >> > Avr-list@droids-corp.org >> > CVSWEB : http://cvsweb.droids-corp.org/cgi-bin/viewcvs.cgi/aversive >> > WIKI : http://wiki.droids-corp.org/index.php/Aversive >> > DOXYGEN : http://zer0.droids-corp.org/doxygen_aversive/html/ >> > BUGZILLA : http://bugzilla.droids-corp.org >> > COMMIT LOGS : http://zer0.droids-corp.org/aversive_commitlog >> >> >> _______________________________________________ >> Avr-list mailing list >> Avr-list@droids-corp.org >> CVSWEB : http://cvsweb.droids-corp.org/cgi-bin/viewcvs.cgi/aversive >> WIKI : http://wiki.droids-corp.org/index.php/Aversive >> DOXYGEN : http://zer0.droids-corp.org/doxygen_aversive/html/ >> BUGZILLA : http://bugzilla.droids-corp.org >> COMMIT LOGS : http://zer0.droids-corp.org/aversive_commitlog >> > >
_______________________________________________ Avr-list mailing list Avr-list@droids-corp.org CVSWEB : http://cvsweb.droids-corp.org/cgi-bin/viewcvs.cgi/aversive WIKI : http://wiki.droids-corp.org/index.php/Aversive DOXYGEN : http://zer0.droids-corp.org/doxygen_aversive/html/ BUGZILLA : http://bugzilla.droids-corp.org COMMIT LOGS : http://zer0.droids-corp.org/aversive_commitlog