Hallo, ich habe 2 AT90CAN128 beide auf EVO boards eines von http://www.microcontroller-starterkits.de/ und eines von Ulrich Radig (http://www.ulrichradig.de/) um Hardwarefehler auszuschließen. Bei beiden habe ich es nicht geschafft, den CAN-Bus zum laufen zu bekommen. Habe deshalb mit BASECOM-AVR ein kleines testprog laufen lassen: $regfile = "m128can.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 Config Porta.3 = Output Do Porta.3 = 1 Waitms 1000 Porta.3 = 0 Waitms 1000 Loop End mit dem Ergebnis, dass anstatt einer Sekunde 7 Sekunden gewarted wird. Im Anhang ist ein Screenshot der Fuses. Bei beiden Boards hängt ein 16MHz Quartz an X1, X2 Das Problem mit dem CAN-Bus hab ich noch mal genauer beschrieben unter http://www.roboternetz.de/phpBB2/viewtopic.php?t=24991
Ich verstehe nichts von Bascom, da ich selber nur mit C/C++ arbeite und mit diesem speziellen Controller habe ich auch noch nix gemacht. - Aber: Hat dieser Controller einen internen RC-Oszillator? Ist dieser vielleicht eingeschaltet (anstelle des externen Quarz-Oszillators)? - Oder: besitzt dieser Controller einen Takt-Vorteiler, der evtl. aktiviert ist? Das alles würde ein unerwartet langsameres Arbeiten erklären. Also bitte einmal die Fuse-Einstellungen prüfen!
Ah, ich habe Deinen Anhang mit den Fuse-Einstellungen übersehen! Verzeihung! Sieht so aus, als sei der externe Quarzoszillator eingestellt. Aber die Fuse für 'Divide Clock by 8 internally; [CKDIV8=0]' sehe ich nirgens.
Den Sinn dieser Fuse habe ich auch noch nicht erkannt, ich weiß nur, dass sie standartmäßig aktiviert ist. Deswegen habe ich mal ein paar Stunden gesucht, warum mein CAN-Bus nicht lief. Wenn dein Programmierprogramm die Fuse nicht kennt, nimm eine anderes. Die ist bstimmt die Wurzel des Übels! Henrik
Jup die Vermutung habe ich auch, im Datenblatt gibts die Fuse auch, allerdings nicht BASECOM-AVR, dass ich nur desshalb installiert hab, um Fuses für den AT90CAN128 zu setzen. Denn PonyProg unterstützt den AT90Can128 nicht, nur den ATMega128 der fast gleich ist, sich aber in den Fuses unterscheidet.
Ich habs hab im PonyProg auf AtMega128 gestellt und dort entspticht die Fuse BODLEVEL der CKDIV8 Fuse im AT90CAN128, nun hauts mit der Zeit hin, aber das senden mit dem Canbus geht immer noch nicht
Eines ist klar: Ohne mindestens einen Abschluss (Frage im RN) funktioniert CAN überhaupt nicht - nicht mal bei 4mm und 1bit/sec. Wenn ein CAN Device nicht senden kann, gibt's üblicherweise irgendwelche Fehleranzeigen/Registerinhalte/... und auch Loopback/Selftest-Modi.
ok, wenn ich den 120 Ohm hinhäng leuchted das error led vom TJA1054 Bei 5,6k Ohm is alles i soweit i.O. jedoch kommt nichts an.
Hört jemand dem CAN aktiv zu? Wenn nicht, ist Error völlig normal weil kein ACK kommt. Ansonsten wär's hilfreich, wenn du mal rausfindest was genau für ein Error das ist (CANGSTA,CANTEC,CANSTMOB).
es hört der Can200 dongle zu, wie ich die register ausles muss ich mal schaun.
Wir verwenden hier den AT90CAN128 ohne externes RAM mittels Ethernut an vielen Stellen. Die Emfangsschlange mussste ich auf 4 Nachrichten zurueckstuetzen, wenn mann diesen Wert beim Senden beachtet, ohne grosse Probleme..
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.