Programando con PIC16F887

Buenas dìas Ing., tecnicos, etc. del foro...
Estoy programando un PIC16F887 con C CCS para un proyecto, ya tengo como el 80% termindo pero estoy atorado con las interrupciones no se coo utilizarlas y tampoco conozco sus instrucciones para mandarlas a llamar, la lògica que requiero es la siguiente:
tengo 6 posibles fallas, si arranca mi proceso esas fallas deben interrumpirlo, hasta que se corrigan vuelve a iniciar el proceso donde se quedò, he leìdo libros diferentes pero no lo explican muy bien me confunden màs.
Alguien tendra alguna idea o un manual dònde se explique bien las interrupciones?
Gracias por su atenciòn
 
Con CCS es muy fácil hacer que funcionen las interrupciones de los PICS. Fijate en la ayuda del CCS que hay bastante.

Por ejemplo, para poner una interrupción periódica por el timer0. Lo que tenes que hacer primero es configurar el timer.

por ejemplo:

setup_timer_0 (RTCC_DIV_8);

Esto va a hacer que te genere una interrupción a la siguiente frecuencia:

Frec_Cristal / 4 / 256 / 8. El 4 es fijo para todos los PICS y el 8 es lo que sale porque lo configuramos como RTCC_DIV_8. El 256 es porque el timer 0 es de 8 bits, interrumpe cada vez que el contador llega a cero.
Suponiendo que tu cristal es de 4 Mhz, la interrupción será a 488,2 Hz

Después, hay que activar las interrupciones. En este caso es:

enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);

Ahora, en otra parte del código, tenés que indicarle al compilador que hacer cuando se produce una interrupción por timer 0. En este caso seria:

#int_timer0
void irq_timer0(void)
{
// Acá poner el código de tu programa.
}

La función que definiste arriba, se va a ejecutar periódicamente según como has configurado anteriormente. En el ejemplo, se va a ejecutar 288 veces por segundo.

Decime que interrupción pensabas utilizar.

Saludos.
 
Atrás
Arriba