Forum: Mikrocontroller und Digitale Elektronik Frage zu SJA1000


von Markus Bernard (Gast)


Lesenswert?

Hallo,
ich verwende ein CAN200-Dongle mit einem
SJA1000-Controller.

Die Kommunikation mit dem Controller über EPP
funktioniert sehr gut. Auch die Kommunikation
mit zwei Infineon 167CR-MCs mit internen CAN-Controller funktioniert im
grossen und ganzen gut, nur habe ich das Problem, dass der SJA1000
manchmal (nach ca. einer Stunde) anfängt Nachrichten zu empfangen, die
gar nicht gesendet wurden, bzw. deren Inhalt nicht stimmt (z.B. falsche
Längenangaben mit mehr als 8 Byte im Nachrichtenheader).
Manchmal fängt der Controller sich nach einigen Nachrichten wieder und
manchmal empfängt er dann nur noch falsche Nachrichten.
Die beiden C167CR bleiben davon scheinbar unberührt und tauschen
weiterhin Nachrichten aus.

Kennt jemand dieses Verhalten beim SJA1000, oder hat jeman eine Idee,
woran dieses Verhalten liegen
könnte?

Ich hoffe diese Frage passt in dieses Forum.

Vielen vielen Dank
           Markus Bernard

von KoF (Gast)


Lesenswert?

hab auch den can200
und unter win2k habe ich das selbe beobachtet... 9 oder mehr bytes
wurden angeblich empfangen! die hardware hatte jedoch definitiv nur 8
byte gesendet(ich hab es mit weiterem dongel von peak und nem oszi
nachgemessen!)
ignoriere es einfach, das mache ich zumindest!

von Markus Bernard (Gast)


Lesenswert?

Hallo KoF,

ich kann das leider nicht ignorieren, da es ja
machmal vorkommt, dass des SJA1000 nur noch
falsche Nachrichten empfängt.
Ausserdem soll der Dongle für Echzeitübertragung
verwendet werden und da darf er nicht im
Vorfeld schon solche Schwächen zeigen.

Danke trotzdem
        Markus

von Sebastian (Gast)


Lesenswert?

Wie lang ist denn die Verbindung der Datenleitungen zwischen PC und
SJA1000? Ich hab von solchen Problemen mit dem SJA1000 schon mal
gehört. Die Leitung war ca 30cm lang.

Gruß Sebastian

von Markus Bernard (Gast)


Lesenswert?

Hallo,

die Leitung ist einen Meter lang.

Allerdings habe ich im Fehlerfall die Register nochmal über das
Softwarehandshake ausgelesen und die Werte stimmen mit dem EPP-Werten
überein.
Nun hatte ich überlegt, dass eventuell beim Senden der Nachricht die
Werte per EPP falsch in die Register geschrieben werden und der
Controller seine eigene Nachricht empfängt.
Aber der Selbstempfang ist ausgeschaltet und daher müsste die Nachricht
von aussen kommen.

Das mit dem Kabel werde ich selbstverständlich ausprobieren, was aber
bitte niemanden hindern soll weitere Vermutungen zu äussern.
Ich bin für jeden Verdacht dankbar und probiere alles gerne aus.

Vielen Dank für die Antwort
          Markus Bernard

von Markus Bernard (Gast)


Lesenswert?

Hallo,

ich habe den Controller nun direkt am Druckerport angeschlossen und der
Fehler besteht weiterhin.
Ich habe einen der C167-Controller so eingestellt, dass er alle
Nachrichten empfängt und er empfängt tatsächlich  auch ein paar falsche
Nachrichten, d.h. die Nachrichten werden wirklich auf Bus gelegt.
Aber warum?
Ich benutze die Infineon CAN-Library, hat die irgendwelche
Kinderkrankheiten?

Vielen Dank
            Markus

von KoF (Gast)


Lesenswert?

hmm...
falsche nachrichten werden bei mir nur angezeigt, aber nicht
gesendet!!
hast du eventuell den abschlusswiderstand zu klein gewählt?

von Markus Bernard (Gast)


Lesenswert?

Hallo,

120 Ohm an beiden Enden. Ausserdem scheint die Nachricht den CRC-Check
zu passieren und daher ist es doch recht unwahrscheinlich, dass sie aus
einem Kabelfehler entstanden ist, oder?

Vielen Dank
         Markus

von Markus Bernard (Gast)


Lesenswert?

Hallo,

ich wollte nur bescheid sagen, dass ich die Lösung des Problems
gefunden habe:

Obwohl ich im Resetmode das Lesen und Schreiben der Register ausgiebig
getestet habe, funktionierte das EPP-Handshake im "normalen" Betrieb
manchmal nicht.
Deswegen wurden im Sendebetrieb die Nachrichtenheader (und oder die
Nachricht) nicht richtig in die Register geschrieben, so dass der
Controller Nachrichten mit falschen Header empfing.
Dies scheint, unter gewissen Umständen, den Controller völlig aus den
Tritt zu bringen (und das, obwohl der Controller diese Nachrichten
selber gesendet hat).

Schon zu Beginn meiner Experimente mit dem CAN200-Dongle, konnte
ich den EPP-Modus erst in Betrieb nehmen, nachdem ich die EPP-WAIT
Rückkoppelung um 10 ns verzögert habe (zusätzliches Gatter).
Die nWRITE-Leitung wurde schon im Originalschaltplan durch ein
R-C-Verzügerungsglied um 55 ns verzögert.
Nachdem ich die Verzögerung durch eine schrittweise Änderung des
Widerstandes auf ca. 20 ns veringert habe sind die Fehler
verschwunden.

In dieser Konfiguration hat der Dongle einen Dauertest von ca. acht
Stunden, mit einer Gesamtzahl von 250 Mil. gesendeten/empfangenen
Datenpaketen, bestanden.

P.S.
Die Kabellänge von einem Meter scheint keine Probleme zu machen.

Vielen Dank an alle die mir geantwortet haben.
         Markus Bernard

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.