in FULL-CAN mode the messages are filtered by message-ID. In BASIC-CAN mode this has to be done in software, thus you are able to receive all message-IDs.
Yes, I read that software implementation part, but it is using valuable cpu time for something that can be done very efficiently with hardware.
1 of 1 people found this helpful
Well, ion the first post you said you want to get all messages from the CAN bus to handle them in your code. In the other post you complain that you then need the CPU to process all the messages. You cannot have both :)
I want to use dedicated the hardware as much as possible to process the data, not software.
I am not sure how the hardware works but by software could be done by polling or using interrupts. Think of it like this:
Lots of kids in the hallway and the teacher is taking care of the kids in classroom. Kids come to the class from outside by themselves.
Teacher has to explain to kids in the classroom, but whenever hears noise outside (or periodically every 10 sec or so) goes to the hallway and looks if any kids belong to the class so the teacher may grab them and bring them in.
Have you ever tried doing things by bit banging or by using dedicated ports and protocols?
Can you tell the efficiency in operation between the two versions now?
You process all the timing critical CAN-IDs with FullCAN. The other messages also cause an interrupt but simply put the message into a buffer.
Then, whenever you have the time, you process the messages from this buffer.If you use an OS, the task for this job can have a low priority.
Does it means that the receiver has to check every message and then compare the identifier id of the message which has been used by the transmitter?