Ciao a tutti, sto riscontrando alcuni problemi nel convertire uno sketch funzionante su arduino mega ad arduino due.
lo sketch serve per pilotare una scheda triac multicanale autocostruita, ed utilizza degli interrupt, timer e comparatori per calcolare a seconda del segnale di zerocorss quando far partire il triac.
copio un riassunto del codice incriminato:
void setup() {
cli();
TCCR1A = 0x00; // clear
TCCR1B = 0x00; // clear
TIMSK1 = 0x02; // Enable the Output Compare A
OCR1A = 1250; // = 128 steps on 50hz with no timer prescale
sei();
}
ISR(TIMER1_COMPA_vect) {
dimLevel++;
for (int x = 0; x < countTriac; x++)
{
if (canaleTriac[x] = = dimLevel | | canaleTriac[x] = = dimLevel + 1) { // fire second triac
digitalWrite(pinTriac[x], HIGH);
}
}
if (dimLevel == MAX_LEVEL + 1) {
for (int x = 0; x < countTriac; x++)
{
digitalWrite(pinTriac[x], LOW);
}
TCCR1B = 0;
}
}
void zero_cross_detect() {
TCNT1 = 0; // reset timer - count from zero
TCCR1B = 0x09; // start timer with no prescale and reset tcnt1 on compare
start_low_fix = false;
dimLevel = 0;
}
il problema è che l'arduino due non ha le stesse funzioni relative ai timer e registri associati e non riesco a replicare questo funzionamento su arduino due.
qualcuno ha già avuto questo problema e riesce a farmi un po' di chiarezza su come poter fare?
grazie a quanti mi daranno una mano.