Hola, estoy implementando cnc y usando sensores de fotobarreras como finales de carrera siendo activadas estas por las 3 interrupciones externas del dspic30F4011, y por razones de ruido de los motores estos se activan sin ser requeridas, asi que para evitar esto intento realizar los consejos en uno de los temas ya tratados en este foro, que es condicionar al pulso que me activa la interrupcion, sea de un ancho considerable para ser aceptado en la interrupcion, y bien este seria el codigo de la interrupcion externa que planteo: (codigo en XC16 - MPLABX)
void __attribute__((interrupt, auto_psv)) _INT0Interrupt(void) {
/***********bucle para los rebotes*****************/
if (IFS0bits.INT0IF == 1 && ii == 0) {
delay_ms(1000);
ii = 1;
} // pulso requerido de 1seg para se tomado como interrupcion
/**************************************************/
if (IFS0bits.INT0IF == 1 && ii == 1) {
flag_ResetX = 1;
enableX = 0; //deshabilita el motor x
CLKX = 0; //deshabilita el clock del driver del motor x
CWX = ~CWX; // cambia el sentido de giro del motor x
_LATB0 = 1; // enciende el led de interrupcion
delay_ms(1000);
}
IFS0bits.INT0IF = 0;
}
Este programa me reduce las interruciones no requeridas, pero aun las sigo teniendo, tambien les coloqué smich trigger a sus salidas y continua en lo mismo.
Les estare muy agradecido su ayuda.
Saludos cordiales.