uavcan::equipment::actuator::Status msg;
msg.actuator_id = actuator_id;
msg.position = actuator_status_data.position;
msg.force = actuator_status_data.force;
msg.speed = actuator_status_data.speed;
msg.power_rating_pct = actuator_status_data.power_rating_pct;
pub_status->broadcast(msg);
uavcan::equipment::device::Temperature msg;
msg.device_id = node_id;
float temp = temperature_calculation(temperature_adc_value,THERMISTOR_B_COEFFICIENT,4095);
msg.temperature = temp;
pub_temperature->broadcast(msg);
If I leave only one message, then everything works fine.
Period of shippment this messaes 50 ms.
The probability of falling depends on the workload of the CAN bus.
Hardfault analysis always indicates:
Line 126 of "../../src/drivers/uavcan/libuavcan/./libuavcan/include/uavcan/util/linked_list.hpp"
starts at address 0x803f4ba <uavcan::CanTxQueue::push(uavcan::CanFrame const&, uavcan::MonotonicTime, uavcan::CanTxQueue::Qos, unsigned short)+288>
and ends at 0x803f4be <uavcan::CanTxQueue::push(uavcan::CanFrame const&, uavcan::MonotonicTime, uavcan::CanTxQueue::Qos, unsigned short)+292>.
linked_list.hpp:126
if (root_ == UAVCAN_NULLPTR || predicate(root_))
What can be wrong and how can you overcome this problem?