Comunicação CAN

Bem, estou com problema na comunicação CAN. Estou implementando uma comunicação entre dois Pic.
Não sei porque diabos o Buffer 0 de recepção não funciona. O Buffer 1 funciona normalmente, mas o problema é que o toda mensagem que chega vai para o Buffer 0 e caso ele esteja cheio, a mensagem é passada para o Buffer 1, ou seja, a primeira mensagem é perdida.
Aqui é onde faço a leitura pra ver se uma nova mensagem chegou:
e aqui é a configuração do ECAN:
Alguém pode me dizer o que tem de errado?
Obrigado.
Não sei porque diabos o Buffer 0 de recepção não funciona. O Buffer 1 funciona normalmente, mas o problema é que o toda mensagem que chega vai para o Buffer 0 e caso ele esteja cheio, a mensagem é passada para o Buffer 1, ou seja, a primeira mensagem é perdida.
Aqui é onde faço a leitura pra ver se uma nova mensagem chegou:
- Código: Selecionar todos
void f_Recebe_Dados_CAN(){
if (RXB0CONbits.RXFUL){ // Recepção Completa Buffer 0
v_Buffer_Recepcao_CAN[0] = RXB0D0;
v_Buffer_Recepcao_CAN[1] = RXB0D1;
v_Buffer_Recepcao_CAN[2] = RXB0D2;
v_Buffer_Recepcao_CAN[3] = RXB0D3;
v_Buffer_Recepcao_CAN[4] = RXB0D4;
v_Buffer_Recepcao_CAN[5] = RXB0D5;
v_Buffer_Recepcao_CAN[6] = RXB0D6;
v_Buffer_Recepcao_CAN[7] = RXB0D7;
f_Interpreta_Dados_CAN();
RXB0CONbits.RXFUL = 0;
}
if (RXB1CONbits.RXFUL){ // Recepção Completa Buffer 1
v_Buffer_Recepcao_CAN[0] = RXB1D0;
v_Buffer_Recepcao_CAN[1] = RXB1D1;
v_Buffer_Recepcao_CAN[2] = RXB1D2;
v_Buffer_Recepcao_CAN[3] = RXB1D3;
v_Buffer_Recepcao_CAN[4] = RXB1D4;
v_Buffer_Recepcao_CAN[5] = RXB1D5;
v_Buffer_Recepcao_CAN[6] = RXB1D6;
v_Buffer_Recepcao_CAN[7] = RXB1D7;
f_Interpreta_Dados_CAN();
RXB1CONbits.RXFUL = 0;
}
}
e aqui é a configuração do ECAN:
- Código: Selecionar todos
// Configura Modo de Operação
ECANCON = 0b00000000; // Modo 0 de operacao (Modo Legacy)
// Configura Recepção
RXB0CON = 0b00100100;
RXB1CON = 0b00100000;
// Configura Mascara de Aceitação
RXM0SIDH = 0b00000000;
RXM0SIDL = 0b00000000;
RXM1SIDH = 0b00000000;
RXM1SIDL = 0b00000000;
Alguém pode me dizer o que tem de errado?
Obrigado.