Citazione:
Originalmente inviato da elicottero78 ma non mi trovo con il trm0,viene resettato fuori dal l interrupt,ma non capisco in che modo viene attivato e poi riessettato.mi potete dare una dritta x favore?
[/url]
char tempo;
void interrupt(){
if((OPTION_REG.INTEDG == 1) && (INTCON.F1 == 1))
{ segnale appena andato alto
TMR0 = 0; azzeramento timer
INTCON.GIE=0; //spenti interrupt
OPTION_REG.INTEDG=0; //fronte di discesa prossimo interrupt quando il segnale va basso
INTCON.F1=0; //reset del flag
INTCON.GIE=1; //riabilitati interrupt
}
if((OPTION_REG.INTEDG == 0) && (INTCON.F1 == 1))
{ sengale ora è basso
tempo=TMR0; //prento il timer lettura
INTCON.GIE=0; //spenti interrupt
OPTION_REG.INTEDG=1; //imposto controllo sul fronte di salita prossimo interrupt quando il segnale risale, ovvero ricomincia da sopra
INTCON.F1=0; //reset del flag
INTCON.GIE=1; //riabilitati interrupt |
credo il ciclo vada così, giusto? ho vinto qualche cosa?
unica cosa, credo che non sia buono mettere le istruzioni per governare i led nella routine di interrupt, mettili nel main in un ciclo infinito, così le due cose viaggiano separate senza appesantire la sezione di interrupt.