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

Répondre à