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

Répondre à