Estoy lidiando con este PIC indomable o mi ignorancia (quizas un poco de ambas). Pero en la libreria propuesta por CCS para este pic me salen lo siguiente:
Disculpen la longitud pero necesito resolver algunas dudas. Se puede observar casi al comienzo de la lista INT_EXT; esta interrupcion se ejecuta cdo hay cambios en RBO, ahora bien mas abajo se puede observar INT_RB0 (
) que diferencia existe? Este pic no tiene modos RA y RC?? Además se pueden ver grandes numeros HEXA definidos a cada tipo de interrupción. ¿A que hacen referencia estos valores? (Ejemplo: Con #define INT_RB5 → tiene asociado→ 0x31200B08 )
Para ir terminando comento que he estado probando el siguiente programita:
El objetivo es que un led (en RC0) este en intermitente cada medio segundo. Cuando presiono un pulsador asociado al pin RB0 este cambia el estado de un led en RC1 y vuelve al main. En proteus anda excelente pero en la realidad solo parpadea el led del main, la interrupción con el pulsador en pull up por RB0 nunca se manifiesta.
LA PREGUNTA DEL MILLÓN (PARA TODOS LOS QUE TIENEN ESTE PROBLEMA CON EL 1939): ¿ Es la librería, el compilador o que estoy haciendo mal?? ...
Código:
// Constants used in ENABLE/DISABLE_INTERRUPTS() are:
#define GLOBAL 0x0BC0
#define PERIPH 0x0B40
#define INT_RB 0x31FF0B08
#define INT_EXT_L2H 0x50000B10
#define INT_EXT_H2L 0x60000B10
#define INT_EXT 0x300B10
#define INT_TIMER0 0x300B20
#define INT_TIMER1 0x309101
#define INT_TIMER2 0x309102
#define INT_CCP1 0x309104
#define INT_SSP 0x309108
#define INT_TBE 0x309110
#define INT_RDA 0x309120
#define INT_AD 0x309140
#define INT_TIMER1_GATE 0x309180
#define INT_LCD 0x309204
#define INT_BUSCOL 0x309208
#define INT_EEPROM 0x309210
#define INT_COMP 0x309220
#define INT_COMP2 0x309240
#define INT_OSC_FAIL 0x309280
#define INT_TIMER4 0x309302
#define INT_TIMER6 0x309308
#define INT_CCP3 0x309310
#define INT_CCP4 0x309320
#define INT_CCP5 0x309340
#define INT_CCP2 0x309201
#define INT_RB0 0x31010B08
#define INT_RB0_L2H 0x11010B08
#define INT_RB0_H2L 0x21010B08
#define INT_RB1 0x31020B08
#define INT_RB1_L2H 0x11020B08
#define INT_RB1_H2L 0x21020B08
#define INT_RB2 0x31040B08
#define INT_RB2_L2H 0x11040B08
#define INT_RB2_H2L 0x21040B08
#define INT_RB3 0x31080B08
#define INT_RB3_L2H 0x11080B08
#define INT_RB3_H2L 0x21080B08
#define INT_RB4 0x31100B08
#define INT_RB4_L2H 0x11100B08
#define INT_RB4_H2L 0x21100B08
#define INT_RB5 0x31200B08
#define INT_RB5_L2H 0x11200B08
#define INT_RB5_H2L 0x21200B08
#define INT_RB6 0x31400B08
#define INT_RB6_L2H 0x11400B08
#define INT_RB6_H2L 0x21400B08
#define INT_RB7 0x31800B08
#define INT_RB7_L2H 0x11800B08
#define INT_RB7_H2L 0x21800B08
Disculpen la longitud pero necesito resolver algunas dudas. Se puede observar casi al comienzo de la lista INT_EXT; esta interrupcion se ejecuta cdo hay cambios en RBO, ahora bien mas abajo se puede observar INT_RB0 (
Para ir terminando comento que he estado probando el siguiente programita:
Código:
#include <16f1939.h>
#fuses noieso, nowdt,NOFCMEN,nostvren, nodebug,NOBROWNOUT,novcap, nowrt,nocpd, noprotect
#define LEDCOMUN PIN_C0
#define LEDINT PIN_C1
#use delay(internal=4MHz)
#INT_EXT
cambio(){
output_toggle(LEDINT);
}
void main()
{
set_TRIS_B(0x01);
output_c(0x00);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
while(true){
output_toggle(LEDCOMUN);
delay_ms(500);
}
}
El objetivo es que un led (en RC0) este en intermitente cada medio segundo. Cuando presiono un pulsador asociado al pin RB0 este cambia el estado de un led en RC1 y vuelve al main. En proteus anda excelente pero en la realidad solo parpadea el led del main, la interrupción con el pulsador en pull up por RB0 nunca se manifiesta.
LA PREGUNTA DEL MILLÓN (PARA TODOS LOS QUE TIENEN ESTE PROBLEMA CON EL 1939): ¿ Es la librería, el compilador o que estoy haciendo mal?? ...