Forum: Mikrocontroller und Digitale Elektronik F_CPU ändern - kein Unterschied?


von Christian R. (cris06)


Lesenswert?

Hallo,

ich benutze den ATmega16 und habe einen 16Mhz Quarz dran.

Ich habe ein kleines Programm indem ich einen Timer zählen lasse mittels 
"_delay_ms(1000)", dadurch blinkt eine LED.
F_CPU ist richtig gesetzt.

Erst habe ich es mit der internen 8Mhz betrieben, funktioniert 
einwandfrei.
Dann mit dem 16Mhz-Quarz, auch ok.

Jetzt komme ich aber nichtmehr mit der Frequenz runter...

D.h. setze ich die Fuses & F_CPU auf 8Mhz läuft er doppelt so langsam.
Das selbe hab ich bei 1Mhz probiert, er ist extrem langsam.

Jemand ne Ahnung warum?

von Peter II (Gast)


Lesenswert?

Cris R. schrieb:
> Jemand ne Ahnung warum?

setzt das F_CPU auch an der richtigen stelle? Quellcode?

von Bernd S. (Gast)


Lesenswert?

definiere doppelt so langsam.... du hast 8MHz eingestellt und denkst 
dass er mit 4 MHz läuft? Wie misst du das?
Lässt du dir den Takt ausgeben?

von Christian R. (cris06)


Lesenswert?

Sorry mein Fehler, hab an zu vielen Stellen F_CPU definiert, dass ich 
einen übersehen habe.

Meine C Kenntnisse sind reicht bescheiden.
Kann man F_CPU nur an einer Stelle definieren oder muss man das in jeder 
Datei in der F_CPU benötigt wird?

Habe 1 Hauptprogramm, 1 LCD-Routine und 1 Unterprogramm und in allen 
wird mit delay gearbeitet.

von Peter II (Gast)


Lesenswert?

Cris R. schrieb:
> Kann man F_CPU nur an einer Stelle definieren oder muss man das in jeder
> Datei in der F_CPU benötigt wird?

ja, man sollte sie überhaupt nicht im quellcode stehen haben. Man sollte 
es direkt dem compiler übergeben. Ich habe es mir mir im Makefile 
eingetragen. keine Ahnung welche IDE du verwendest, es wird dort auf 
jeden Fall eine möglichkeit geben ein DEFINE festzulegen.

von Christian R. (cris06)


Lesenswert?

Ich arbeite mit AVR Studio 5

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.