Muy buenas y muchas gracias de antemano.
Estoy trabajando con el bus-CAN implementado en el PIC18F458.
He conseguido poner en funcionamiento el bus con las notas de aplicacion de microchip. (te lo dan todo echo excepto un par de errores que tiene el archivo can18xxx.c)
Donde me estoy quedando colgado es a la hora de utilizar los filtros implementados en el pic.
Supuestamente están configurados y activados en la función CANinitialize(...) pero dejan pasar todos los "id" que envío aunque no debieran.
Aquí os dejo parte del programa donde se inicializan los filtros.
Si me podeis indicar si están bien configurados, o..... si hay que activarlos en alguna otra parte del programa........ me sería de gran ayuda...
void CANInitialize(BYTE SJW,
BYTE BRP,
BYTE PHSEG1,
BYTE PHSEG2,
BYTE PROPSEG,
enum CAN_CONFIG_FLAGS config)
{
BYTE FilterConfig1;
BYTE FilterConfig2;
//Para introducir parámetros de configuración del módulo CAN,
// Debe estar en modo CONFIG
CANSetOperationMode(CAN_OP_MODE_CONFIG);
// Now set the baud rate.
CANSetBaudRate(SJW,
BRP,
PHSEG1,
PHSEG2,
PROPSEG,
config);
.
.
.
.
.
CANSetMask(CAN_MASK_B1, 0xFFFF, CAN_CONFIG_STD_MSG);
CANSetMask(CAN_MASK_B2, 0xFFFF, CAN_CONFIG_STD_MSG);
.
.
.
.
CANSetFilter(CAN_FILTER_B1_F1, 0, FilterConfig1);
CANSetFilter(CAN_FILTER_B1_F2, 1, FilterConfig1);
CANSetFilter(CAN_FILTER_B2_F1, 2, FilterConfig2);
CANSetFilter(CAN_FILTER_B2_F2, 3, FilterConfig2);
CANSetFilter(CAN_FILTER_B2_F3, 4, FilterConfig2);
CANSetFilter(CAN_FILTER_B2_F4, 5, FilterConfig2);
// Restore to Normal mode.
CANSetOperationMode(CAN_OP_MODE_NORMAL);
}