Verständisfragen zu Quarzen und der Taktfrequenz

Gast #4642126
Lesenswert?

Hallo liebe Experten,

zunächst einmal vorweg, ja ich habe mich bereits durch das Internet 
geklickt, aber nie so recht eine kompakte Antwort gefunden.

Dann zu meiner Hardware/Software (einfach der Komplettierung halber)
1. Als Board benutze ich den Ateval von ehajo (der bestens über ISP 
funktioniert)
2. Betriebssystem ist in meinem Fall Win10 x64
3. Entwicklungsumgebung ist das Atmel Studio 7
4. Mein (momentaner) uC ist der ATtiny45


So nun zu meinen Fragen bei denen ich eigentlich nur um ein "ja" oder 
ein "nein, weil" bitte.
1. Die Zeile
1
 #define F_CPU [WERT]UL
 hat auf die physikalische Taktfrequenz des uC keine Auswirkung?
2. Der interne Oszillator liefert immer 8MHz? (Abgesehen vom Komp-Mode 
zum ATtiny15)
3. Die Taktrate des Gesamstsystems kann (bei Verwendung des internen 
Oszillators) über OSCCAL, CLKPR und die CKDIV8-Fuse angepasst werden?
4. WD. Osc und PLL Clock sind auch interne Taktgeber die "alternativ" 
zum internen Oszillator genutzt werden können?

Und abschließend noch zu ein paar tatsächlichen Fragen
1. Was ist der Unterschied zwischen normalen Quarz und Quarz Oszillator?
2. Wenn der interne Oszillator (8MHz) benutzt wird und die CKDIV8-Fuse 
gesetzt ist (Rest auf Standard) ergibt sich ein Systemtakt von 1 MHz 
(oder?).
Schreibe ich nun im Code bei
1
 #define F_CPU 8000000UL
 oder
1
 #define F_CPU 1000000UL
 ?

Vielen Dank schonmal im voraus
Michael
Gast #4642152
Lesenswert?

Aus der AVR-Libc-Dokumentation:

"The macro F_CPU specifies the CPU frequency to be considered by the 
delay macros."

>Wenn der interne Oszillator (8MHz) benutzt wird und die CKDIV8-Fuse
>gesetzt ist (Rest auf Standard) ergibt sich ein Systemtakt von 1 MHz
>(oder?).

Ja. Und F_CPU muss auf 1000000UL gesetzt werden.
#4642153
Lesenswert?

Michael Ebel schrieb:
> 1. Die Zeile #define F_CPU [WERT]UL  hat auf die physikalische
> Taktfrequenz des uC keine Auswirkung?
Richtig.

> 2. Der interne Oszillator liefert immer 8MHz? (Abgesehen vom Komp-Mode
> zum ATtiny15)
Nein. Die 8MHz sind nur nominell 8MHz, in der Praxis können sich 
Abweichungen ergeben.

> 3. Die Taktrate des Gesamstsystems kann (bei Verwendung des internen
> Oszillators) über OSCCAL, CLKPR und die CKDIV8-Fuse angepasst werden?
Ja

> 4. WD. Osc und PLL Clock sind auch interne Taktgeber die "alternativ"
> zum internen Oszillator genutzt werden können?
Ja. Sieh dir das Bild "Clock Distribution" im Datenblatt an.

> Und abschließend noch zu ein paar tatsächlichen Fragen
> 1. Was ist der Unterschied zwischen normalen Quarz und Quarz Oszillator?
Quarz: Das nackte Stück Gestein mit Elektroden daran.
Quarz Oszillator: Ein Quarz mit aktiven Bauelementen herum.

> 2. Wenn der interne Oszillator (8MHz) benutzt wird und die CKDIV8-Fuse
> gesetzt ist (Rest auf Standard) ergibt sich ein Systemtakt von 1 MHz
Ja

> Schreibe ich nun im Code bei #define F_CPU 8000000UL  oder #define F_CPU
> 1000000UL  ?
Du schreibst das, was du als Systemtakt eingestellt hast.
Gast #4642169
Lesenswert?

Schonmal danke für die vielen, schnellen und guten Antworten

Eine Folgefrage tut sich mir noch auf.
Wenn ich beispielsweise im CLKPR eine Division des Systemtakts durch 256 
einstelle läuft er dann bis dahin mit der Standard Frequenz von 1 bzw 8 
MHz oder? Und ab dem Zeitpunkt an dem ich den geänderten Wert in das 
Register eintrage dann mit 1 bzw 8 /256 MHz?
Dann wäre noch die Frage wo ich das ganze im Code hinschreiben soll?
Vor die defines und includes oder vor die main oder erst in die main?
Ich würde rein instinktiv mal sagen nach define und includes und vor die 
main, aber evtl  gibts da ja gewisse "Regeln".

Michael
Gast #4642184
Lesenswert?

Die 1 war auf die gesetzte CKDIV-8 Fuse bezogen.
Oder ist die Fuse auch nur ein Prescale?

Im Nachhinein ne doofe Frage mit der Position ja :D
Hab das grade wie ne Variablen Deklaration betrachtet facepalm

Michael

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren