BUENAS NECESITO AYUDA: ESTOY HACIENDO EL CONTROL DE UN HORNO MEDIANTE UN PID, MI PROYECTO CONSTA DE UN DETECTOR DE CRUCE POR CERO, EL MICRO DONDE ESTA EL PROGRAMA DEL PID Y UNA ETAPA DE POTENCIA LA CUAL EN FUNCION AL ANGULO DE DISPARO DEL TRIAC ENCIENDE EL HORNO.
EL PROBLEMA ES QUE LA INTERRUPCION POR RB0 DEL PIC NO ME RESPONDE, EL PROGRAMA ESTA ARMADO PARA QUE POR CADA CRUCE POR CERO ENTRE A LA INTERRUPCION, HAGA LO QUE CORRESPONDA, ACTIVE EL MOC3021 PARA EL GATE DEL TRIAC Y CONTINUE DE MANERA NORMAL. NO ENCUENTRO EL ERROR QUE PUEDA TENER EL PROGRAMA QUE NO ANDA LA INTERRUPCION !
LOS CIRCUITOS ESTAN PROBADOS POR SEPARADO Y CADA UNO ANDA PERFECTAMENTE.
CODIGO:
void main(void)
{
/*INTERRUPSION**********************************************************/
INTCONbits.GIE=1; // Permiso global de interrupcion por timer0
INTCONbits.INTE=1; //activo interrupcion externa
OPTION_REGbits.INTEDG=0;//seleccione por flanco descendente
INTCONbits.INTF=0;
//**********************************************************
while (1)
{
Display();
result= read_adc ();
Tem_sensor=(result*5/1024); // paso a grados
}
return;
}
void interrupt lampara ()
{
if (INTCONbits.INTF==1)
{
PORTBbits.RB3=1;
__delay_ms (5);
PORTBbits.RB3=0;
__delay_ms (5);
}
INTCONbits.INTF=0;
}
DE ANTE MANOS MUCHAS GRACIAS!!!!!