Interrupt contemporanei

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 :smiley: