Dejé de usar un nuevo microcontrolador PIC y tengo un nuevo problema.
Estaba usando el convertidor A / D de mi PIC18F46j50 para atrapar 4 botones en 1 PIN (RB2), y funcionó bien. Pero como soldé un oscilador de 32.768 kHz para Timer1, ya no funciona.
unsigned int HAL_SWITCH_GetValADC(void){
ADCON0bits.VCFG0 = 0;
ADCON0bits.VCFG1 = 0;
ADCON0bits.CHS = 0b1000;
ADCON1bits.ADFM = 1; // A/D Result format select bit : right justified
ADCON1bits.ADCAL = 0; // A/D Calibration bit
ADCON1bits.ACQT = 0b111; // A/D Acquisition Time 12 Tad = 12us
ADCON1bits.ADCS = 0b001; //Tad = 1us (Fosc/8)
ADCON0bits.ADON = 0b01; // A/D enable
PIR1bits.ADIF = 0; //make sure A/D Int not set
ADCON0bits.GO=1; //and begin A/D conv.
while(!PIR1bits.ADIF);
NOP();
return (((unsigned int) ADRESH << 8) | ADRESL);
}
Al usar el punto de interrupción, determiné que el problema proviene del bucle while, cuando depuro paso a paso, funciona bien, pero el programa nunca se detiene si el punto de interrupción está en NOP ();
se produjo un error como "No se encontraron líneas de código fuente en la PC actual" + pocas direcciones, principalmente las de las instrucciones interrumpidas ... No sé si hay un enlace.
También alguien me dijo que cambiara el reloj usado por el convertidor A / D ... ¿Cómo puedo hacerlo?
Pida más código si puede ayudar.