TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: bloxons en 02 de Septiembre de 2016, 10:04:14
-
Buenas estoy trabajando con el pic18f4550 y me surgieron un par de dudas.
Las interrupciones reconocen cualquier cambio en el pin que designes? es decir, reconoce tanto si esta el pin todo el tiempo en alto y baja o solo cuando esta en nivel bajo y sube el nivel? Es decir reconoce un cambio en el pin.
En este contexto cuales seria los niveles entre los cuales reconoce las interrupciones es decir, cual serian los valores entre los cuales se reconoce siempre pensando que esta alimentado con 5 V
Y por ultimo en que parte del datasheet me dice cuales pines puedo utilizar para reconocer las interrupciones.
Desde ya muchas gracias. Siempre me ayudan tanto.
Saluda atte Luciano
-
En el PIC18F4550 tenes interrupciones de los puertos:
Interrupcion por flanco: RB0, RB1 y RB3 , esos cada uno pueden habilitarse o deshabilitarse, aca configuras el flanco, si queres que se dispare cuando tenes un flanco ascendente o descendente.
Interupciones por nivel: RB4 a RB7, Una interrupcion para todas esas, ahi tenes que que cuando cambian de nivel, es decir si cualquiera pasa de 0 a 1 o de 1 a 0 se dispara, no hay discriminacion entre las entradas como es la que nombre antes, es decir no podes habilitar RB4, RB5 y las demas no. Siempre TODAS. Y tampoco podes elegir flanco.
En el datasheet lo tenes en el Puerto B, cada pin dice que cosas puede hacer.
-
Las interrupciones por cambio de estado en un pin tu lo puedes programar si lo quieres por flanco ascendente o descendente
Y lo de que interrupciones que puede tener un pic, en el archivo de cabecera (.h) del programa PIC C COMPILER se puede ver cuales interrupciones posee el pic y ya tu en la hoja de datos ves en que pin se encuentra, ya sea la del TMR0,RB,ADC..etc.
Los archivos de cabecera se encuentran en:
C:\Program Files\PICC\Devices
y ya ahí abres el archivo y vez sus tipos de interruciones que esta hasta el final
El nivel de detección de cambio de estado es preferible que sea 0V o 5V ya que son señales TTL(0-1), cualquier otro valor el pic lo puede tomar como algo aleatorio.
#define L_TO_H 0x40
#define H_TO_L 0
// Constants used in ENABLE/DISABLE_INTERRUPTS() are:
#define GLOBAL 0xF2C0
#define PERIPH 0xF240
#define INT_RTCC 0x00F220
#define INT_TIMER0 0x00F220
#define INT_TIMER1 0x009D01
#define INT_TIMER2 0x009D02
#define INT_TIMER3 0x00A002
#define INT_EXT_L2H 0x5000F210
#define INT_EXT_H2L 0x6000F210
#define INT_EXT 0x00F210
#define INT_EXT1_L2H 0x5001F008
#define INT_EXT1_H2L 0x6001F008
#define INT_EXT1 0x00F008
#define INT_EXT2_L2H 0x5002F010
#define INT_EXT2_H2L 0x6002F010
#define INT_EXT2 0x00F010
#define INT_RB 0x00FFF208
#define INT_AD 0x009D40
#define INT_RDA 0x009D20
#define INT_TBE 0x009D10
#define INT_SSP 0x009D08
#define INT_CCP1 0x009D04
#define INT_CCP2 0x00A001
#define INT_BUSCOL 0x00A008
#define INT_LOWVOLT 0x00A004
#define INT_COMP 0x00A040
#define INT_EEPROM 0x00A010
#define INT_OSCF 0x00A080
#define INT_SPP 0x009D80
#define INT_USB 0x00A020