- Codice: Seleziona tutto
void interrupt (void){
if (INTCON.GPIF){
if((gpio.f3==0)&&(stato==1))
{
INTCON.T0IE=1;
TMR0=6;
stato=0;
}
if((gpio.f3==1)&&(stato==0))
{
INTCON.T0IE=1;
TMR0=6;
stato=1;
}
}
if(INTCON.T0IF)
{
gpio.f4=1;
delay_us(100);
gpio.f4=0;
}
INTCON.GPIF=0;
INTCON.T0IF=0;
}
Sto provando questa routine ma purtroppo c'è qualcosa che non mi quadra. La routine non mi crea un impulso unico, ma una serie infinita di impulsi. Dove sto sbagliando??
Dopo varie prove con questa routine mi è venuta in mente una cosa, correggetemi se sbaglio il ragionamento.
Se invece di spostare il tempo di innesco, io contassi gli impulsi??? Mi spiego meglio.
Ogni passaggio per lo zero vengono creati degl'impulsi ogni 500us, io voglio che l'innesco del triac sia eseguito dopo 4ms, basta contare 8 impulsi e dò l'innesco. Sono sulla giusta strada?