hallo. ich habe einen 8Bit timer. ich kann ihn mit 4000000 Hz 500000 Hz 62500 Hz 15625 Hz 3906 Hz laufen lassen. wie könnt ich damit einen sekundentakt hinbekommen? hab das natürlich schon versucht, aber es ist keine sekunde. ich habs quasi nicht hinbekommen. drum wollt ich mal nach anderen lösungsvorschlägen fragen. gruß dieter
Den Timer in der ISR so initialisieren, das er nach 217 Takten erneut einen Interupt auslöst und mit einer Variablen 18 ISR-Einsprünge Zählen. Ergibt dann genau* eine Sekunde. 217*18=3906 Je nach Prozessor können allerdings die Einsprünge in die ISR unterschiedlich lange dauern. Daher ist diese Methode nicht 100%-ig. Ist z.B. beim PIC mit TMR0 nicht so. Steffen
ich hab nen ATmega103, also nen Mikrcontroller. ob des damit funktioniert? und gibt es denn eine 100%ige methode?
Also ich hab das letztes mal auch versucht, und hab einfach den Timer1 genommen (bei nem ATmega8) und den in den CTC Modus geschaltet, und dann hatte ich einen 100%igen 1Hz Takt. Vielleicht ne dumme Frage, aber wieso nimmst du nicht einfach den 16bit-Timer ... is einfacher? ansonsten würd ich sagen einfach den Takt im CTC Modus sauber einstellen und dann einfach über den Interrupt auf ne Zählung gehen die nach nem bestimmten Wert in das Unterprogramm geht für das du den Takt brauchst ... glaub nicht das das ne Musterlösung für das Problem ist aber funktionieren tuts allemal MFG Alexthbe
Hallo, bei 4MHz und einem 8bitTimer denke ich an folgendes: 4MHz % 256(Durchlauf des Timer) = 15625d oder 3D09h Also, jedesmal wenn der Interrupt für Timer0 kommt, eine 16Bit-Variable von 3D09h runterzählen, danach mit 0 vergleichen. Wenn gleich, dann Zeit ist rum. Dabei kann es zu einem winzigen Fehler kommen, je nach Programmierung. Ansonsten nur bis 3D08h zählen und die restlichen Schritte so erledigen(zB nop's), beim letzten NOP ist dann die Zeit korrekt rum. Die erste Version sollte aber reichen Sascha
@ sascha so wie du hab ichs gemacht. ich zähl bis 15625d nach ungefähr ner stunde läuft die "uhr" schon so eine sekunde hinterher. ich würd jett mal probieren bis 15624 zu zählen. aber wie bekomm ich raus, wieviele nop's ich machen soll?
Toggle eine Pin nach "deiner Sekunde" und halt ein Ozilloskop dran, dann kannst du es genau einstellen.
probiers im Simulator aus, dann siehst du genau, wiviele Takte/Zeit vergehen. Sollte das stimmen, kannst du einen Software-Fehler ausschliessen, liegt dann am Quarz bzw Beschaltung. Prinzipiell sind die MC-Quarze nicht sonderlich genau.
Hi! Wird wohl eher am ungenauen Quarz liegen, versuche einfach mal 15624. Dann 1 Stunde warten. Abweichung bestimmen und die Diff. zur 15625 Zeit errechnen. Die Diff./256 ist dann deine Zeit pro NOP und nur noch eine kleine Rechenübung. MFG Uwe
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.