Forum: Mikrocontroller und Digitale Elektronik welchen Takt hab ich denn nu? :/


von hansi mausi (Gast)


Lesenswert?

Hi,

Ich habe mich grade mal gefragt was ich in meinen Programmen eigentlich 
für einen Takt habe wenn im AVR mein SUT_CKSEL auf:

Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 64 ms

gestellt ist und ich in meinen Programmen immer

#ifndef F_CPU
#define F_CPU 8000000L
#endif

angebe?!?  Ist das ganze nun auf 8MHz oder auf 16Mhz getaktet?

Müsste ich nicht den Fuse auf 8MHz intern stellen wenn ich auch nur 8MHz 
nutzen möchte? Ich frage deswegen weil meine ganzen Progs nun mit 
"falschen" Werten laufen würden. PWM / ADC etc.

Hat einer Rat? ...

Gruß H.M.

von spess53 (Gast)


Lesenswert?

Hi

>Ist das ganze nun auf 8MHz oder auf 16Mhz getaktet?

Mit der Frequenz deines Quarzes. Aber den kennst nur du.

MfG Spess

von Uwe .. (uwegw)


Lesenswert?

Wenn du auf Ext. Crystal stellst, läuft der AVr mit der Frequenz des an 
XTAL1/XTAL2 angeschlossenen Quartzes. Sinnvollerweise sollten man F_CPU 
dann ebenfalls auf diesen Wert setzen. Der Wert von F_CPU hat aber 
KEINEN Einfluss auf die Taktfrequenz. Er macht sie nur dem Programm 
bekannt.

von Testfall (Gast)


Lesenswert?

Der Wert F_CPU wird meist zur Berechnung von diversen Werten bei PWM und 
anderen zeitkritischen Routinen benutzt. Beispielsweise um 
herauszufinden, wie lange gewartet werden muss, bis eine Sekunde 
vergangen ist. (okay, das wäre lange :-)).
Was du da einträgst hat keinen einfluss auf den Takt des 
Mikrocontrollers. Andersrum wird ein Schuh draus: Du musst in dieser 
Konstanten den Takt (Den du bei den Fuses einstellst) in Hz eintragen, 
damit dein programm auch weiß, wie schnell es ist.

von Testfall (Gast)


Lesenswert?

Sorry, war drei Minuten zu langsam.

von hansi mausi (Gast)


Lesenswert?

vielen Dank erstmal!

Nu denke ich habe ich auch herausgefunden wieso meine Sekunden sich 
nicht wie Sekunden anfühlen ... oh man.

Werde dann mal den Takt auf intern 8MHz stellen und an ner LED testen.

btw. ich lese immer wieder das der interne Taktgeber nicht so genau sein 
soll. Sollte man eigentlich immer einen externen nehmen oder wie macht 
ihr das in Euren Schaltungen?


Gruß h.m.

von spess53 (Gast)


Lesenswert?

Hi

>Sollte man eigentlich immer einen externen nehmen oder wie macht
>ihr das in Euren Schaltungen?

Hängt von der Anwendung ab. Ob eine 500Hz PWM mit 490 oder 510 Hz läuft 
ist uninteressant. Bei einer UART sieht das schon wieder anders aus. 
Zumindest wenn dein PC auch das empfangen soll, was dein AVR sendet. Der 
andere Aspekt ist die Frequenz. Bei den internen Oszillatoren ist im 
allg. bei 8MHz Ende der Fahnenstange (Ausnahme z.B. für Timer, AVRs mit 
PLL). Wenn du mehr brauchst, ist externer Takt angesagt.

MfG Spess

von Marcus B. (raketenfred)


Lesenswert?

Externen Quarz nimmt man meistens für:

-UART
-Andere Datenübertragung
-Uhrzeit
-Genaues Warten(also auch wieder eine Uhr)

erhebt keinen Anspruch auf vollständigkeit

aber man kann grob sagen:

Wenn man keinen externen Quarz braucht, dann lässt man ihn weg

von hansi mausi (Gast)


Lesenswert?

danke für die Antworten!

nun ist einiges klarer.


gruß H.M.

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.