"fonction chronomètre" (débutant inside^^)

Electronique numérique / Circuits logiques programmables EPLD, CPLD, FPGA d'Altera ou de Xilinx VHDL, Verilog ou SystemC

Modérateur : Modérateur

jloup

"fonction chronomètre" (débutant inside^^)

Message par jloup »

Bonjour

Je réalise un projet en classe, un anémomètre à ultrasons.

Là j'attaque la programmation, mais je précise que je suis un débutant.Donc voilà en gros je cherche à determiner le temps que mettent les ultrasons pour aller de l'emmeteur au recepteur, sachant qu'ils fonctionnent avec des niveaux logiques: l'emission est déclenchée en envoyant un "1" logique à l'émetteur et le recepteur envoie un "1" logique dès qu'il reçoit le signal.

Le microcontrolleur utilisé est un atmel 8535 je crois (je vous confirme ça demain soir)

Donc mon problème est : Comment déterminer le temps écoulé entre l'émission du signal et la reception?

Merci d'avance à tous ceux qui répondront

Avatar de l’utilisateur
marsu
INSATIABLE
INSATIABLE
Messages : 155
Inscription : 13 juin 2005 10:08
Localisation : Paris
Contact :

Message par marsu »

En gros tu dois réaliser un télémètre, non?
Tu peux déja voir par ici : http://l.lefebvre.free.fr/tele/tele_01.html ou là : http://www.iutenligne.net/ressources/et ... index.html
Tu dois certainement avoir des réponses pour t'orienter...

The Dude

Message par The Dude »

Tu as deux solutions qui sont très simples pour faire ca.

La plus basique, si ton microcontrolleur n'a rien à faire d'autre que d'attendre que le signal revienne, c'est de faire une simple boucle qui incrémente une variable. Quand tu recois le signal tu sors de la boucle et tu regarde ou en est la variable. Connaissant la fréquence du contrtolleur et le nombre d'instructions par cycle tu peux en déduire le temps écoulé.

Attention par contre si tu programmes en C. Une instruction en C n'est pas égal à une instruction machine (ou ASM). Donc au choix tu regardes en combien d'instruction le prog fait ta boucle, ou tu étalonnes à la main.

La deuxième solution, pas vraiment plus complexe que la précédante mais qui nécéssite plus de connaissances c'est d'utiliser un timer et une interruption. Tu règles l'interruption pour se déclancher quand tu recoit un '1', puis tu regardes ou en est le timer.

L'avantage du timer c'est qu'il est indépendant du code, il s'incrémente tout seul à la vitesse que tu lui donne. Ca couplé à une interruption ca te permet de faire faire autre chose à ton controlleur pendant que tu attends le signal.

Répondre