Bonjour tout le monde,
J'aurais besoin d'un petit coup de main concernant mon programme. Pour un projet, j'ai besoin de programmer un capteur à ultrasons. Pour le faire fonctionner, il faut passer une entrée appelé INIT à 1, puis attendre l'echo. J'ai donc écrit le programme suivant :
INIT se trouve sur PTS3 et l'ECHO sur PT0.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 MOVB #$F0,DDRT; MOVB #$58,DDRS; MOVB #$00,PTS; MOVB #$08,PTS; MOVB #$80,TSCR1; autorise le compteur du Timer BCLR TIOS, mTIOS_IOS0; autorise les entrées/capture en PT0 MOVB #$00,TSCR2; bloque les interruption de depassement TCNT MOVB #$03,TCTL4; capture des fronts montants et descendants du signal sur PT0 MOVB #mTFLG1_C0F,TFLG1; mettre le drapeau C0F à 0 BRCLR TFLG1, mTFLG1_C0F,*; attend l'arrivée du front montant LDD TC0; sauvegarde front montant dans D
Ce programme me pose un problème, dès que l'echo est reçu, le programme s'interrompt et je ne comprends pas pourquoi. Or la plupart du programme pour mon projet se situe après !
J'aurais aussi voulu améliorer ce programme : si j'envoie en premier un signal sur l’entrée VCC du capteur, il y aura un temps d'attente avant un déclenchement automatique d'INIT. Il est donc, je pense, possible, de capturer d'abord le temps avant que INIT passe à 1, et le temps pour recevoir l'echo (afin ensuite de faire la différence des deux pour être plus précis), mais je ne vois pas vraiment comment faire...
Merci d'avance pour vos réponses !






Répondre avec citation
Partager