E' abbastanza semplice...
int Cycle;
ISR(TIMER1_COMPA_vect)//timer1 interrupt 1Hz toggles pin 13 (LED)
{
if(Cycle==0)
{
digitalWrite(2, HIGH);
digitalWrite(4, LOW);
digitalWrite(7, HIGH);
}
else if(Cycle==1)
digitalWrite(7, LOW);
else if(Cycle==2)
{
digitalWrite(4, HIGH);
}
else if(Cycle==3)
{
digitalWrite(2, LOW);
}
else if(Cycle==4)
{
digitalWrite(7, HIGH);
}
else if(Cycle==5)
{
digitalWrite(4, LOW);
Cycle=0;
return;
}
Cycle++;
}
Nel loop non c'è niente...ho messo giusto qualche riga per acquisire dei dati in seriale e testare la "stabilità" dei segnali PWM tramite un oscilloscopio. In pratica questo codice genera tre PWM a 50hz su tre pin diversi, duty cycle al 50% percento, "sfasate" a 120 gradi tra loro... ovviamente "sfasate" fra virgolette perchè parliamo di mezze onde quadre e non di sinusoidi. I segnali sono generati correttamente, di questo almeno sono soddisfatto ![]()