Hallo Leute, ich habe verstehe das Berechnen der Takte bei einem ABR noch nicht ganz richtig. So ich habe einen ATMEGA32 mit 10 Mhz. Und will z.B. das er jede Sekunde einen Interrupt wirft. Dann rechne ich einfach 10 000 000/8 = 1250000 Hz 1250000/1000 Hz = 1250 Hetz Ist die Rechnung richtig? 65536 - 1250 = 64286 OCR2 = 64286 ?? Heißt das jetzt er macht in einer Sekunde 64286 Takte??
Hertz = 1/sekunde das bedeutet du musst 1/10*10^6 = 100*10^-9 oder 100usec pro Takt rechnen! Was soll das 10*10^6/8 ? soll das ein Vorteiler sein? Und wie kommst du auf /1000? Beschreib das mal ein bissel genauer!
Geiler Betreff! Ich kenne mich mit dem Kram nicht aus, aber irgendwat ist ev von der FH hängen geblieben. 8 ist Dein Grundvorteiler für den Counter? 1000 der optionale? Keine 2er Potenz?? Wenn Dein Counter aufwärts zählt, dann ist Deine Rechnung richtig. Beim Überlauf gibt es dann einen IR! Nein, Dein Counter wird 1250 mal die Sekunde hochgezählt! Hoffe, ich liege bei meinen Annahmen richtig. Gruß
Bei 10 MHz braucht der 10.000.000 Takte für eine Sekunde. Der 16-Bit-Timer kann von 0 bis 65.535 zählen. Da 10.000.000 / 65.536 knapp 153 ist, brauchst du einen Vorteiler, der größer ist als 153. Als Vorteiler stehen 1, 8, 64, 256 und 1024 zur Auswahl. 256 ist also der erste, der größer als 153 ist. Da 10.000.000 / 256 = 39.062,5 ist, brauchst du bei Vorteiler 256 für eine Sekunde 39.062 oder 30.063 Zimerticks. Für diese Berechnungen braucht man keine speziellen Formeln, es genügt zu wissen, dass Hz (Frequenz f in Hertz) die Anzahl der Takte pro Sekunde ist und wie man mit dem Dreisatz umgeht. Mit OCR2 wird da aber nix, der 16-Bit-Timer ist Timer1. Timer2 hat nur 8 Bit. ...
Am besten ist immer eine Quarzfrequenz die du mit einer zweierpotenz auf "genau" 1Hz bringen kannst. Ich habe z.b einen 4.194304 Mhz Quarz genommen. 4194304/1024 = 4096 d.h. du nimmst einen vorteiler von 1024 und zählst bis 4096 Dann hast du einen sekundentakt.
http://www.mikrocontroller.net/forum/read-2-289201.html#new hier ist nocheinmal alles beschrieben. je nach controller kannst du noch einen 2ten passenden uhrenquarz ranhaenngen und darueber dann die den timer steuern
> Am besten ist immer eine Quarzfrequenz die du mit einer > zweierpotenz auf > "genau" 1Hz bringen kannst. > > Ich habe z.b einen 4.194304 Mhz Quarz genommen. Und was macht man, wenn man außer dem Sekundentakt noch auch noch UART mit einer PC-üblichen Baudrate braucht? ;-) Jens, ist sicher 'ne gute Idee, ich denke aber, das hat noch 'n paar Wochen Zeit, jetzt sind erstmal 'n paar einfachere Dinge zu verstehen... ;-) <-- (noch'n Smilie, sicher iss sicher...) ...
Dann zählt man anstatt bis 4096 bis auf 3600. Hauptsache die Teilung mit dem Vorteiler geht auf 3686400 / 1024 = 3600 Gruß Roland
die baudraten für die pc entstehen ja auch nur durch teilung einer festen frequenz mit 2er-potenzen nicht nichts anderes. Auf den Altern Mainboards findet man noch schöne Quarze mit gebrochenen Frequenzen, heute machen das oft PLLs aus irgend einer kranken schwichenfrequenz.
ich dachte im nehme 1000 Hz für eine Sekunde. Was ich machen wollte ist ja einen genauen Takt von einer Sekunde. Mir war wichtig zu begreifen wie das ausgerechnet wird.
> Mir war wichtig zu begreifen wie das ausgerechnet wird.
Und? - Hast du's nun begriffen? Oder war mein Rechenweg zu
kompliziert?
...
Ne war sehr gut erklärt! Aber wieso das ODER? 39.062 oder 30.063 Zimerticks. Was ist der unterschied?
ja weil die Rechnung 10.000.000 / 256 = 39.062,5 nicht genau aufgeht. wegen dem ,5 musst du einmal bis 39062 und dann bis 39063 zählen, damit sich der Fehler den man macht wieder ausmittelt. Gruß Roland
> Aber wieso das ODER? > > 39.062 oder 30.063 Zimerticks. Das ist natürlich ein Tippfehler, genau wie Zimerticks. Sowas passiert, wenn man lange genug Forum liest und ständig mit Tippfehlern beschmissen wird... ;-) Es soll natürlich "39062 oder 39063 Timer-Ticks" heißen. Entscheiden musst du dich, weil in die Register nur ganze Zahlen passen, aber eigentlich ein Wert von 39062,5 gebraucht würde. Musst halt schaun, ob dein Quarz vor oder nach geht und den richtigen Wert wählen. Oder du wechselst ständig hin und her. Ich würde für eine Uhr aber den Hundertstelsekundentakt vorziehen und mit einer zusätzlichen Variable (Register) für Hundertstelsekunde arbeiten. ...
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.