Go Down

Topic: RAZ instruction micro() (Read 874 times) previous topic - next topic

guim

Bonjour,

Je souhaite actuellement décoder une trame RS232 dont je connais le débit (2400 bauds).

Pour ce faire, j'ai décide de mettre en place un petit programme pour acquérir un bit à une cadence de 1/2400=417µs.

Mon problème commence ici : après avoir acquit un bit via la fonction "bitRead", ayant décallé le bit à sa place dans l'octet, je souhaite mettre une tempo pour "finir" mes 417µs.

Pour ce faire, j'ai tenté d'utiliser la fonction "micro()" en faisant une RAZ de sa valeur avant chaque acquisition puis en faisant 417µs-(le temps déjà écoulé).

Hors comment faire pour que la valeur renvoyée par "micro()" reparte de 0 à un instant t?

Quelqu'un peut-il me venir en aide??

Je joint mon bout de programme pour vous eclairer

Merci d'avance

fdufnews

#1
Apr 02, 2012, 05:06 pm Last Edit: Apr 02, 2012, 05:12 pm by fdufnews Reason: 1
La fonction micro() utilise un compteur qui tourne en boucle. Donc il n'y a pas de remise à zéro.
Il suffit de mémoriser la valeur de micro() à l'entrée dans ta fonction de lui ajouter le délai (417) que tu veux obtenir de faire le traitement et d'attendre l'égalité ou le dépassement pour continuer.

Autrement tu sais il existe des librairies (SoftwareSerial ou newSoftwareSerial) qui font ça très bien

skywodd

Bonjour,


Je souhaite actuellement décoder une trame RS232 dont je connais le débit (2400 bauds).

Pour ce faire, j'ai décide de mettre en place un petit programme pour acquérir un bit à une cadence de 1/2400=417µs.

Comme le proposai fdufnews il existe des librairies toutes prête pour faire du serial software ;)
Sinon pour répondre à ta question, pour faire un delai de n µs : delayMicroseconds(n).

Au passage j'éspére que tu utilise un CI type MAX232 ou assimilé pour transformer le -12v / +12v du RS232 en 0v / 5v sinon l'arduino ne va pas du tout aimer ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Go Up