welchen Takt hab ich denn nu? :/

Gast #1703536
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.
#1703548
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.
Gast #1703550
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.
Gast #1703600
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.
Gast #1703617
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

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