Forum: Compiler & IDEs Verständnisproblem: wo wird CPU-Takt eingestellt?


von Alexander S. (knut740)


Lesenswert?

Hallo

Wo stellt man eigentlich den CPU-Takt ein?
(ich benutze ATmegaxxx und als IDE WinAVR)

Im Makefile, so habe ich gelernt, trägt man den Takt zwar ein, aber der 
tatsächliche Takt in der CPU wird dadurch keineswegs beeinflußt.
Im avrdude-Abschnitt vom Makefile kann ich aus den avrdude-flags aber 
auch nicht erkennen, daß die CPU-Frequenz eingestellt wird.

Wenn man dagegen das Programm via AVR-Studio-4 in den µP überträgt, kann 
man wenigstens mit SUT_CKSEL einstellen, ob der interne Takt oder der 
ext crystal osz verwendet werden soll.

Bei den ext crystal osz. darf man doch wohl nur die Frequenz des 
tatsächlich vorhandenen Quarzes anwählen? Was macht dann jemand mit 
einem 16-MHz-Quarz?
Ziemlich unklar ist mir, was die startup time xk und die nachfolgenden 
ms bedeuten.

Gibt es irgendwlche Beschreibungen zu diesm Problem?

mfg
Alexander

von Silvan K. (silvan) Benutzerseite


Lesenswert?

Der CPU-Takt hängt vom verwendeten Quarz ab. Das, was du im Makefile 
einträgst ist die Geschwindigkeit, die beim Compilieren als Wert benutzt 
wird (falls benötig, z.B. für delays). Des Weiteren wird die 
Geschwindigkeit durch den Vorteiler bestimmt. Den kannst du in den so 
genannten Fusebits einstellen (hast du scheinbar schon entdeckt)

von Alexander S. (knut740)


Lesenswert?

was Du schreibst, bestätigt meine Vorurteile.

Mit AVRStudio kann ich also nur wählen, ob interner Takt oder externer 
Quarz benutzt werden soll. Und letzterer taktet so, wie er gebaut ist.

Wenn man es langsamer möchte, sind dann 0,9-3, 3-8 und 8 MHZ von 
SUT_CKSEL die Vorteilermöglichkeiten, die  Du meinst?

Und was ist mit startup times und den ms?.
Vermute ich richtig, daß man vor der Benutzung von avrdude / pn erstmal 
via AVRStudio die CPU-Frequenz passend einstellen sollte?

mfg
Alexander

von Silvan K. (silvan) Benutzerseite


Lesenswert?

Was willst du eigentlich für einen Controller Programmieren? Es gibt für 
jeden unterschiedliche Einstellungsmöglichkeiten.
SUT_CKSEL klingt eher nach ext. Taktquelle (sorry, bin selbst noch 
Anfänger. Ich guck das sofort nach)

von Gastofatz (Gast)


Lesenswert?

>Und was ist mit startup times und den ms?.

Was es damit auf sich hat findest Du auch im Datenblatt erklärt. Der 
Abschnitt heißt "Clock Startup Sequence". Schon gelesen? :-)

von Alexander S. (knut740)


Lesenswert?

Gastofatz schrieb:
>>Und was ist mit startup times und den ms?.
>
> Was es damit auf sich hat findest Du auch im Datenblatt erklärt. Der
> Abschnitt heißt "Clock Startup Sequence". Schon gelesen? :-)

Nein, weil ich nicht wußte, wo ich was suchen sollte. Ich hjole es nach.
mfg

von Silvan K. (silvan) Benutzerseite


Lesenswert?

1
The various choices for each clocking option is given in the following sections. When the CPU
2
wakes up from Power-down or Power-save, the selected clock source is used to time the start-
3
up, ensuring stable Oscillator operation before instruction execution starts. When the CPU starts
4
from reset, there is as an additional delay allowing the power to reach a stable level before com-
5
mencing normal operation.
(ich hoffe du kannst Englisch)

Das beantwortet (hoffentlich) deine Frage nach den startup times.
(umfangreiche Tabellen und viele weitere Informationen zum Setzten der 
Fuses findest du im jeweiligen Datenblatt deines Controllers!)

von Silvan K. (silvan) Benutzerseite


Lesenswert?

mist, zu langsam

von Rolf Magnus (Gast)


Lesenswert?

Alexander Schmeil schrieb:
> Mit AVRStudio kann ich also nur wählen, ob interner Takt oder externer
> Quarz benutzt werden soll. Und letzterer taktet so, wie er gebaut ist.

Je nach Prozessor (den du immer noch nicht verraten hast), gibt es noch 
weitere Vorteiler. Manche haben nur die CKDIV8-Fuse, mit der der Takt 
durch 8 geteilt werden kann, unabhängig davon, was Taktquelle ist, 
andere haben auch andere Taktteiler. Und dann gibt es noch welche, die 
mehrere RC-Oszillatoren haben, die mit unterschiedlichen Frequenzen 
laufen.
In der Appnote AVR054 gibt es eine Liste der verschiedenen Versionen von 
internen Oszillatoren. Du mußt dann schauen, welche dein Prozessor hat.

Per Default ist es übrigens normalerweise immer so eingestellt, daß ein 
Takt von 1 Mhz oder die diesem nächstelegene Option anliegt.

> Wenn man es langsamer möchte, sind dann 0,9-3, 3-8 und 8 MHZ von
> SUT_CKSEL die Vorteilermöglichkeiten, die  Du meinst?

Die dienen dazu, den Prozessor an die Frequenz des Quarzes anzupassen. 
Du wählst die, je nachdem, in welchem dieser Bereiche dein Quarz liegt.

> Und was ist mit startup times und den ms?.

Das ist die Zeit, die du dem Oszillator zum Einschwingen gibst, bevor 
der Prozessor losläuft.

> Vermute ich richtig, daß man vor der Benutzung von avrdude / pn erstmal
> via AVRStudio die CPU-Frequenz passend einstellen sollte?

Die kannst du auch in avrdude selbst einstellen.

von gass (Gast)


Lesenswert?

dann nutz doch einfach AVR studio als oberfläche
so schlecht isses nun auch wieder nicht
wer sich mal nach brauchbaren tools für ARM umsieht weiß was ich meine

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Rolf Magnus schrieb:
> Manche haben nur die CKDIV8-Fuse, mit der der Takt
> durch 8 geteilt werden kann, unabhängig davon, was Taktquelle ist,
> andere haben auch andere Taktteiler.

Die CPUs, die eine CKDIV8-Fuse haben, haben auch alle einen programmier-
baren Taktteiler (CLKPR).  Die Wirkung der CKDVI8-Fuse besteht dabei
ausschließlich darin, die Reset-Vorbelegung des CLKPR von 1:1 auf 1:8
umzustellen, aber man kann das dann in jedem Falle zur Laufzeit noch
ändern.

Ältere AVRs haben sowas aber nicht, bei denen gab es dann auch mehrere
verschiedene RC-Oszillatoren (statt nur eines einzigen, der mit 8 MHz
läuft).

von Alexander S. (knut740)


Lesenswert?

Rolf Magnus schrieb:
> Je nach Prozessor (den du immer noch nicht verraten hast),

Es handelt sich um einen ATmega 644

Gruß
Alexander

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.