TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: dongustavo en 25 de Octubre de 2017, 11:58:53
-
Hola a todos,
estoy usando un PIC18F97J94.
Tengo un raro problema con el comparador y el módulo SPI, al cual tengo conectada una memoria flash.
Si habilito la CVREF del comparador desde el pin Vref+, puedo leer bien la memoria.
Si habilito la CVREF del comparador a AVDD, no la puedo leer.
El módulo SPI está mapeado por PPS-Lite:
//REMAP
OSCCON2bits.IOLOCK = 0;
RPINR8_9 = 0x02<<4; //SDI1 to RP8
RPOR8_9 = 0x04<<4; //SDO1 to RP9
RPOR6_7 = 0x03<<4; //SCK1 to RP7
RPOR16_17 = 0x22; //USART 3
RPINR4_5 = 0x44; //USART 3
OSCCON2bits.IOLOCK = 1;
---------------------------------------------------------------------
Legué a hacer esto para que funcione, pero es desprolijo.
xNHABRPM la llamo cada vez que voy a acceder a la memoria.
xHABRPM luego de accederla.
void xNHABRPM(void){
CM1CON = 0b10100110; //desah int
CVRCONL = 0b10010000; // VREF+
PIR6bits.CMP1IF = 0; //entra flanco x comparador y dispara timer1
Delay1TCYx(100);
PIR6bits.CMP1IF = 0; //entra flanco x comparador y dispara timer1
}
void xHABRPM(void){
CVRCONL = 0b11000000; //AVDD COMO SOURCE
PIR6bits.CMP1IF = 0; //entra flanco x comparador y dispara timer1
Delay1TCYx(100);
PIR6bits.CMP1IF = 0; //entra flanco x comparador y dispara timer1
CM1CON = 0b10110110;
}
En otro lado ajusto el nivel del comparador y para chequear lo saco por un pin y está OK.
La entrada del comparador está como entrada y como analógica:
ANCON1bits.ANSEL6 = 1; // INPUT
El comparador genera una interrupción.
En el data sheet:
bit 5-4 CVRPSS<1:0>: Comparator VREF Positive Source (VPOSSRC) Selection bits
11 = Reserved, do not use. Positive source is floating
10 = VBG (Band gap)
01 = VREF+ ------------------------------FUNCIONA LA MEMORIA
00 = AVDD ------------------------------ NO FUNCIONA LA MEMORIA
La verdad me tiene loco. No encuentro ninguna relación ente CVREF y la SPI o el PPS LIte, ni con el PIN RB0 donde está contectada la SALIDA de la memoria...
Saludos a todos.