Forum: Mikrocontroller und Digitale Elektronik Taktproblem mit dem STK500


von Fabian H. (Firma: Technische Universität Berlin) (brein)


Angehängte Dateien:

Lesenswert?

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

von HildeK (Gast)


Lesenswert?

Fabian Hoemcke schrieb:
> Welche soll ich im Falle des Quarzes nehmen?
Ext. Clock. Auf dem STK500 ist ein Oszillator aus Transistoren 
aufgebaut, der mit dem Quarz oder einem Keramikresonator arbeitet. 
Dieser Quarz ist nicht direkt an deinen 8515 angeschlossen.
> Was bedeutet RC?
RC-Oszillator, intern in den ATMegas. R=Widerstand, C=Kondensator.
Das ist der eingebaute Oszillator, der nicht besonders genau und stabil 
schwingt, aber für Anwendungen ohne exakte Zeiten, ohne Bedienung von 
UART oder anderen kritischen Interfaces kostengünstig nutzbar ist. Es 
ist schließliche egal, ober der Treppenhausautomat 35s oder 36s das 
Licht eingeschaltet lässt ...
>
> /* 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. */
Mag vom Typ abhängen. Ich hatte jedenfalls schon fabrikfrische in 
Händen, die auf einen internen RC-Oszillator programmiert waren.

>Der Jumper OSCSEL steckt auf Position eins. (Also Pin1 und Pin2)
Das selektiert den programmierbaren Oszillator vom eingelöteten 
AT90S8535 und hat nichts mit dem Quarz zu tun.
Du solltest also OSCSEL auf 2-3 stecken. (Dein Bild "Aufbau_3" zeigt 
aber schon das richtige Jumper-Setting - entgegen deiner Aussage!).
Programmiere mal die Fuse auf Extern.

> Mal so blöde gefragt, kann man eigentlich einen Quarz falsch herum
> einsetzen?
Solange du die Pins in die Fassung steckst, ist alles in Ordnung :-)

von HildeK (Gast)


Lesenswert?

Wer lesen kann, ist klar im Vorteil: Asche auf mein Haupt.
Die Hardware scheint richtig gejumpert zu sein.

Als Idee bleibt nur noch: Prüfe, ob in der SW die Oszillatorfrequenz 
korrekt bekannt gemacht wurde, denn daraus leiten sich ja die Teiler- 
und Timersettings ab.

von Fabian H. (Firma: Technische Universität Berlin) (brein)


Angehängte Dateien:

Lesenswert?

Jup, is!
Diese Einstellung setzt den F_CPU.
Habe ich schon getestet.

von Fabian H. (Firma: Technische Universität Berlin) (brein)


Lesenswert?

Also zusammen gefasst:

Es gibt vier mögliche Taktquellen.
-Der interne RC-Taktgeber des Mikrocontrollers.
-Der externe in Software generierte Takt des Onbordcontrollers. (OSCSEL 
Pos1)
-Der externe on bord generierte RC Takt (OSCSEL Pos2)
-Und den Quarz den man bestücken kann.

Ich muss gestehen, dass ich von der Variante 3 noch wie was gelesen oder 
gehört habe. Welchen Takt hat er denn?

Und wie schaffe ich es, den Takt des Quarzes auf den ATmega8515 zu 
geben?

von Fabian H. (Firma: Technische Universität Berlin) (brein)


Lesenswert?

So, wie man leider in dem anderen Thread lesen kann, war die Differenz 
meinem schlechten Programmierstil verschuldet.

Jedoch bleibt das Problem, dass ich meinen ATmega nicht mit dem Quarz 
getaktet bekomme.

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.