Olivier MATZ a écrit :
> Hello,
>
> Voici quelques pistes (je n'ai pas de quoi faire l'essai avant qqs jours).
>
>
> - Dans scheduler_config.h, les deux valeurs suivantes doivent être
> cohérentes, par exemple : TIMER0_PRESCALER_DIV_32 et
> SCHEDULER_CLOCK_PRESCALER 32.
>
> Là il y a :
> #define SCHEDULER_CK TIMER0_PRESCALER_DIV_8
> #define SCHEDULER_CLOCK_PRESCALER 32 /* must coherent with value above */
>   
ok j'avais pas pas compris ça, mais si je met TIMER0_PRESCALER_DIV_32 il
me met une erreur :

/aversive/modules/base/scheduler/scheduler.c:49: error:
'TIMER0_PRESCALER_DIV_32' undeclared (first use in this function)

> Je vais ajouter un exemple en commentaire pour être bien sûr que c'est
> clair.
>
>
> - Probablement rien à voir avec ton pb, mais tu ne dois pas avoir une
> version récente de avr-gcc, car le prototype de fdevopen() est passé de :
> fdevopen((int(*)(char))uart0_send, (int(*)(void))uart0_recv, 0);
>
> à :
> fdevopen(uart0_dev_send, uart0_dev_recv);
>   
En fait c'est du recopiage d'eirbot, mais ton truc n'a pas l'air de
marcher. J'ai la version 4.1.0 de avr-gcc
>
> - Le prototype de time_init() est (vous noterez la faute de frappe à
> given) :
> /** init time module : schedule the event with the givent priority */
> void time_init(uint8_t priority);
>
> Le fait de mettre un priorité de 0 à cet évenement et 128 à l'évenement
> transmettre() (c'est la priorité par défaut) fait que l'évenement sera
> delayé tant que le plus prioritaire n'est pas terminé. Du coup ton
> horloge dérive très légèrement. Je verrais plus un time_init(200);
>   
Ok c'est fait.
> Je dirais que d'une manière générale, les printf doivent aller dans les
> fonctions main() ou évenements à faible priorité. A noter que
> d'augmenter significativement la taille de la fifo d'émission dans
> l'uart devrait aussi permettre de résoudre le pb en rendant le printf
> bcp plus court.
>   
En fait c'était pour faire des tests rapides et vu que je l'appelle
toutes les dix secondes et que mon anémomètre ne risque pas d'aller à
plus de 50Hz (sinon on en entendrait parler au info ;) je me suis dit
que ce n'était pas très important.
>
> - Encore 2 choses qui n'ont probablement rien à voir :
> void transmettre(void) doit avoir comme prototype
> void transmettre(void * dummy), même si dummy n'est pas utilisé.
>   
Ok fait.
> Et time_get_s() retourne des 'seconds', qui est un uint32_t, donc le
> cast en (unsigned int) le transforme en 16 bits sur AVR, tu ne
> dépasseras donc pas 65536 secondes dans le printf()... attention par
> contre à la chaine de format "%ld" dans le cas d'un 32 bits.
>   
Oups je corrige ça.
>
> Vala, tiens moi au courant si ça marche (ou pas).
>   
bin ...
au fait c'est quoi la commande cvs pour prendre le code à jour ?

merci
> FabM
>   


_______________________________________________
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 à