Hallo leute könnt mir sagen warum er nicht genau bis eine sekunde zählt und ein interrupt gibt wenn diese sekunde fertig ist????Was ist falsch und wie soll ich es dann machen oder ändern??? ;Interrupt vom Timercounter 1 overflow der alle sekunden einschalten soll ;------------------------------------------------------------------- .org 0x008 rjmp lop ;Initialisieren des Timers und deklarieren wenn interrupt soll starten ;----------------------------------------------------------------------- INIT: ldi TEMP,0b00000000 out TCCR1A,TEMP ldi TEMP,0b00000100 out TCCR1B,TEMP ldi TEMP,0b00000100 out TIMSK,TEMP
Poste doch mal das ganze Programm und gib die Quarzfrequenz und den uC an. Zählt der gar nicht, viel zu schnell/langsam, oder weicht er geringfügig von einer Sekunde ab?
es ist ein ATmeg8 und die quarzfrequenz beträgt 16Mhz!! der programm ist jetzt ganz dabei!! Danke!! Warte auf antwort vielen dank noch
Also 1. hast du einen Mega16 eingebunden, 2. musst du den Output-Compare-Interrupt von Timer 1 (16 bit) benutzen, 3. den CTC-Modus für den Timer 1 einschalten. Lies dir das Datenblatt hierzu nochmal durch, dort ist alles gut beschrieben.
ja bin ich einverstanden aber verstehe nicht wie man den Output-Compare-Interrupt von Timer 1 (16 bit) benutzen,und wie man den CTC-Modus für den Timer 1 einschaltet. könnte jemanden mir das zeigen,wie ich das mache!!!
Datenblatt Mega8 Seite 99: CTC-Modus ist das Bit 3 im TCCR1B (WGM12). Mit TIMSK bit 4 ist der Output-Compare-INT eingeschaltet. In TCCR1B CS10 und CS12 einschalten (Teiler /1024) um den Timer zu starten, OCR1AH mit 0x3d und OCR1AL mit 0x08 beschreiben (15624). Den Globalen INT einschalten (SREG Bit I) und es läuft! Ich hab's in einem vorigen Thread von dir in C schon beschrieben.
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.