STM32 CAN Reset Bug Workaround geht nicht

#5720659
Lesenswert?

Hallo,

ich versuche gerade CAN Bus beim STM32 zum laufen zu bekommen.

Dazu bin ich nach dieser Anleitung vorgegangen:
https://www.youtube.com/watch?v=gu1Uz2K3zh4

Wie im Video tritt auch bei mir der Bug auf, dass Reset gedrückt werden 
muss um die nächste Nachricht zu empfangen. Ab 40:18 wird ein Workaround 
für den CAN Bus Bug erklärt, der jedoch bei mir nicht funktioniert:
1
void RxIntEnable(CAN_HandleTypeDef *CanHandle) {
2
  
3
  if(CanHandle->State == HAL_CAN_STATE_BUSY_TX)
4
    CanHandle->State = HAL_CAN_STATE_BUSY_TX_RX;
5
  else {
6

7
    CanHandle->State = HAL_CAN_STATE_BUSY_RX;
8

9
    // Set CAN error code to none
10
    CanHandle->ErrorCode = HAL_CAN_ERROR_NONE;
11

12
    // Enable Error warning Interrupt
13
    __HAL_CAN_ENABLE_IT(CanHandle, CAN_IT_EWG);
14

15
    // Enable Error passive Interrupt
16
    __HAL_CAN_ENABLE_IT(CanHandle, CAN_IT_EPV);
17

18
    // Enable Bus-off Interrupt
19
    __HAL_CAN_ENABLE_IT(CanHandle, CAN_IT_BOF);
20

21
    // Enable Last error code Interrupt
22
    __HAL_CAN_ENABLE_IT(CanHandle, CAN_IT_LEC);
23

24
    // Enable Error Interrupt
25
    __HAL_CAN_ENABLE_IT(CanHandle, CAN_IT_ERR);
26
    }
27

28
    // Enable FIFO 0 message pending Interrupt
29
    __HAL_CAN_ENABLE_IT(CanHandle, CAN_IT_FMP0);
30
}

Als Fehler wird angezeigt:
1
Symbol 'HAL_CAN_STATE_BUSY_TX_RX' could not be resolved
und
1
Symbol 'HAL_CAN_STATE_BUSY_RX' could not be resolved
Die Abfrage ob TX beschäftigt ist funktioniert jedoch.

Im Internet konnte ich leider nichts hilfreiches finden.

STM32F072RBT6 und STM32F042F6P6 tritt bei beiden auf.
CubeMX 5.0.1 und Eclipse mit GCC
#5720772
Lesenswert?

Habs noch mal mit einem Schritt rückwärts probiert.

Im Loopback Modus funktioniert es genau so wie es sein soll (mit beiden 
µC und jeweils mit dem Code oben). Aber sobald ich in den normalen Modus 
wechsel muss ich Reset am Empfänger drücken für die nächste Nachricht.

Zwischendrin hatte ich den Fall, dass ich beim Slave Reset gedrückt habe 
und dann lief es so wie es eigentlich soll.

Kann es sein, dass der Bus belegt ist oder so?
Gast #5720816
Lesenswert?

Heinz M. schrieb:
> Man findet halt leider zu CAN keine einzige Anleitung die mal wirklich
> zu 100% funktioniert.

Also eigentlich ist das auch nicht so schwierig. Erst auf Wikipedia den 
Artikel zu CAN genau lesen, dann exakt nach Datenblatt auf die Register 
zugreifen. Dabei die HAL gekonnt ignorieren. Dabei bin ich noch auf 
keine Hardware Bugs gestoßen, und HAL Bugs erübrigen sich so auch.
#5721200
Lesenswert?

Hab das Problem beseitigt. Obs gelöst ist, dazu kenne ich mich zu wenig 
aus.

Ich habe µC1(Sender) dauerhaft ADC Werte senden lassen, weil man bei 
schwankenden Werten schön sieht, dass es dauerhaft läuft. Ist eine Art 
Standardtest von mir.

Wenn ich µC2(Empfänger) programmiert oder resetet habe, konnte der eine 
gewisse Zeit nicht empfangen, wodurch die in der Zeit gesendeten aber 
nicht empfangenen Pakete zu Problemen führten (so meine Vermutung). Da 
der Empfänger auch das Display initialisieren muss braucht der natürlich 
wesentlich länger, als der Sender der nur den ADC hat.

Meine Lösung sieht jetzt so aus, dass der Sender erst anfängt zu senden, 
wenn man auf dem Empfänger eine Taste drückt und dies per CAN Bus dem 
Sender mitteilt. Funktioniert bis jetzt ohne Probleme.

Überall da wo ich per CAN Bus dauerhaft viele Werte senden möchte, werde 
ich beim Empfänger einbauen, dass dieser ab und zu ein Lebenszeichen 
sendet. Fällt das aus, dann hören die Sender auf zu senden.

Vielen Dank an pegel. Ohne die Hilfe hätte ich es nicht geschafft.
#5748255
Lesenswert?

Wie ich vermutet hatte ist das Problem nicht beseitigt. Ich habe mal 
versucht das Problem einzugrenzen und bin jetzt an dem Punkt, dass das 
Problem nur auftritt, wenn versucht wird auf einen Bus zu schreiben wo 
kein Empfänger dran ist.

Wenn die Kommunikation beendet wird, das Kabel abgezogen und wieder ran 
gesteckt wird und danach die nächste Nachricht gesendet wird ist alles 
ok.

Wird eine Nachricht geschickt, wenn das Kabel abgezogen ist, hängt sich 
der Canbus des Senders auf. Alles andere funktioniert weiter.

Seltsam ist, dass sich die Kommunikation Slave -> Master jedes mal 
aufhängt und die Kommunikation Master -> Slave nur manchmal (ich vermute 
je nach dem wer gerade gesendet oder empfangen hat). Beide sind als 
Master im Canbus. Master ist bei mir der mit dem Display und Slave der 
mit dem ADC zum Werte erfassen.

Reset beim Slave löst nur das Problem Master -> Slave. Reset beim Master 
geht alles wieder.

Ich denke es hat mit dem Problem hier zu tun, aber leider keine Antwort:
https://community.st.com/s/question/0D50X00009XkgdwSAB/can-bus-error-management

Hier wird ebenfalls mein Problem gestriffen.
https://electronics.stackexchange.com/questions/280882/problem-with-can-on-stm32

Wie baue ich einen error handler ein, welcher das senden unterbindet und 
evtl. sogar den Fifo löscht, wenn kein ACK kommt?

Wenn ich nach dem zweiten Link gehe, müssten immer 2 Nodes an einem 
Busabschnitt hängen und dürften nie getrennt werden, sonst gibt es 
Fehler. Aber das kann ich doch gar nicht ausschließen.

No-Automatic Retransmission habe ich bereits auf enable gesetzt. Keine 
Veränderung.
#5748261
Lesenswert?

Heinz M. schrieb:

>
> Wird eine Nachricht geschickt, wenn das Kabel abgezogen ist, hängt sich
> der Canbus des Senders auf. Alles andere funktioniert weiter.
>

Das ist ja auch kein Wunder, denn da gibt es auf dem CAN-Layer 
Protokolle, die nur funktionieren, wenn mindestens 2 Teilnehmer am Bus 
sind. Ansonsten laufen dir die Errorcounter hoch und dann gibt es einen 
BusOff, weil das ACK fehlt. Das hängt sich nicht auf, das ist per Design 
so gewollt.
Gast #5748270
Lesenswert?

Heinz M. schrieb:
> Seltsam ist, dass sich die Kommunikation Slave -> Master jedes mal
> aufhängt und die Kommunikation Master -> Slave nur manchmal

CAN kennt keine Master und Slaves.

Heinz M. schrieb:
> No-Automatic Retransmission habe ich bereits auf enable gesetzt. Keine
> Veränderung.

Mal das CAN_MCR_ABOM Bit gesetzt? Den CAN-Controller zu resetten ist wie 
gesagt nicht nötig. Im Gegensatz zu gewissen anderen 
Peripherie-Modulen ist der CAN-Controller der STM32 ziemlich robust. Der 
hat sich bei mir noch nie aufgehängt und verkraftet trennen/verbinden, 
verzögertes Starten der Teilnehmer, 100% Buslast, Störungen problemlos.

Eventuelle Probleme sind hier in der Firmware zu suchen. Als Erstes 
würde ich unbedingt alle Warteschleifen entfernen und vollständig 
asynchron/ereignisbasiert programmieren. Im Empfangs-Interrupt 
eingehende Nachrichten verarbeiten und Mailbox leeren. Im 
Sende-Interrupt Nachrichten senden, falls welche vorliegen. Niemals 
blockierend auf das Freiwerden von Mailboxen bzw. das Ankommen von 
Nachrichten warten.
#5748289
Lesenswert?

@Sven S.: Ja das habe ich jetzt auch gelesen.

Hätte eigentlich gedacht, dass wenn ich den Automatic Bus-off 
ausschalte, er so lang sendet, bis der Empfänger ein ACK sendet.

Deswegen versuch ich gerade die Can Error Codes auszulesen.
1
CanFehler=CAN_GetLastErrorCode(CAN_TypeDef*CAN);
Bringt den Fehler "expected expression before 'CAN_TypeDef'"
1
CanFehler=CAN_GetLastErrorCode(CAN);
Bringt den Fehler "undefined reference to `CAN_GetLastErrorCode'"

Leider finde ich (bis auf eine russische Seite keine Beispiele zur 
Verwendung der Funktion).
Gast #5748294
Lesenswert?

Heinz M. schrieb:
> n.
> CanFehler=CAN_GetLastErrorCode(CAN_TypeDef*CAN);

CAN_TypeDef ist der Typ des Parameters. Du musst "CAN1" oder "CAN2" 
übergeben. Genau wie bei CAN_Init & Co.

Heinz M. schrieb:
> Bringt den Fehler "undefined reference to `CAN_GetLastErrorCode'"

Dann linkst du die HAL nicht richtig.

Heinz M. schrieb:
> Leider finde ich (bis auf eine russische Seite keine Beispiele zur
> Verwendung der Funktion).

Schreib doch einfach "CAN1->ESR" um das Statusregister abzufragen. 
Dessen Bits sind genau im Reference Manual dokumentiert.
Gast #5748320
Lesenswert?

Also bei mir hat der CAN auch nicht funktioniert, als ich ihn 
initialisiert und die Transmit oder die Receive Funktion genutzt habe.

Aber drauf geschissen. Ich habe dann die Transmit und die Receive 
Funktion selbst geschrieben, indem ich die Handvoll bits selber gesetzt 
bzw. geschoben habe.
Ist ja nicht allzu kompliziert das Ganze.
Gast #5748335
Lesenswert?

Markus schrieb:

> Also bei mir hat der CAN auch nicht funktioniert, als ich ihn
> initialisiert und die Transmit oder die Receive Funktion genutzt habe.
>
> Aber drauf geschissen. Ich habe dann die Transmit und die Receive
> Funktion selbst geschrieben, indem ich die Handvoll bits selber gesetzt
> bzw. geschoben habe.

Du bist nicht nur ein ganz toller Bursche, sondern hast zudem noch eine 
gewählte Ausdrucksweise.
#5748337
Lesenswert?

ESR habe ich ausgelsen bekommen, aber wieder mit sehr viel suchen. 
Richtig heißt es CAN_ESR und für STM32F072RBT6 heißt der Befehl 
"CanFehler=CAN->ESR;".

Angezeigt wird 51, also wie schon vermutet der Acknowledge Fehler.


Ist das ABOM Bit setzen so richtig?
1
CAN->MCR |= 1<<6;
Bei Registern will ich nicht rumprobieren, wer weiß was man da alles 
zerstören kann. Reference Manual Seite 833.

Theoretisch müsste es doch reichen das bei der Initialisierung zu setzen 
oder?
Gast #5748360
Lesenswert?

Heinz M. schrieb:
> ESR habe ich ausgelsen bekommen, aber wieder mit sehr viel suchen.

Wo hast du denn gesucht?! Das steht im Reference Manual auf S. 841. Da 
der Controller nur einen CAN-Controller hat ist es halt "CAN" statt 
"CAN1".

Heinz M. schrieb:
> Angezeigt wird 51, also wie schon vermutet der Acknowledge Fehler.

Dezimal? Dann ist er aber noch nicht im Bus-Off-Mode.

Heinz M. schrieb:
> Ist das ABOM Bit setzen so richtig?CAN->MCR |= 1<<6;

Wie wärs mit CAN->MCR |= CAN_MCR_ABOM? Gleich viel besser lesbar.

Heinz M. schrieb:
> Bei Registern will ich nicht rumprobieren

Dann such dir ein anderes Hobby. Ohne Register gibt das nichts.

Heinz M. schrieb:
> wer weiß was man da alles
> zerstören kann.
Nichts.

Heinz M. schrieb:
> Theoretisch müsste es doch reichen das bei der Initialisierung zu setzen
> oder?
Am Besten während man noch im Initialisierungs-Modus ist.
Gast #5749342
Lesenswert?

Belgacom schrieb:
> Markus schrieb:
>
> Also bei mir hat der CAN auch nicht funktioniert, als ich ihn
> initialisiert und die Transmit oder die Receive Funktion genutzt habe.
> Aber drauf geschissen. Ich habe dann die Transmit und die Receive
> Funktion selbst geschrieben, indem ich die Handvoll bits selber gesetzt
> bzw. geschoben habe.
>
> Du bist nicht nur ein ganz toller Bursche, sondern hast zudem noch eine
> gewählte Ausdrucksweise.

Belgacom schrieb:
> Markus schrieb:
>
> Also bei mir hat der CAN auch nicht funktioniert, als ich ihn
> initialisiert und die Transmit oder die Receive Funktion genutzt habe.
> Aber drauf geschissen. Ich habe dann die Transmit und die Receive
> Funktion selbst geschrieben, indem ich die Handvoll bits selber gesetzt
> bzw. geschoben habe.
>
> Du bist nicht nur ein ganz toller Bursche, sondern hast zudem noch eine
> gewählte Ausdrucksweise.

Solange ich keinen damit beleidige ist es ja ok. Ausserdem ist das ein 
Zeichen dafür, dass der CAN von ST wirklich so beschissen ist. Der 
Fehler besteht ja schon seit 2016 oder noch länger.
Das ist eine Tatsache und hat nichts mit den Leuten hier zu tun.
Gast #5749349
Lesenswert?

Markus schrieb:
> Ausserdem ist das ein
> Zeichen dafür, dass der CAN von ST wirklich so beschissen ist. Der
> Fehler besteht ja schon seit 2016 oder noch länger.

Es ist nur ein Fehler in der Bibliothek. Die ist bekanntermaßen mies. 
Der CAN-Controller selbst ist ok und vermutlich überhaupt nicht von ST 
selbst sondern von Bosch oder so zugekauft.
Gast #5749364
Lesenswert?

Junge Junge

CAN verstehen bevor man von BUGs redet ...

Wenn ein CAN-Teilnehmer eine Nachricht sendet (es gibt wie schon erwähnt 
kein Master oder Slave) und niemand diese Quittiert (ACK) macht der CAN 
Controller je nach einstellung lustiges Zeug auf dem BUS (alles nach 
Standart ...) zB. Präambel schicken und Retransmisions usw ...

Also schön Brav die HAL Callbacks verwenden (auch die des Errors !!!!) 
und den CAN Controller richtig (so wie gewollt) einstellen.

Dann funzt das wunderbar...

und nochmals: die haben keinen BUG !!!
Gast #5749386
Lesenswert?

Markus schrieb:
> Ausserdem ist das ein
> Zeichen dafür, dass der CAN von ST wirklich so beschissen ist. Der
> Fehler besteht ja schon seit 2016 oder noch länger.

Nein du bzw. dein Programm ist kaputt. Meinetwegen zusätzlich auch die 
HAL. Alles was es zu wissen gibt steht im Ref. Manual und im Errata. 
Wenn man sich daran hält geht es auch. Ich erdreiste mich sogar zu der 
Aussage: Wenn du nicht in der Lage bist die paar Register nach Manual zu 
verstehen und richtig zu bedienen solltest du entweder dazulernen oder 
dir ein anderes Hobby suchen.
Man kann sich die HAL Problematik auch mal anders vorstellen. Was ich 
von ST kaufe ist der Controller und weiter nichts. Dazu gibt es eine 
Dokumentation in der alles steht was ich wissen muss. Wenn ST 
zusätzliche Libs oder Democode oder was auch immer auf seinen Web-Seiten 
anbietet, ist das eine freiwillige Leistung die du nicht gekauft hast. 
Damit gibt es auch kein Recht auf Vollständigkeit oder Fehlerfreiheit. 
Noch weniger auf Langzeitverfügbarkeit und Updates oder Kompatibilität 
mit zukünftigen Controllern. Deshalb ist an dieser Stelle wirklich 
weniger mehr.

Alternativ kannst du deine Fragen in den Arduino-Foren stellen, da 
triffst du Gleichgesinnte.
Gast #5749462
Lesenswert?

temp schrieb:
> Markus schrieb:
> Ausserdem ist das ein
> Zeichen dafür, dass der CAN von ST wirklich so
> oder Fehlerfreiheit. Noch weniger auf Langzeitverfügbarkeit und Updates
> oder Kompatibilität mit zukünftigen Controllern. Deshalb ist an dieser
> Stelle wirklich weniger mehr.
>
> Alternativ kannst du deine Fragen in den Arduino-Foren stellen, da
> triffst du Gleichgesinnte.

Da fühlt sich aber einer angegriffen. Arbeitest du bei ST :)
#5749475
Lesenswert?

Sven S. schrieb:
> Heinz M. schrieb:
>
>>
>> Wird eine Nachricht geschickt, wenn das Kabel abgezogen ist, hängt sich
>> der Canbus des Senders auf. Alles andere funktioniert weiter.
>>
>
> Das ist ja auch kein Wunder, denn da gibt es auf dem CAN-Layer
> Protokolle, die nur funktionieren, wenn mindestens 2 Teilnehmer am Bus
> sind. Ansonsten laufen dir die Errorcounter hoch und dann gibt es einen
> BusOff, weil das ACK fehlt. Das hängt sich nicht auf, das ist per Design
> so gewollt.

Sofern der Knoten seine eigene Nachricht korrekt zurücklesen kann 
(Abschlusswiderstand) geht der Knoten nur in Error Passive 
(Sonderregel).
Dies erkennt man an der dauerhaften Sendewiederholung.

Diese hört auf, sobald ein zweiter Knoten die Nachricht bestätigt.

Oben die Erwähnungd es Abschlusswiderstandes, da sich das 
Hochlaufverhalten von dem des Trennen des Netzes unterscheidet.
Gast #5749541
Lesenswert?

Markus schrieb:
> Da fühlt sich aber einer angegriffen. Arbeitest du bei ST :)

Ne, wie kommst du auf diesen Zusammenhang? Ich hasse sie eigentlich ehr 
dafür, dass ST jedem Anfänger die HAL förmlich aufzwingen. Und wenn sie 
das so richtig verinnerlicht haben fällt der Umstieg auf einen anderen 
Controller doppelt schwer, was natürlich beabsichtigt ist.
Ich jammere eigentlich nur über das ständige Jammern bei Problemen mit 
der HAL. Was zum großen Teil aber daran liegt, dass viele das Ref-Manual 
nicht mal ansatzweise lesen sondern nur die Beispiele kopieren. Und dann 
kommen Threads wie dieser dabei raus.
Gast #5749888
Lesenswert?

temp schrieb:
> Markus schrieb:
> Da fühlt sich aber einer angegriffen. Arbeitest du bei ST :)
>
> Was zum großen Teil aber daran liegt, dass viele das Ref-Manual
> nicht mal ansatzweise lesen sondern nur die Beispiele kopieren. Und dann
> kommen Threads wie dieser dabei raus.

Das stimmt, da gebe ich dir Recht, aber vielmals tut es aber auch nicht, 
auch wenn man das Reference Manual liest. Zum Beispiel ist mir 
aufgefallen, dass ich anfangs trotz des Lesens vieles übersehen oder 
vergessen habe die richtigen Bits zu setzen. Zb bei den Timern das MOE 
Bit welches bei advanced irgendwie gesetzt werden muss, bei anderen 
wiederum nicht etc. Da blickt man anfangs nicht so durch und es fehlt 
einem einfach an Erfahrung herauszufinden, woran es liegen könnte, auch 
wenn es dem einen oder anderen damit vertrauten leicht erscheint. Nach 
einer gewissen Zeit wird man aber doch vertrauter mit der Materie und 
kann etwa einschätzen, was es sein könnte und kann viele Probleme schon 
messen oder debuggen.
Aber einfach wie der TO zu sagen, dass er an den Registern nicht herum 
hanzieren möchte, finde ich dann doch ein wenig bequem. Darum geht es ja 
letztendlich auch.

Ich habe den CAN zB anders zum Laufen gebracht, als wie weiter oben 
erwähnt mittels der Callback Funktionen. Nur weil ich es anders gemacht 
habe und nicht die Callback Funktionen genutzt habe, heisst es ja nicht, 
dass ich das Manual nicht verstanden habe. Deshalb möchte ich dir nur zu 
Herzen legen, dass du beim nächsten Mal vielleicht deine Vorschläge ein 
wenig diskreter anzubringen versucht. Ich bin offen für Vorschläge aber 
deinen letzten Satz habe ich nicht so als freundlich empfunden.
#5750030
Lesenswert?

Nur so als Hinweis: Markus ist nicht der Threadsteller.

Weiterhin, damit hier keiner aneinander vorbei redet:
Master Slave bezieht sich wie bereits erwähnt auf meine Anwendung und 
nicht auf den Bus. Der Master hat ein Display und Bedienelemente. Die 
Slaves Sensoren oder Aktoren.

Mir ist völlig bewusst, dass mein Programm verbuggt ist. Habe auch nie 
das Gegenteil behauptet.

Cube MX, HAL oder was auch immer hat Bugs, das ist bekannt. Trotzdem 
muss ich sagen, dass UART, I2C und einige andere Sachen super schnell 
funktioniert haben. Canbus und USB leider nicht. Deswegen programmiere 
ich aber nicht sämtliche ST Bibliotheken neu.


Zurück zum Problem.
Wenn beide so konfiguriert sind, dass der Master zyklisch ein Signal 
sendet, woraufhin der Slave einen Wert zurücksendet, dann kann ich nach 
der Leitungsunterbrechung zwar an den Slave eine Nachricht schicken, 
aber beim Master kommt nichts an. Master hat Fehlercode 51, Slave 0.

Wenn der Slave dauerhaft sendet und der Master ab und zu, dann geht der 
Fehlercode auf beiden hoch. Beide versuchen zu senden, was man der 
niedrigeren Bildwiederholrate der Displays merkt. Sobald ich das Kabel 
wieder einstecke geht der Fehlercode bei beiden auf 0, die 
Bildwiederholrate ist wieder flott, aber trotzdem werden keine 
Nachrichten gesendet oder empfangen (kann ich ohne Oszi nicht sagen).

Oder brauche ich einen dritten CAN Knoten, der die beiden wieder auf die 
Beine bringt?
Wenn ja, würde das bedeuten es müssen mindestens 2 Knoten an einem 
Teilabschnitt des Busses ohne Fehler aktiv bleiben, damit der Bus wieder 
"hochgefahren" werden kann. Oder verstehe ich da was falsch?
#5750041
Lesenswert?

Nachtrag zu Markus:

Ich habe kein Problem mit Registern. Nur wenn ST mir ein Tool liefert um 
diese schier endlosen Register zu umgehen, dann möchte ich das auch 
nutzen. Einfache Peripherie (z.B. I2C Temperatursensoren) habe ich kein 
Problem mit den Registern.

Was ich sehr ungern mache und beim STM32 nicht machen werde, ist auf 
Verdacht in Registern rumzuspielen. Entweder man weiß genau was man da 
tut oder man weiß es nicht. Und ich weiß es nicht. Wie du schon 
geschrieben hast ist das Reference Manual ein harter Brocken, wenn man 
kaum Erfahrung mit der Materie hat.
Gast #5750137
Lesenswert?

Heinz M. schrieb:
> Oder brauche ich einen dritten CAN Knoten, der die beiden wieder auf die
> Beine bringt?

Nein.

Heinz M. schrieb:
> kann ich ohne Oszi nicht sagen).

Dann besorg dir eins von den billigen LA's.

Heinz M. schrieb:
> dass UART, I2C und einige andere Sachen super schnell funktioniert
> haben.

I2C ist deutlich lästiger als CAN bei den STM32. Bei CAN macht die 
Hardware alles automatisch, bei I2C muss man jedes Schrittchen steuern. 
Und im Gegensatz zur CAN-Hardware ist die I2C-Hardware verbuggt und 
hängt sich ständig auf.

Heinz M. schrieb:
> diese schier endlosen Register zu umgehen
Bei CAN sind das nur eine Hand voll. Die Filter-und Mailbox Register 
sind einfach nur viele mit der gleichen Funktion, die muss man nur 1x 
verstehen.

Heinz M. schrieb:
> Wie du schon geschrieben hast ist das Reference Manual ein harter
> Brocken, wenn man kaum Erfahrung mit der Materie hat.

Versuch's doch einfach mal... die Zeit die du hier mit Schreiben 
verbracht hast hätte locker gereicht für das CAN-Kapitel.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren