He construido un circuito prototipo en una placa de soldadura. He conectado el PIC18F25K80
al MCP2551
como se muestra en el esquema para este tablero de demostración . Estoy ejecutando el código de ejemplo del sitio web de Microchip para Modo CAN 0 y CAN Mode 2 en PIC18, solo se modificó para usar PORT A
en lugar de PORT D
, como PIC18F25K80 no lo hace tener PORT D
.
Tengo una resistencia de terminación de 120 ohmios entre CAN_H
y CAN_L
en el MCP2551
.
El sistema está conectado a mi PC a través de un adaptador CAN-to-USB CANWodXX CANmodul1. Al usar PCANView, puedo recibir un mensaje en mi PC cuando se envía desde mi circuito. Sin embargo, no puedo obtener el microcontrolador para recibir un mensaje enviado desde PCANview. Si alcanzo los pines CAN_H
y CAN_L
, o el pin CAN_RX
, puedo ver claramente una señal digital que viaja a través del circuito y en CAN_RX
.
He intentado deshabilitar los filtros cambiando RXM1
en RXB0CON
y RXB1CON
, pero no parece ayudar.
¿Cómo puedo solucionar este problema?
EDIT1: He estado jugueteando un poco más con él, y he notado que RXB1D<7:0>
retiene los datos que transmito después de transmitir. El modo operativo en el momento es normal (no en bucle), ¿debería el mensaje llegar al búfer? Actualmente tengo todos los filtros y máscaras desactivados.
Además, estoy usando B0
hasta B4
como búferes Rx adicionales en Modo 2 (FIFO), y B5
como búfer Tx con RTR automático.
Para referencia, estoy usando MPLAB X 1.80, C18 v3.46, y un PICkit 3 configurado para la depuración en el circuito.
hoja de datos PIC18F25K80
para referencia:
enlace