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 ;). En plus, vu que la valeur est sur 32 bits, aucun problème de tour de compteur ! 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 ?

Antoine

Le 28 juin 2009 à 16:57, Olivier MATZ <z...@droids-corp.org> a écrit :

Salut Antoine,

Merci pour le patch ! j'avoue que pour le moment je l'ai juste
parcouru et pas encore regardé en détail. Je fais ça dès que
j'ai un peu de temps.

Une petite interrogation sur le principe : nous avons nous aussi
un module qui permet de récupérer la valeurs des codeurs par
spi. Je voulais juste te mettre en garde sur un inconvénient du
système (qui se contourne je te rassure):

L'an dernier on faisait du polling sur les codeurs toutes les
128us car la valeur lue était sur 8 bits, elle pouvait donc
boucler rapidement. On perdait pas mal de temps CPU à faire ça.
Cette année, la lecture des codeurs prend un certain temps
(plusieurs dizaines de microsecondes) rendant impossible de faire
un polling aussi rapide, mais comme les valeurs sont sur
16 bits, on peut se permettre de la lire que toutes les 5ms (à chaque
periode d'asservissement).

Ca ne pose aucun problème pour asservir le moteur. Par contre,
si on veut lire la position du moteur sur un évenement asynchrone,
comme dans le cas des balises par exemple, alors la précision
de la valeur lue est faible, puisqu'elle n'est mise à jour que
toutes les 5ms.

Pour pallier à ce problème, on a mis en place une interpollation
linéaire pour la balise et le scanner, ça marche très bien.

++
Olivier


Antoine albertelli wrote:
Hello,
Pour l'année prochaine, je fais (avec mon club) une carte de régul ation
de moteurs basée sur Aversive. On a donc dû faire une solution de
lecture de codeur, vu que pas mal d'équipe ont des problèmes pour ça, et on pense avoir trouvé une solution intéressante : les LS7366 de LS I/CSI. Ce sont des compteurs de signaux en quadrature, 32 bits, interfaça ble
par SPI, qui peuvent recevoir des signaux jusqu'à 40 MHz sur les 4
fronts des
signaux. J'ai donc fait un petit module (pas encore testé complète ment, uniquement avec un seul codeur au lieu de 3) qui permet de communiquer
avec ces chips.
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

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