Es decir, se lo que son y para que sirven, y en principio creo que se como se ejecutan (el PIC comprueba antes de realizar una instruccion si se ha producido una interrupcion comprobando la flag correspondiente, y si ha ocurrido guarda el valor de CP, realiza las tareas en la funcion que hayas definido como interrupcion, y el terminarlas vuelve a sacar CP de la pila y continua su camino).
Lo que no entiendo son los tipos. Obsrevando el archivo 12f629.h (es el pic que estoy usando) aparece:
#define GLOBAL 0x0BC0
#define INT_RTCC 0x0B20
#define INT_EXT 0x0B10
#define INT_TIMER1 0x8C01
#define INT_TIMER0 0x0B20
#define INT_EEPROM 0x8C80
#define INT_COMP 0x8C08
#define INT_RA 0xFF0B08
#define INT_RA0 0x010B08
#define INT_RA1 0x020B08
#define INT_RA2 0x040B08
#define INT_RA3 0x080B08
#define INT_RA4 0x100B08
#define INT_RA5 0x200B08
no entiendo que haya tantas ni para que son, hasta donde yo se una interrupcion se ejecuta cuando la patita INT especificada en el datasheet cambia de 0 a 1 o viceversa segun lo programes, y eso es lo que pretendo precisamente con este codigo:
#include <12f629.h>
#use delay (clock=4000000)
#int_ext
void INTRA2()
{
output_high(PIN_A0);
delay_ms(3000);
output_low(PIN_A0);
}
void main(void)
{
set_tris_a(0b11111110);
enable_interrupts(int_ext);
EXT_INT_EDGE(h_to_l);
enable_interrupts(GLOBAL);
output_low(PIN_A0);
do{
}while(TRUE);
}
Se supone que el PIC debería de estar en un bucle infinito hasta que se introduzca un 0 en la patita INT, y entonces durante tres segundos el pin A0 se pondrá a uno para despues volver a 0.
No funciona y no lo comprendo, a ver si alguien me ilumina.