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.
in Avr-Studio unter Tools/"stk500 avrisp jtag ice" dann unter fuses
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_Network http://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
Keiner eine Ahnung, woran es liegen könnte, oder eine Beispiel Anwendung?
Ä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.
Hallo! Wenn du den 82C250 im High Speed Mode betreibst, musst du nur den Rs Pin DIREKT auf Masse schalten!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.