dimmer con timers.

Hola a todos.

Necesito controlar un dimmer utilizando un temporizador externo al programa principal, pues el control del dimmer debe estar ejecutandose a la vez que el programa principal de control. La idea es inizar el timer cuando hay paso por cero en la red. Se que el lenguaje arduino no tiene funcion especifica. A ver si me pueden explicar como ejecutar un timer en la placa arduino mega. Muchas gracias.

Este es un ejemplo mas o menos de lo que quiero hacer, pero necesito que al OCR1A se le asigne un valor que se calcula en el loop() y en vez de encender el led quiero que se dispare el triac del dimmer. El inicio de la comparacion tiene que ser en la deteccion de paso por cero.

/* Arduino 101: timer and interrupts
   1: Timer1 compare match interrupt example 
   more infos: http://www.letmakerobots.com/node/28278
   created by RobotFreak 
*/

#define ledPin 13

void setup()
{
  pinMode(ledPin, OUTPUT);
  
  // initialize timer1 
  noInterrupts();           // disable all interrupts
  TCCR1A = 0;
  TCCR1B = 0;
  TCNT1  = 0;

  OCR1A = 31250;            // compare match register 16MHz/256/2Hz
  TCCR1B |= (1 << WGM12);   // CTC mode
  TCCR1B |= (1 << CS12);    // 256 prescaler 
  TIMSK1 |= (1 << OCIE1A);  // enable timer compare interrupt
  interrupts();             // enable all interrupts
}

ISR(TIMER1_COMPA_vect)          // timer compare interrupt service routine
{
  digitalWrite(ledPin, digitalRead(ledPin) ^ 1);   // toggle LED pin
}

void loop()
{
  // your program here...
}