Sorry wegen der Formatierung...
Thomas F. schrieb:
> Bei Fehlern mit CAN-Bus empfiehlt es sich die Register REC und TEC in
> denen sich die CAN-Error-Counter befinden regelmäßig auszulesen und zu
> beobachten: Bei 128 Fehlereinträgen wird CAN deaktiviert.
Bastian W. schrieb:
> Hast du mal auf den Bus geschaut ob da immer ein Ack kommt ?
Alles möglich, nur habe ich keine Ahnung wie ich all dies überprüfen
soll. Scheint, dass man die HAL-CAN Funktionen (AddTx und GetTx) nicht
einfach so im Loop verwenden kann ohne noch andere Bits oder Flags zu
überprüfen... Schade :-( ...
Ich habe noch einen externen Interrupt GPIO Eingang (für das
Touch-Display). Wenn dieser mehrmals kommt, dann hängt sich der CAN auch
auf.
Ich habe das RX CAN Interrupt nicht aktiviert...
Aber ja, scheint trotzdem irgendwo ein verflixter Konflikt mit
Interrupt, DMA oder weiss der Geier was... komplex. Muss wohl wieder
zurück auf UART :-(
Beim TX scheint dann die Mailbox immer voll (gemäss Debugger):
1 | /* Check that all the Tx mailboxes are not full */
|
2 | if (((hcan->Instance->TSR & CAN_TSR_TME0) != RESET) ||
|
3 | ((hcan->Instance->TSR & CAN_TSR_TME1) != RESET) ||
|
4 | ((hcan->Instance->TSR & CAN_TSR_TME2) != RESET))
|
5 | {
|
Und beim RX gibt es kein Error, aber er liest dann immer dieselbe
SdtId....(obwohl andere ID's gesendet werden)
Und wie gesagt, ohne berühren des Touches funktioniert Senden und
Empfangen immer eine Weile gut....