Lo que se me ocurrió es:
void interrupcion() {
resistencia();
}
void resistencia() {
delayMicroseconds(PID_value);
// triac high
PORTD |= B01000000;
delayMicroseconds(100);
// triac LOW
PORTD &= B10111111;
}
De esa manera me libero de usar delay dentro de la interrupción y no ejecuto la orden de la interrupción en el loop. Anda muchísimo mejor pero aun está un poquito lento...
gracias por la ayuda. Si se puede mejorar escucho opiniones.