Bueno, estoy haciendo una prueba inicial, tengo mi PIC conectado a un nodo que envía trafico de broadcast, y pretendo escucharlo, la configuración puesta para un PIC18F26K80 es la siguiente:
TRISCbits.TRISC7 = 1;
TRISCbits.TRISC6 = 0;
LATCbits.LATC6 = 0;
LATCbits.LATC7 = 0;
// Enter CAN module into config mode
CANCON = 0b10001110; //Solicito modo configuracion, ventana para RX0
while(!(CANSTATbits.OPMODE == 0x04));
// Enter CAN module into Mode 0
ECANCON = 0x00;
// Initialize CAN Timing
// 500 Kbps @ 64MHz
BRGCON1 = 0x83; //0000 0111 //SJW=3TQ BRP 3
BRGCON2 = 0xB8; //1011 1000 //SEG2PHTS 1 sampled once PS1=8TQ PropagationT 1TQ
BRGCON3 = 0x05; //0000 0101 //PS2 6TQ
// config RX para broadcast.
RXF0SIDH = 0x00;
RXF0SIDL = 0b1000000;
RXF1SIDH = 0x00;
RXF1SIDL = 0b1000000;
RXM0SIDL = 0b10000000;//Mascara, solo importa el bit de broadcast.
RXM0SIDH = 0b00000000;
RXM1SIDL = 0b10000000;//Mascara, solo importa el bit de broadcast.
RXM1SIDH = 0b00000000;
// Enter CAN module into normal mode
CANCON = 0b00001110;
while(CANSTATbits.OPMODE==0x00);
Como fuses tengo puesto estos:
#pragma config XINST = OFF
#pragma config WDTEN = SWDTDIS
#pragma config CANMX = PORTC//Seleccion de pines del bus can.
#pragma config FOSC = INTIO1
La configuracion del oscilador:
// Set the internal oscillator to 64MHz
OSCCONbits.IRCF = 7;
OSCTUNEbits.PLLEN = 1;
No recibo nada, supongo que el error está en la configuración, no sé si me olvido de algun registro por configurar.
Saludos!!!