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
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.