"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

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

Messagede jloup le 08 Mai 2008 19:26

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
jloup
 

Messagede marsu le 14 Mai 2008 14:53

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...
Avatar de l’utilisateur
marsu
INSATIABLE
INSATIABLE
 
Messages: 159
Inscription: 13 Juin 2005 10:08
Localisation: Paris

Messagede The Dude le 14 Mai 2008 22:39

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.
The Dude
 


Retourner vers Electronique numérique et logique programmable

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

cron