Re: [Avr-list] noob help ;-)

2007-06-30 Par sujet Olivier MATZ
yop,

 printf(%lu %u\n,(unsigned long)sec,(unsigned int)nbre_tours);

 en déclarant sec comme seconds et j'ai quand même un débordement sur
 16bits.
 
 ça devrait marcher pourtant. Par défaut je mets %ld mais je pense que
 c'est pareil. Sinon rebalance le code ;)
   
 Ci-joint.

Je vois pas l'erreur là. J'essayerai sur sur notre robot la semaine
prochaine parce que ça m'intrigue ;)

Essaye de regarder si un truc comme ça fonctionne :

long i=153548L;
printf(%ld\n, i);

Sinon, je pense pas que ce soit ça, mais dans le menuconfig, tu peux
choisir différents types de printf (dans generation options).

 Sinon, j'ai du mal à comprendre comment marche tout le bousin. Je
 voudrai utiliser le timer0 pour avoir un rapport cyclique variable sur
 OC0, est-ce que c'est possible de le faire tout en ayant le scheduler
 sur le même timer ?

Je pense que c'est possible... même si le module est pas vraiment prévu
pour.
Dans le cas où tu utilises le scheduler avec le timer0 (sans utiliser le
module hardware/timer), il va initialiser les registres de la manière
suivante :

sbi(TIMSK, TOIE0);
TCNT0 = 0;
TCCR0 = SCHEDULER_CK;

En gros, tu dois pouvoir changer la valeur de TCCR0 après
l'initialisation du scheduler pour utiliser le mode PWM du timer 0, tout
en gardant l'interruption overflow, utilisée par le scheduler.

a+
Olivier



___
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] noob help ;-)

2007-06-14 Par sujet Olivier MATZ
 Laisser quoi configurable ?
   
 le timer, le prescaler, et le fait d'utiliser soit l'int de debordement, 
 soit celle du compare auto-resettant (bien pratique pour les valeurs 
 rondes )

Oui, le output compare j'y avait pensé aussi, mais pour le moment ça
n'est pas encore faisable... quand ça sera implémenté dans le module
hardware/timer, ça sera facilement utilisable par le scheduler.

Oliv


___
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] noob help ;-)

2007-06-14 Par sujet Olivier MATZ

 Ok ok, donc si je veut la ms à 8Mhz ça me f'ra 32.

c'est ça :
8 000 000 / (32*256) = 976 Hz
soit une période de 1024 us

 bin le base/time, mon but c'est d'avoir l'heure pour pouvoir faire des
 log (en secondes unix ça me semble bien).
 Est-ce que l'heure est précise ? Est-ce qu'elle est corrélée avec le
 scheduler ? Est-ce que je peut faire de la PWM, de l'ADC, utiliser le
 scheduler ET base/time en même temps sans avoir de problèmes de manque
 de timer ?

je dirais oui.
base/time utilise le scheduler, et donc l'heure sera mise à jour toute
les ms dans ton cas, et elle sera précise (pas de dérive) s'il n'y a pas
de bug :)

 En fait le arg2 c'est la fonction (car
 scheduler_add_periodical_event() est en fait une macro). Du coup le
 prototype de transmettre() ne doit pas etre correct. Ca doit etre
 qqchose du genre void f(void *).
   
 Aaah ok, c'est un peu tordu toutes ces macros ;-)

hum certes. Je voulais refaire l'interface, mais je ne voulais pas trop
casser la compatibilité avec le reste. Cela dit des static inline
seraient peut être mieux.

++
Oliv


___
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] noob help ;-)

2007-06-13 Par sujet Olivier 'zer0' MATZ
Yop,

  - Le scheduler est-il obligatoirement synchronisé sur la us, parce que
  moi la ms me suffit ?
 
 Si je me souviens bien les proto de scheduler prennent des SCHEDULER_UNIT non 
 ?
 
 1 Scheduler Unit = prescaler * (256e6/freq CPU) cycles horloge.
 
 http://zer0.droids-corp.org/doxygen_aversive/html/scheduler_8h-source.html

Ouais alors euh...  C'est bien ça, si on utilise un timer 8 bits
(pendant longtemps on ne pouvait utiliser que le timer 0). Mais je me
demande si la formule n'est pas fausse si on utilise un timer autre
que le 0. Bref, je vais regarder demain.

Bon, par contre, si tu réponds non dans le menuconfig à Use timer
module (recommended) - CONFIG_MODULE_SCHEDULER_USE_TIMERS, alors tu
utilises le timer 0 et dans ce cas le pb ne devrait pas se poser. Tu
regles la résolution du scheduler en fonction du prescaler :
http://cvsweb.droids-corp.org/cgi-bin/viewcvs.cgi/aversive/modules/base/scheduler/config/scheduler_config.h?revision=1.3view=markup

Typiquement, s'il vaut 8, à 16Mhz, la résolution est 128us.

  - Idem pour time, en plus sur un Atmega16 (8MHz) j'ai peur que ça le
  surcharge et que ça ne marche pas.

time, tu parles de base/time ou hardware/timer ?

  - Comment on fait pour passer des arguments à une fonction schédulée
  j'ai fait ça :
scheduler_add_periodical_event(transmettre,(void *)nbre_tours,1);
  mais il me met toujours un warning :
  /home/sonde/station-project/aversive/projects/anemometre/main.c:44:
  warning: passing argument 2 of 'scheduler_add_event' from incompatible
  pointer type

En fait le arg2 c'est la fonction (car
scheduler_add_periodical_event() est en fait une macro). Du coup le
prototype de transmettre() ne doit pas etre correct. Ca doit etre
qqchose du genre void f(void *).

 Si on se réfère au main, il semble qu'un paramètre unicity ai fait son
 apparition.
 Je sais pas trop à quoi il sert :)

unicity c'est pour dire si l'evenement est periodique ou s'il est
unique.

  Désolé si ces questions sont connes ou ont déjà été posées, mais je vous
  jures que j'ai regarder la doc avant :-)

aaah cool elle est où cette fameuse doc ? ;)

  Un jour les manchots seront les maîtres du monde gnark !
 
 Et les loutres de l'otter space...

Mouais... on ne parle pas assez de l'ornithorynque sur cette liste.

Oliv

___
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