Re: [Avr-list] Scheduler sur Atmega2560

2010-04-02 Par sujet Olivier MATZ
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  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


Re: [Avr-list] Scheduler sur Atmega2560

2010-03-31 Par sujet Antoine albertelli
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  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] Scheduler sur Atmega2560

2010-03-30 Par sujet Antoine albertelli
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