mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu SJA1000


Autor: Markus Bernard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Markus Bernard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus Bernard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus Bernard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: KoF (Gast)
Datum:

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

Autor: Markus Bernard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus Bernard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.