Forum: Mikrocontroller und Digitale Elektronik crumb128 und cksel0...3


von Niklas R. (niklas)


Lesenswert?

Hallo,

ich habe soeben versucht den Crumb128 von chip45.com mit TwinAVR zu
programmieren. Und dabei ist wohl was schief gegangen.

Da der auf dem Crumb128 Board verbaute Atmega128 standardmäßig den
internen Oszillator verwqendet, wollte ich zunächst cksel0...3 neu
einstellen. Die Kommunikation über ein selbstgebautes ISP-Kabel hat auf
Anhieb geklappt. Ich konnte alle Lock-& Fuse Bits auslesen.

Das chip45 Datenblatt hatte ich allerdings wohl zu flott gelesen. Dort
steht: "...If you want to use the 14.7456MHz clock crystal instead of
the internal oscillator (which is default) set CKSEL[0..3] fuse bits to
0xF."

Ich hatte in der Eile ...set fuse bits to 'off' statt '0xF' gelesen
und mal alle vier (0-3) auf 0 (unchecked) gestellt.
Seitdem kann ich den Controller über TwinAVR nicht mehr ansprechen.

Weiss jemand weiter? Aus dem original Atmega128 Datenblatt werde ich
auch nicht so richtig schlau.

Vielen Dank schonmal,

Niklas

von akw (Gast)


Lesenswert?

Mh schade um das Ding, sieht ganz nett aus ^^ Ne, jetzt mal ernsthaft
wenn du die Fuses falsch eingestellt hast bleibt dir nur noch den Mega
über nen parallelen Programmer wieder heile zu machen oder den
passenden Takt anzuschließen, was bei dem fertigen Board ja eher
kompliziert werden dürfte.

von Uwe Nagel (Gast)


Lesenswert?

Da hast du den Prozessor auf externen Takt umprogrammiert!
Lege vorübergehend einen externen Takt, 1MHz oder was du gerade hast,
an XTAL1 an und programmiere das Teil wieder um.
Leider sind die XTAL-Pins nicht rausgeführt...

von akw (Gast)


Lesenswert?

Achja was der richtige Takt ist findest du im Datenblatt unter "System
Cock and Clock Options"

von Niklas Roy (Gast)


Lesenswert?

Vielen Dank für die schnellen Nachrichten.

Das Datenblatt hatte ich mir angesehen, allerdings habe ich den
Unterschied zwischen External Clock und External Crystal bzw.
Oscillator nicht verstanden.

Soweit ich das Datenblatt begreife, habe ich den Controller auf 1111
umgestellt (alle Kästchen nicht abgehakt = alle unprogrammiert =
1111).
Liege ich da richtig?

Und wenn ja, habe ich damit den Controller jetzt nicht auf den externen
Quarz (also auf den fest verdrahteten 14.7456MHz Quarz) umprogrammiert?
Richtig oder Flasch?

@Uwe: Was verstehst Du unter "externem Takt" - meinst Du damit einen
Quarz oder was anderes (was Atmel als Clock bezeichnet) - und falls Du
Clock meinst: wie sieht so ein Clock-Signal aus?
Könnte ich die dafür 1MHz Kalibrierfrequenz aus dem Oszilloskop
nehmen?

Bin immer noch am Rätseln und würde mich über weitere Aufklärungen
freuen!

Aber vielen Dank schonmal.

Niklas

von Uwe Nagel (Gast)


Lesenswert?

Externer Quarz: Interner Oszillator, der einen extern angeschlossenen
Quarz zum Schwingen braucht.
Externer Takt: Der Takt kommt von aussen, also von einem externen
Taktgenerator, zB. Quarzoszillator, oder vielleicht von einem anderen
Prozessor, oder sonstwoher. XTAL1 ist ein Eingang.
Das Oszilloskop hat vermutlich eine zu kleine Spannung, meins macht
glaube ich 2V Amplitude. Besser wäre so knapp unter 5V, aber nicht
mehr! Käme auf einen Versuch an.
Alternativ ein kleiner RC-Oszillator mit Invertern aufgebaut. Die
Frequenz ist ziemlich unkritisch und mit deinem Oszilloskop kannst du
die ja prüfen. Oder so ein Quarzoszillator mit 4 Beinen.
Das mit den Häkchen hängt anscheinend von der Programmiersoftware ab
und führt immer wieder zu Verwirrungen.
Alle 1 wäre ja 0xf wie gewünscht, in deinem ersten Posting hast du aber
was von 0 geschrieben, das ist externer Takt.

von Niklas Roy (Gast)


Lesenswert?

@Uwe:

Vielen Dank für die Aufklärung!
Die Verwirrung bezüglich 0 und 1 bestand Anfangs, da ich das Atmega128
Datenblatt gar nicht angesehen habe, sondern mich auf das Crumb128
Infosheet verlassen hatte. Dort steht ja "...set CKSEL[0..3] fuse bits
to 0xF" - ich hatte aber statt "0xF" "off" gelesen und deshalb mal
alle ausgeschaltet. Erst später hatte ich bei der Lektüre des Atmega128
Datenblattes dann bemerkt, dass das Ganze aufgrund der inversen Logik
(0=gesetzt, 1=nicht gesetzt) ziemlich verwirrend ist.

Tatsache ist, ich habe die Häkchen in TwinAVR entfernt und weiss nicht,
ob ich die Bits nun gesetzt habe oder nicht. Falls ich sie nicht gesetzt
habe, hieße das ja, der Chip sollte sich auf den externen und schon
verdrahteten 14.7456MHz Quarz takten. Tut er aber offenbar nicht.
Falls ich sie doch gesetzt habe, müsste ich einen externen Takt
anschließen. Das habe ich jetzt gemacht. Ich habe den 1MHz Takt aus dem
Oszilloskop verwendet. Du hattest Recht mit den 2V, daher hängt da jetzt
ein kleiner Verstärker dazwischen, der Das Taktsignal auf knapp unter 5V
anhebt. Das sieht alles recht sauber aus, dennoch komme ich an den
Controller nicht mehr ran.

Falls noch jemand eine Idee hat, freue ich mich davon zu hören!

Viele Grüße,

Niklas

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.