Wie ich bereits im
Beitrag "Probleme bei selbstgebauter Uhr (DEM 16217 | STK500)" beschrieb,
habe ich ein Problem mit dem Takt.
Kurze Vorgeschichte
Ich versuche mit Hilfe des STK500 (ATmega8515) und einem Display eine
Uhr zu programmieren. Dass das alles nicht sehr exakt ist, ist mir klar,
aber ich verliere pro Minute 4 Sekunden. Heist, meine Uhr geht 4s/1min
nach.
Konfiguration und Eigenschaften des Bordes
Das STK500 ist im wesentlichen im Default.
Die Fusebits wurden nicht geändert. Die Jumper sind da, wo sie bei der
Auslieferung waren und wo sie laut Handbuch auch sein sollen.
Der Takt der vom Controller des Bords erzeugt wird, soll bei 3,6864MHz
liegen. Wenn ich aber richtig gerechnet habe, liegt er bei 3,44064MHz.
Der Jumper OSCSEL steckt auf Position eins. (Also Pin1 und Pin2)
Deshalb habe ich mir einen Quarz besorgt der ebenso eine Frequenz von
3,6864MHz hat. Habe den Jumper OSCSEL auf Position 2 (Pin2 - Pin3)
gesteckt und hatte keinen Erfolg.
Denn wenn ich das tue (ohne Quarz) liegt dennoch ein Takt an. Deutlich
langsamer als der andere aber konstant. Das sehe ich daran dass das
Programm weiter läuft. Und das dürfte meines Wissens nicht sein, wenn
kein Quarz gesteckt ist.
Ich hatte gehofft, dass, wenn ich das Bord mit einem Quarz bestücke,
dass es sich dann mit dem (blöderweise) bereits vorhandenen Takt
vermischt und die Uhr schneller läuft. Das tut es nicht. (Klar wäre das
nicht nutzbar, aber es wäre ein Anfang) Egal was ich mache, der Quarz
hat keinen Einfluss auf das Bord und das Programm.
Natürlich habe ich auch überlegt, ob nicht ein Fusebit falsch gesetzt
ist und der ungenaue interne Taktgeber des ATmega8515 ausgewählt ist.
Dem ist aus zweierlei Gründen wohl nicht so: Erstens, wenn ich OSCSEL
oder XTAL1 zeihe, macht der Kontroller keinen Mucks mehr. Bei einem
internen Takt unerklärlich. Zweitens habe ich in der IDE (ich nutze
eclipse) gesehen dass es das nicht ist.
1. Bild: Die gesetzten Fusebits, ausgelesen aus dem Kontroller.
1 | SUT_CKSEL:
|
2 | Ext. Clock
|
3 | Int. RC Osc. 1 MHz
|
4 | Int. RC Osc. 2 MHz
|
5 | Int. RC Osc. 3 MHz
|
6 | Int. RC Osc. 4 MHz
|
7 | Ext. RC Osc. - 0.9 MHz
|
8 | Ext. RC Osc. 0.9 - 3.0 MHz
|
9 | Ext. RC Osc. 3.0 - 8.0 MHz
|
10 | Ext. RC Osc. 8.0 - 12.0 MHz
|
11 | Ext- Low-Freq. Crystal
|
12 | Ext- Crystal/Resonator Low Freq.
|
13 | Ext- Crystal/Resonator Medium Freq.
|
14 | Ext- Crystal/Resonator High Freq.
|
Welche soll ich im Falle des Quarzes nehmen?
Was bedeutet RC?
/* Ich habe gehört, dass per Default der interne Takt des
Mikrocontrollers eingestellt sein soll. Das scheint aber nicht (mehr) so
zu sein. Ich habe noch nie in meinem Leben ein Fusebit gesetzt oder
geöscht. Also habe ich das auch nicht aus versehen oder in Routine
getan. */
Ich habe mal ein Bild von meinem Aufbau gemacht. Vielleicht habe ich ja
dort schon einen Fehler gemacht! (2. - 4. Bild)
Ich weiß zwar nicht, was man daran falsch machen kann, aber ich dachte
mir: erstmal alles liefern was man hat, bevor einer nachfragen muss.
Mal so blöde gefragt, kann man eigentlich einen Quarz falsch herum
einsetzen?
Vielen Dank und Gruß
BrEin