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.
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.
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.
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.
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
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.
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
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...
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_Networkhttp://www.semiconductors.philips.com/products/automotive/transceivers_sbcs/can/index.html
Auf der Philipshomepage gibts gute Dokumente zum Thema.
lg,
Michael
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.
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
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
Ä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
!
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.