Forum: Mikrocontroller und Digitale Elektronik AT90CAN128 zu langsam?


von Michael S. (michael_sch)


Angehängte Dateien:

Lesenswert?

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

von sous (Gast)


Lesenswert?

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!

von sous (Gast)


Lesenswert?

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.

von Henrik (Gast)


Lesenswert?

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

von Michael S. (michael_sch)


Lesenswert?

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.

von Michael S. (michael_sch)


Lesenswert?

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

von A.K. (Gast)


Lesenswert?

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.

von Michael S. (michael_sch)


Lesenswert?

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.

von A.K. (Gast)


Lesenswert?

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).

von Michael S. (michael_sch)


Lesenswert?

es hört der Can200 dongle zu, wie ich die register ausles muss ich mal 
schaun.

von Uwe Bonnes (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.