Doppio dimmer con attiny85 e triac

Ciao leo,

ho provato il tuo codice, ma durante la verifica mi da quest'errore:

core.a(wiring.c.o): In function __vector_5': C:\Documents and Settings\user\Desktop\arduino-1.0.1\hardware\arduino\cores\arduino/wiring.c:49: multiple definition of __vector_5'
dimmer.cpp.o:C:\DOCUME~1\user\IMPOST~1\Temp\build3703977071899918311.tmp/dimmer.cpp:243: first defined here

il codice è così adesso...

volatile int i=0, y=0;               // variabili contatore...
volatile boolean zero_cross1=0, zero_cross2=0;  // booleane per lo zero crossing
int out1 = 0, out2 = 1;                // Output >> ai moc...
int pot1 = 3, pot2=4;             // ingressi trimmer
int bright1 = 0, bright2 = 0;   // livello di luminosità (0-128)  0 = on, 128 = 0ff 

//int freqStep = 78;    // ritardo del timer in microsecondi
void setup() {
cli();//fermo gli interrupt
TCCR0A &= ~((1<<COM0A0) | (1<<COM0A1)); //disattivi gli interrupt del timer
//modalità contatore fino all'overflow
TCCR0A &= ~((1<<WGM01) | (1<<WGM00));
TCCR0B &= ~(1<<WGM02);
//prescaler a /8
TCCR0B &= ~((1<<CS02) | (1<<CS00));
TCCR0B |= (1<<CS01);
TCNT0 = 178; //valore iniziale
TIMSK |= (1<<TOIE0); //attivo un interrutp all'overflow
sei(); //riattivo gli interrupt
pinMode(out1, OUTPUT);
pinMode(out2, OUTPUT);
attachInterrupt(0, zero_cross_detect, RISING); //zero crossing detection con interrupt esterno 

}

void zero_cross_detect() {    
  zero_cross1 = true;
zero_cross2 = true;
i=0;
y=0;
  digitalWrite(out1, LOW);
digitalWrite(out2, LOW);
}                                 


ISR (TIM0_OVF_vect) {
    TCNT0 = 178;
  if(zero_cross1 == true) {              
    if(i>=bright1) {                     
      digitalWrite(out1, HIGH);       
      i=0;                         
      zero_cross1 = false;                
    } 
    else {
      i++;                           
    }                                
  }  
if(zero_cross2 == true) {              
    if(y>=bright2) {                     
      digitalWrite(out2, HIGH);       
      y=0;                         
      zero_cross2 = false;                
    } 
    else {
      y++;                           
    }                                
  }                                                                  
}                                   

void loop() {                        
  bright1 = analogRead(pot1) / 8;  
  bright2 = analogRead(pot2) / 8; 
}

EDIT: confermo che il chip è stato settato ad 8mhz con quarzo interno... ho tolto il ckdiv
EDIT2:
seguendo questa guida: http://www.atmel.com/Images/doc2505.pdf

a pagina 9 ho visto TIMER0_OVF0_vect, e l'ho modificato nel codice che mi hai dato... adesso non genera errori, ma provandolo, il loop è diventato velocissimo! e la funzione che dovrebbe farmi, non me la fa...

Grazie