Salut Antoine, Est-ce que tu peux tester ce patch ? Je pense que le problème est résolu. Merci pour ton analyse.
Par contre, c'est dommage, on est passé à coté d'une information importante qui nous aurait fait gagner beaucoup de temps, à savoir le warning à la compilation: uart.c:90: warning: ‘SIG_UART_DATA’ appears to be a misspelled signal handler uart.c:133: warning: ‘SIG_UART_RECV’ appears to be a misspelled signal handler D'où l'intérêt de compiler en -Wall -Werror chaque fois que c'est possible ! ++ Olivier Antoine albertelli wrote: > Hello, > J'ai enfin trouvé la raison du "reset" de l'atmega ! Je mets reset entre > guillemet, parce que c'est pas vraiment un reset : le programme sautait > à l'adresse 0x00. C'est lié à l'avr-libc qui lorsque elle recoit une > interruption pour laquelle elle n'a pas de gestionnaire appelle la > fonction _vector_default() qui fait un JUMP 0x00. Or sur l'Atmega168 n'a > pas un UART mais un USART. le handler correct s'appelle > donc SIG_USART_RECV et pas SIG_UART_RECV. J'ai fait un test et ça marche > nickel. Par contre je connais pas assez bien Aversive et les Atmel pour > savoir comment faire un patch propre. Une idée ? J'ai vu qu'il y avait > une macro UART_IS_USART. je vais creuser de ce côté là. > > A+ > Antoine > > Le 30 mai 2009 23:17, Olivier MATZ <z...@droids-corp.org > <mailto:z...@droids-corp.org>> a écrit : > > J'ai pas vraiment trop d'idée non plus. Peut-être que tu peux > essayer de remplacer la ligne par: > UCSRB |= (1 << UDRIE); > > > Je voulais dire UCSR0B et pas UCSRB. Evidemment ça ne marche > que pour l'uart 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 > 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
Index: uart_defs.h =================================================================== RCS file: /var/lib/cvs/aversive/modules/comm/uart/uart_defs.h,v retrieving revision 1.2.4.12 diff -u -p -r1.2.4.12 uart_defs.h --- uart_defs.h 20 Feb 2009 20:16:09 -0000 1.2.4.12 +++ uart_defs.h 29 Jun 2009 20:22:35 -0000 @@ -46,11 +46,21 @@ /* For arch with only one UART, we consider that UART0 = UART */ #if !defined(SIG_UART0_DATA) && !defined(SIG_USART0_DATA) +#if defined SIG_UART_DATA #define SIG_UART0_DATA SIG_UART_DATA +#elif defined SIG_USART_DATA +#define SIG_UART0_DATA SIG_USART_DATA #endif +#endif + #if !defined(SIG_UART0_RECV) && !defined(SIG_USART0_RECV) +#if defined SIG_UART_RECV #define SIG_UART0_RECV SIG_UART_RECV +#elif defined SIG_USART_RECV +#define SIG_UART0_RECV SIG_USART_RECV #endif +#endif + #ifndef UDR0 #define UDR0 UDR #endif
_______________________________________________ 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