Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Current »

If a task or function wants to transmit a CAN frame by calling the function CanBusWrite() while the configured CAN transmitter is busy, the following steps will be performed:

  1. The function CanBusWrite() is pending on the counting semaphore with the configured TxTimeout. The timeout must be set with CanBusIoCtl() CANBUS_SET_TX_TIMEOUT
  2. If the function has the semaphore within the timeout, the given CAN frame is copied to the internal transmission queue. If a timeout error was detected, the function CanBusWrite() exits with an error-code.

Asynchronous to this actions, the transmission complete interrupt of the CAN controller shall activate the function CanBusTxHandler():

  1. The interrupt handler checks if a CAN frame is in the internal transmission queue.
  2. If a CAN frame is in the queue, the low level device driver function Write() is used to pass the CAN frame to the CAN controller.
  3. The counting semaphore will be posted and the handler will be finished.
  • No labels