TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: damawa en 27 de Marzo de 2006, 15:12:00
-
A las buenas, gente. Aqui otro PICmaniaco. Os cuento: estoy trabajando en un proyecto con un PIC16F690 y el PICkit 2. Aun estoy en desarrollo tratando de hacerme con el PIC, haciendo pequeños programitas para controlar los diversos modulos que voy a usar y con la interrupcion del pin RA2/INT no hay forma. Llevo mas de un mes. Por mas que activo la entrada en la simulacion no se me activa el flag INTF y en consecuencia no salta a la rutina de interrupcion. Os pego el codigo:
list p=16f690
#include <P16F690.inc>
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC & _CPD_OFF & _FCMEN_OFF & _IESO_ON & _MCLRE_OFF & _BOD_OFF
errorlevel -302
#define LED PORTC,0
#define DETECCION PORTA,1
#define PASOCERO PORTA,2
ORG 0x000
goto ppal
ORG 0x004
ISR
banksel INTCON
btfss INTCON,INTF
goto fin
btfss DETECCION
goto no120K
btfss LED
bsf LED
no120K
banksel OPTION_REG
btfss PASOCERO
goto bajada
bcf OPTION_REG,INTEDG
goto fin
bajada bsf OPTION_REG,INTEDG
fin
banksel INTCON
bcf INTCON,INTF
bcf INTCON,RABIF
banksel PORTA
movf PORTA,0
retfie
ppal
banksel PORTA
clrf PORTA
clrf PORTB
clrf PORTC
banksel TRISA
movlw 6h
movwf TRISA
clrf TRISB
clrf TRISC
banksel ANSEL
clrf ANSEL
banksel CM2CON0
clrf CM2CON0
clrf CM1CON0
banksel IOCA
clrf IOCA
banksel IOCB
clrf IOCB
banksel OPTION_REG
bcf OPTION_REG,NOT_RABPU
bsf OPTION_REG,INTEDG
bsf OPTION_REG,T0CS
banksel INTCON
movlw 90h
movwf INTCON
banksel PORTA
movf PORTA,0
espera goto espera
END
El programa debe encender LED si entra en la interrupcion con DETECCION activo. Ademas cambia el flanco de entrada en interrupcion en cada entrada. PERO NO ENTRA LA INTERRUPCION. Por favor, me hariais un hombre si dais con el problema. Un saludo y gracias de antemano.
-
A las buenas, gente. Soy damawa de nuevo, quien mismo escribio la consulta. He dado con el problema, y aqui expongo la experiencia para quien pueda servirle. Resulta que el MPLab Sim, al menos hasta la version que viene con el PICkit 2, tiene incorrectamente configurado el pin RA2/INT en el PIC16F690, que es ademas el PIC que viene con el kit, pues trabaja bien como puerto I/O en el simulador pero este no reconoce en el las interrupciones. Simulado el programa de prueba, con las pertinentes modificaciones, en el PIC16F819 este corre perfectamente. En las compatibilidades del MPLab SIM con el PIC16F690 este la caracteriza beta, no completa. Y, por supuesto, volcando el programa tal cual al PIC1º6F690 en el circuito real el programa corre divinamente, activandose sin problemas las interrupciones. Un saludo.