Liebe Forenmitglieder, Ich habe ein kleines Problem mit dem AVR Simulator. Ich will den TIMER 1 eines ATMega 16 in den Compare Betrieb bringen und einen Interrupt bei Match A erlauben. Wenn ich nun TCCR1B und TIMSK beschreibe für die Einstellungen gibt es keine Probleme. Beim schreiben auf TCCR1A passiert gar nix. Wer übernimmt das gesetzte bit FOC1A nicht sprich der Simulator zeigt es in der IO Register Übersicht als LOW an. Entweder liegt es tatsächlich am Simulator oder ich habe in fehler im Lising : in r16,TCCR1B ori r16,1<<WGM12 | 1<<CS11 ;AVR Takt/8 + CTC modus out TCCR1B,r16 in r16,TCCR1A ori r16,1<<FOC1A ;Inerrupt auslösen bei MATCH A out TCCR1A,r16 in r16,TIMSK ori r16,1<<OCIE1A ;Compare Interrupt erlauben out TIMSK,r16 Das wäre der init Teil. Kann mir jemand Helfen. Mfg mg800
Du musst die COM-Bits entsprechend setzen, damit FOC eine Wirkung hat bzw. nach high schaltet.
Hi > in r16,TCCR1A > ori r16,1<<FOC1A ;Inerrupt auslösen bei MATCH A > out TCCR1A,r16 Bist du sicher, das FOC1A das macht, was du beabsichtigst? Datenblatt: The FOC1A/FOC1B bits are only active when the WGM13:0 bits specifies a non-PWM mode. ... A FOC1A/FOC1B strobe will not generate any interrupt nor will it clear the timer in Clear Timer on Compare match (CTC) mode using OCR1A as TOP. MfG Spess
Vielen Dank. Ich hab einfach keine Interrupt bekommen weil die Interrupts global gesperrt waren und mit FOC1A habt ihr auch recht. Es hat erst Funktion wenn WGM13 gesetzt ist. Habs wohl einfach überlesen.
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.