GMail wrote:
> En fait là ça devrait être très rapide, vu que lire la valeur d'un
> codeur prend 1 octet d'instruction et 4 octets de réponse, et que le bus
> tient 1mo/s sans problème (enfin c'est ce que je crois ;).
par exemple:
5 octets * 4 codeurs = 20 octets
Si la freq de la SPI est à 1Mhz (c'était notre cas), alors ça fait
20 * 8 microsecondes = 160us.
ou même pour un seul codeur = 40us
> En plus, vu
> que la valeur est sur 32 bits, aucun problème de tour de compteur !
Certes
> Il faut encore que j'approfondisse le sujet, mais je crois que ces chips
> ont une pin de trigger qui permet de sauvegarder la valeur du compteur
> dans un registre pour la lire plus tard. Ça devrait permettre de
> définitivement regler le problème non ?
Si c'est un registre différent de celui ou tu lis habituellement,
alors oui ça règle le problème (et en plus ça sera très précis) :)
Si ce n'est pas le cas, tu as plusieurs solutions:
1/ retourner la derniere position lue sur timer.
-> problème de précision
2/ faire la lecture des codeurs dans l'interruption.
-> que se passe-t-il si ton évènement asynchrone se
produit pendant la lecture périodique ?
3/ même chose mais en vérouillant les interruptions pour
éviter d'être préempté
-> tu perds beaucoup de temps avec les interruptions
vérouillées, c'est en général dangeureux ou non
souhaité pour le reste du prog.
4/ Même chose que 1/ mais en interpollant par rapport
au temps et aux deux dernières valeurs lues.
-> légèrement plus lent mais au moins tu n'es pas
embêté :)
Olivier
_______________________________________________
Avr-list mailing list
[email protected]
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