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.
Hi
>Ist das ganze nun auf 8MHz oder auf 16Mhz getaktet?
Mit der Frequenz deines Quarzes. Aber den kennst nur du.
MfG Spess
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.
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.
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.