www.mikrocontroller.net

Forum: Haus & Smart Home Probleme mit CAN-Steuergerät


Autor: Michael Schröder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich habe ein Steuergerät, welches mir mit 100kb/s Canbotschaften
schickt. Mit ner CAN karte (PCMCIA) von nem Spezel kann man die auch
wunderbar lesen. Da ich dieses Steuergerät gerne mit nem nem At90can128
ansprechen, bzw die Nachrichten empfangen. Wenn ich mit meinem Teil
versuche was zu senden Bekomme ich nur Error-Frames, ich hab keine
ahnung ob es an Hard oder Software liegt.
Habe den at90can128 auf das Experimertierboard von Ulrich Radig
(http://www.ulrichradig.de) v1.4 gebaut und einen PCA82C250 BUS Treiber
rangehängt und zwar folgender maßen:

82C250       |   At90CAN128
Pin 1 (TXD)  |   Pin 30 (TXCAN)
Pin 4 (RXD)  |   Pin 31 (RXCAN)
Pin 5 (VREF) |   Pin 62 (AREF)

Pin 2 (GND)  |   GND
Pin 3 (VCC)  |   +5V
Pin 6 (CANL) |   mit 820Ohm auf GND
Pin 7 (CANH) |   mit 820Ohm auf GND
Pin 8 (RS)   |   mit 410Ohm auf GND

Verwende am At90Can128 ein 16Mhz Quarz an Pin 23(XTAL1) und 24(XTAL2).
Das 2. Quarz das wohl für eine Timer vorgesehn ist hab ich weggelassen
(Pin 17 und 18).

Kleine testprogramme (pin an und abschalten) zeigen, dass sich der
Controller auch erfolgreich beschreiben lässt und ansich seine Arbeit
verrichted.

Andererseits währe da dann noch das Problem der Software ich hab zwar
schon tage lang rumprobiert, aber wenn ich nicht weis obs nicht doch
die hardware ist hat das nicht viel sinn, vorallen vermute ich ein
probem bei der Berechnung der Frequenz. Ich verwende das AVR Studio
4.12 mit dem CAN Plug in von AVR, aber ich weis nicht wie ich die 3
Konstanten setzen soll CONF_CANBT1 CONF_CANBT2 und CONF_CANBT3 hab hier
auch schon die verschiedenseten werte gefunden und berechnen lassen,
aber hilft alles nix.


Ich bin am verzweifeln hab mir auch schon mal den CAN200 Dongle
aufgebaut, aber da find ich kein Treiber für Windows und der linux
Treiber haut auch mal wieder nicht hin.

Bitte Bitte helft mir.

Autor: Britneypunter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du den externen Quarz deines Atmels aktiviert? Fabrik neu verwenden
z.B. die ATmega's den internen 1MHz oszillator, unabhängig vom
angeschlossenen Quarz.

Autor: Michael Schröder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kann ich den aktivieren? Beim Compelieren der software hab ich
jedenfalls 16Mhz angegeben sowohl im Quellcode als auch im ARV Studio
Einstellungen vom Projekt.

Autor: andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in Avr-Studio unter Tools/"stk500 avrisp jtag ice" dann unter fuses

Autor: Michael Schröder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, aber zum schreiben verwende ich ein ponyprog mit PonyProg2000,
welche fuses muss ich da setzten, da gibt es mehrere, ich hab irgend wo
gelesen, dass man da aufpassen muss, welche man setzt, da man wohl nicht
alle mit dem PonyProg wieder löschen kann.

Autor: Michael Schlener (michael_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

also der Anschluss vom Transciever passt so nicht.

CANL und CANH gehören nicht auf GND gezogen. Beide Widerstände
entfernen.
An jedes Ende vom Can-Bus gehört je ein 120 Ohm Widerstand zw. CANL und
CANH als Busabschluss.

Vref am 82C250 bleibt offen.

Wie die Register zu beschreiben sind für 100kbit ist dem Manual vom
Controller zu entnehmen.


Ansonsten Beschreibung vom 82C250 und vom Atmel-Controller durchlesen.
Und sich mit den Grundlagen des Can-Busses befassen um ihn zu
verstehen.

Grüße,

Michael

Autor: Michael Schröder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit den 120 Ohm hab ich schon öffter ausprobiert das ist jeden
fallse nicht das (einzige) Problem. Ich habe sie auf GND gezogen, da
das in dem Steuergerät ebenfalls geschieht, warum weis ich allerdings
nicht, werde sie aber gerne nochmal entfernen. Aber Vref weg lassen hab
ich noch nicht probiert. Die beschreibung des 82C250 hab ich allerdings
schon oft durchgelesen.

Autor: Michael Schlener (michael_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ist in deinem Steuergerät auch der 82C250 verbaut? Das schaut mir eher
nach einem z.B. TJA1054 aus. Dieser ist ein fehlertoleranter Low-Speed
Transciever und dieser schaltet dann bei Bedarf diese Widerstände
hinzu. (siehe Datenblatt)

Dieser Baustein ist ebenfalls von Philips. Hier findest du auch
Unterlagen zum Käfer, wie hier der fehlertolerante Bus ausschauen muss,
damit er funktioniert.

lg,

Michael

Autor: Michael Schröder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab mal nach gesehn, und stimmt ist tatsächlich ein TJA10541 wie ich
gerade festgestellt habe. Gut gut, dann werd ich ich das mal ändern.
Habs allerdings ja vorher auch schon ohne (den 2x820Ohm ) getested, und
es hat nicht funktioniert, kann aber auch sein, dass es da noch andere
Probleme gab.
Ein Problem ist halt irgendwie das fehlende Equipment so dauert es
schon ein par tage bis n Spezel mit der CAN karte vorbeikommt, und
damit kann ich auch nur sehn, dass es nicht geht oder dass es geht.

Weis jemand ob man in der Nähe von München ein digitales Speicheroszi
ausleihen kann? Vielleicht kann ich dann mehr sehn...

Autor: Michael Michael (mike_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

mit dem entfernen der Widerstände ist es nicht getan. Du musst auch den
TJA1054 verwenden für den Lowspeedbus.

Ich nehme mal an, das du im Auto misst. Im Auto sind mehrere
Steuergeräte mit dem o.a. Transciever verbaut, welche bei Bedarf ihre
Terminierungswiderstände zuschalten, um auf den benötigten Widerstand
zu kommen. Wenn du direkt im Auto messen willst, sind die Widerstände
nicht direk notwendig, der TJA1054 aber sehr wohl. Wenn du diesen nicht
hast, nutzt dir das Oszi auch nichts.

Kurz zusammengefasst: Du kannst mit einem HighspeedTransiever (82C250)
nix am Lowspeedbus senden/empfangen.

Bist du dir mit den 100kbit sicher?!? Wenn es im KFZ ist ist dies eher
unüblich.

Hier ein Links zum Thema Can-Bus:
http://de.wikipedia.org/wiki/Controller_Area_Network
http://www.semiconductors.philips.com/products/aut...

Auf der Philipshomepage gibts gute Dokumente zum Thema.
lg,

Michael

Autor: Michael Schröder (michael_sch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahh gut zu wissen ja ist in nem KFZ das Steuergerät arbeited aber ganz
sicher mit 100kb/s hab grad telefoniert n Spezl hat noch n par TJA1054
ich weis jetzt auch warum die 820 Ohm, da dann das Steuergerät auch
ohne andere Teilnehmer am CAN hängen kann, zur Diagnose.
Allerdings komm ich mit dem Pins nicht zurrecht.

Autor: Michael Michael (mike_s)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

willst du das STG standalone laufen lassen?!?.

Zum Thema Anschluss:

1  offen   8 Widerstand zu Can
2 TXD µC   9 Widerstand zu CANL
3 RXD µC  10 Vcc 5V
4 offen   11 CANH
5 Vcc     12 CANL
6 Vcc     13 GND
7 Vbat    14 Vbat (12V)

Sollte so stimmen nach dem Datenblatt.

lg,

Michael

Autor: Michael Schröder (michael_sch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so die hardware seht nun also, nachdem ich endlich das TJA1054 bekommen
habe, allerdings kommen immer noch keine nachrichten an ;-( hab im
forum mal nach nem beispiel gesucht, aber das beispiel, dass ich
gefunden habe funktioniert ebenfalls nicht...
Hat also jemand ein kleines test prog ?
Könnte auch sein, das die bit timing register falsch gesetzt sind, hab
aber die aus dem datnblatt des AT90CAN128 also:
    #define CONF_CANBT1    0x26
    #define CONF_CANBT2   0x04
    #define CONF_CANBT3    0x13

Für 100kb/s und 16MHz

Autor: Michael Schröder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keiner eine Ahnung, woran es liegen könnte, oder eine Beispiel
Anwendung?

Autor: Bernd Rüter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähm,
bei dem PCA82C250 hast Du den RS-Pin mit 4?0 Ohm gegen Masse
geschaltet. Damit könnte er wohl über 1MBit schaffen...
Lt. Datenblatt wird bei 100kBit/s ein 47kOhm empfohlen, bei 1MBit/s
erst 1kOhm.

Man kann alle diese High-Speed-Controller auf Low-Speed-Flanken zwingen
!

Autor: Michael Schröder (michael_sch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab´s mal wie oben beschrieben mit 4,1 kOhm ausprobiert, hat aber nicht
funktioniert.In dem Can200 dongle den ich mir gebaut hab ist auch ein
82C250 dirn. Bei dem wird ein 47k Ohm verwendet. Hab den 82C250 aber
nie mit einem 47k an meiner Schaltung getested, werds gleich mal
probieren.

Autor: Volker Hofacker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Wenn du den 82C250 im High Speed Mode betreibst, musst du nur den Rs
Pin DIREKT auf Masse schalten!

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.