Forum: Mikrocontroller und Digitale Elektronik ATmega8 Taktfrequenz


von Hansi (Gast)


Lesenswert?

hallo leute,
wie kann ich herausfinden mit welcher taktfrequenz mein atmega8 lauft?
ist es möglich die taktfrequenz einzustellen?
und für was benutzte ich F_CPU???
meine fragen kommen daher, dass ich einen timer mit overflow interrupt 
benutzte. dabei habe ich als vorteiler 16MHz/1024 gewählt. das inzerrupt 
wird ausgelöst wenn mein timer auf 255 gezählt hat. das passiert meiner 
rechnung nach 61 mal in der sekunde. also nehme ich eine zählveriable 
die bis 61 zählt um einen schönen 1Hz takt zu haben. damit möchte ich 
eine led ein und aus schalten. das eine und ausschalten dauert aber viel 
länger.
was mache ich falsch, ich bitte um hilfe.
danke Hansi
von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Die CKDIV8 Fuse löschen.
von spess53 (Gast)


Lesenswert?

Hi

>Die CKDIV8 Fuse löschen.

Der ATMega8 hat aber keine.

MfG Spess
von Hansi (Gast)


Lesenswert?

vielen dank für die antwort.
ich habe gerade gegoogelt, ckdiv8 teil meine 16Mhz durch 8. was hat das 
für eine grund eine solche beschränkung der taktfrequenz standartmäßig 
vorzunehmen.
kann ich mit gelöschtem fuse ckdiv8 meinen atmega weiterhin 
programmieren?
von Karl H. (kbuchegg)


Lesenswert?

Dein Mega8 hat keine CKDIV8 Fuse

Und der Grund ist ganz einfach: Alle AVR werden so ausgeliefert, dass 
sie mit 1Mhz laufen. Dann hat man erst mal eine Konstante. Ändern kann 
man das selber immer noch.

> ich habe gerade gegoogelt
Du sollst nicht googeln (d.h. in diesem Fall, bei anderen Sachen sollst 
du natürlich googeln) sondern ins Datenblatt schauen. Da steht alles 
drinnen, was es zu deinem Chip zu wissen gibt.

> ist es möglich die taktfrequenz einzustellen?
Natürlich ist es das. Dazu musst du aber an den Fuses drehen.

> und für was benutzte ich F_CPU???
Um deinem Programm auch mitzuteilen, wie du den Chip eingestellt hast. 
Schliesslich gibt es Berechnungen, die F_CPU benutzen und dann sollte 
der Wert dort mit dem tatsächlich verwendeten Wert übereinstimmen. Sonst 
stimmen die Berechnnungen nicht.
von oldmax (Gast)


Lesenswert?

Hi
Schau doch mal, was die Tutorials hier über Timer aussagen.
Wenn du deinen µC mit 16 MHz betreibst und einen Vorteiler von 8 
einstellst, hast du 2Mio. Takte im Timer. Betreibst du ihn im CTC Modus 
und setzt das Compare-Register auf 2000 hast du jede Millisekunde einen 
Interrupt. Nun zählst du in der ISR ein "überflüssiges" Register immer 
bis 99, dann ein weiteres bis 9. Wenn das zweite Register auf 10 zählt, 
ist 1 Sekunde vergangen. Die Beschreibung dazu findest du wie bereits 
gesagt im Tutorial.
Gruß oldmax
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.