PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : at90can development board - Datenempfang schlägt fehl



Crash32
19.06.2008, 02:41
Hallo zusammen,

ich habe ein DVK90CAN1-Development Board mit dem Controller at90can von Atmel bestellt. Nach erster Inbetriebnahme des CAN-Moduls mit dem fertigen Programm can-spy von Atmel habe ich festgestellt, das die Paktet zwar ordentlich empfangen werden, der Identifier passt, die Paketfrequenz passt, jedoch sind die Empfangenen Daten im CANMSG Register immer 0x00.

Im Moment besteht das Bussystem aus 2 Teilnehmern ( an jeder Seite 120Ohm Abschlusswiderstand), ein Motorsteuergerät, und eben das Development-Board.

Um einen Fehler am Steuergerät auszuschließen, habe ich das Steuergerät an eine CAN-PCI-Karte von National Instruments angeschlossen, welche anstandslos die Daten empfangen hat.

Das Hauptproblem äußert sich also darin, das die Daten immer 0x00 sind. Die Einstellungen für den CAN-Bus sollten passen, die Pakete werden ja ohne Fehler erkannt. Jedoch sind die Daten immer 0x00.

Vielleicht kennt jemand das Problem.

IDE is AvrStudio4 , im Simulator funktioniert alles problemlos.

Mit freundlichen Grüßen

Reinhold Fischer

gummi_ente
19.06.2008, 10:58
Hallo Reinhold,

am besten einmal Deine Konfiguration der CAN-Schnittstelle, sowie den Empfangsteil als Code posten.

Denn wenn was empfangen wird, so sind die Daten auch da. Da muß irgendetwas anderes schief laufen.

Grüße

Crash32
20.06.2008, 00:03
Hallo gummi_ente,

ich habe heute den Tag über weitere Tests gefahren, und habe den Fehler gefunden.

Das Motorsteuergerät sendet insgesamt 4 CAN-Pakete, welche von mir zu einem Frame zusammengesetzt werden müssen. Wenn das Steuergerät einen Fehler auf dem Bus detektiert, so sendet es das letzte Paket noch einmal.
Da das Steuergerät in meiner aktuellen Testschaltung nur VCC/GND/CAN beschaltet ist, sind alle übertragenen Messwerte 0x00. Dazu kommt noch das Start/Ende Zeichen des Frames.

Ich habe dann heute einen Bus aufgebaut, an dem das Motorsteuergerät angeschlossen war, die CAN-Karte im PC, und zwischendrin das Dev-Board. Sobald die PCI-Karte an war, habe ich die Daten problemlos auch auf dem CAn-Controller empfangen, schalte ich die PCI-Karte ab, "erkennt" das Steuergerät einen Fehler, und sendet erneut das alte Paket. Da aber der Paketinhalt fast nur 0x00 ist, sieht es so aus, als ob der CAN nichts empfängt.

Nach weitere Internetrecherche, bin ich auf einen dokumentierten Bug gestoßen, der genau bei 1mbit/s Can-Takt, 8Mhz Controller Takt auftritt, wo anscheinend der Sampling-Point falsch gesetzt/berechnet wird. Ich nehme an, das der Controller das ACK-Bit zu einer Zeit seztt, an der das Steuergerät es nicht erwartet bzw. der Controller an der Stelle des ACK-Bit ein rezessives Bit erwartet, aber durch den falschen SAmpling-Point dieses nicht erkennt. So erhält das Steuergerät kein ACK, und denkt es schlug etwas fehl.

Ich werde morgen weitere Tests fahren, und euch hier auf dem laufenden halten.

Für weitere Vorschläge würde ich mich freuen, da das mit dem Sampling Point nur eine Vermutung ist.

Mit freundlichen Grüßen

Reinhold Fischer