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 :

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
INIT se trouve sur PTS3 et l'ECHO sur PT0.

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 !