Salut Antoine,

Alors il y a 3 méthodes pour le scheduler:

- timer0: dans ce cas c'est le code du scheduler qui configure
  le timer 0 pour avoir son interruption
- timer generique: utilise le module timer generique pour être
  appelé
- manuel: dans ce cas c'est à l'utilisateur d'appeler la fonction
  scheduler_interrupt() à intervale régulier

la méthode utilisée à microb est la 3e. On enregistre une fonction
avec un timer générique sur le timer0:

  void main_timer_interrupt()

C'est cette fonction qui appelle le scheduler une fois sur 4. La
raison est historique: il y a 2 ans, il fallait poller les codeurs
très régulièrements (toutes les 128us) et c'était fait dans
cette fonction. Le scheduler était lui appelé toutes les 512 us.
En fait, un appel à scheduler_interrupt() est un peu couteux, même
s'il n'y a aucune tâche à lancer.

Voilà voilà
++
Olivier

PS: j'ai bien reçu les TSOP, merci encore !



Antoine albertelli wrote:
> Comme quoi il faut jamais écrire un mail à 3:45 du matin :)
> J'ai trouvé la solution après une bonne nuit de sommeil : il suffisait
> d'activer les interrupts avec sei()... Ca a aussi résolu des problèmes
> d'UART au passage ^^
> Par contre je reste quand même curieux sur la méthode utilisée dans le
> robot de microb d'utiliser le module timer. Il y a une raison spéciale
> ?
> 
> Desolé d'avoir écrit pour rien, et au plaisir de voir des robots
> distribuer de la nourriture !
> 
> A+
> Antoine
> 
> Le 31 mars 2010 03:42, Antoine albertelli <antoinea...@gmail.com> a écrit :
>> Hello,
>> Au CVRA on vient de finir de monter nos cartes éléc, et en testant le
>> code dessus, je me suis rendu compte que je n'arrive pas à faire
>> tourner le module scheduler (avec l'option use_timer0). Les fonctions
>> que je schedule ne sont jamais appelées. En regardant le code de
>> Microb, j'ai vu que vous utilisiez un appel à scheduler_interrupt dans
>> le cadre d'une interruption de timer0.
>> Je voulais savoir si vous avez eu des problèmes du même genre et
>> comment vous les avez résolu ?
>>
>> A+
>> Antoine
>>
> 
> _______________________________________________
> 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 à