Compare commits

...

3 Commits

Author SHA1 Message Date
478b4f2ff9 fix CAN id message
I'm fucking dump
2023-08-25 10:32:28 +02:00
Rémi Heredero
c2a399d15c Merge pull request #3 from SummerSchool2023-RED/hotfix/can-filters
fix CAN filters
2023-08-25 09:16:30 +02:00
3f1e4c84f0 fix CAN filters 2023-08-25 09:06:54 +02:00
4 changed files with 79 additions and 61 deletions

View File

@@ -109,26 +109,39 @@ void ECAN_Initialize(void)
........................................................ ........................................................
........................................................ ........................................................
*/ */
// mask 0 is 11 bits for filter 0 and 1
/*
* Mask 0 is 11 bits for filters 0 and 1 only
* filter set for 3 recipient bits
* Mask 1 is copy of mask 0 but for other filters
*/
convertCANid2Reg(0x070, dSTANDARD_CAN_MSG_ID_2_0B, &RXM0EIDH, &RXM0EIDL, &RXM0SIDH, &RXM0SIDL); convertCANid2Reg(0x070, dSTANDARD_CAN_MSG_ID_2_0B, &RXM0EIDH, &RXM0EIDL, &RXM0SIDH, &RXM0SIDL);
// filter 0 and 1 is broadcast message convertCANid2Reg(0x070, dSTANDARD_CAN_MSG_ID_2_0B, &RXM1EIDH, &RXM1EIDL, &RXM1SIDH, &RXM1SIDL);
// filter 0 is broadcast message
convertCANid2Reg(0x000, dSTANDARD_CAN_MSG_ID_2_0B, &RXF0EIDH, &RXF0EIDL, &RXF0SIDH, &RXF0SIDL); convertCANid2Reg(0x000, dSTANDARD_CAN_MSG_ID_2_0B, &RXF0EIDH, &RXF0EIDL, &RXF0SIDH, &RXF0SIDL);
// filter 1 is message for controller
convertCANid2Reg(0x010, dSTANDARD_CAN_MSG_ID_2_0B, &RXF1EIDH, &RXF1EIDL, &RXF1SIDH, &RXF1SIDL); convertCANid2Reg(0x010, dSTANDARD_CAN_MSG_ID_2_0B, &RXF1EIDH, &RXF1EIDL, &RXF1SIDH, &RXF1SIDL);
// filter 2 is message for recipient n<>7, not yet defined
convertCANid2Reg(0x070, dSTANDARD_CAN_MSG_ID_2_0B, &RXF2EIDH, &RXF2EIDL, &RXF2SIDH, &RXF2SIDL); convertCANid2Reg(0x070, dSTANDARD_CAN_MSG_ID_2_0B, &RXF2EIDH, &RXF2EIDL, &RXF2SIDH, &RXF2SIDL);
/** /*
Enable Filters * ENABLE FILTERS
*/ *
RXFCON0 = 0x01; // Filter 0 is activated * Filter 0 set on mask 0
RXFCON1 = 0x00; * Filter 1 set on mask 0
* Filter 2 set on mask 1
*/
RXFCON0 = 0x07;
/** /**
Assign Filters to Masks Assign Filters to Masks
*/ */
MSEL0 = 0x00; // filter 0 is assigned to mask 0 // Filter 0 & 1 assigned to mask 0 and filter 2 assigned to mask 1
MSEL1 = 0x00; MSEL0 = 0x10;
MSEL2 = 0x00;
MSEL3 = 0x00;
/** /**
Initialize CAN Timings Initialize CAN Timings

View File

@@ -74,9 +74,13 @@ bool CAN_processEvent(Event* ev) {
CAN_4_BYTES tmpData; CAN_4_BYTES tmpData;
tmpData.full.bytes = data; tmpData.full.bytes = data;
uint8_t idMsg = 0x0F && (tmpData.separate.byte0>>4); uint8_t idMsg = tmpData.separate.byte0;
uint8_t idRecipient = 0x0F && tmpData.separate.byte1; idMsg = idMsg >> 4;
uint8_t idSender = (tmpData.separate.byte1>>4); idMsg = idMsg & 0xF;
uint8_t idRecipient = tmpData.separate.byte1;
idRecipient = idRecipient & 0xF;
uint8_t idSender = tmpData.separate.byte1;
idSender = idSender >> 4;
me->receiveCan(idSender, idMsg, canData); me->receiveCan(idSender, idMsg, canData);
} }
@@ -85,9 +89,9 @@ bool CAN_processEvent(Event* ev) {
// Send a message // Send a message
if (ev->id == evCAsend) { if (ev->id == evCAsend) {
uCAN_MSG canMsg; uCAN_MSG canMsg;
canMsg.frame.idType = 0; // I don't understand what is it canMsg.frame.idType = dSTANDARD_CAN_MSG_ID_2_0B; // standard
canMsg.frame.dlc = 4; // 4 bytes to send canMsg.frame.dlc = 4; // 4 bytes to send
canMsg.frame.rtr = 0; // no remote frame canMsg.frame.rtr = 0; // no remote frame
canMsg.frame.data3 = (uint8_t) data; canMsg.frame.data3 = (uint8_t) data;
data = data >> 8; data = data >> 8;
canMsg.frame.data2 = (uint8_t) data; canMsg.frame.data2 = (uint8_t) data;

View File

@@ -210,6 +210,7 @@
<property key="debugoptions.debug-startup" value="Use system settings"/> <property key="debugoptions.debug-startup" value="Use system settings"/>
<property key="debugoptions.reset-behaviour" value="Use system settings"/> <property key="debugoptions.reset-behaviour" value="Use system settings"/>
<property key="debugoptions.useswbreakpoints" value="false"/> <property key="debugoptions.useswbreakpoints" value="false"/>
<property key="firmware.download.all" value="false"/>
<property key="hwtoolclock.frcindebug" value="false"/> <property key="hwtoolclock.frcindebug" value="false"/>
<property key="memories.aux" value="false"/> <property key="memories.aux" value="false"/>
<property key="memories.bootflash" value="true"/> <property key="memories.bootflash" value="true"/>

File diff suppressed because one or more lines are too long