hallo ich hab probleme mit dem timer0. im avrstudio-simulator läufts perfekt. auf den ATmega168 gespielt und nix funktioniert. möglicherweise ne fusebit sache? Der Atmel soll mit dem 7.3728MHz Crystal laufen und macht es nich. HILFE, schon zwei Tage versaut...
Also mit dem Programm geht ganz sicher nichts an und wieder aus. Was soll das?
Immerhin, PIND6 und PIND7 sind als Ausgang initialisiert und gehen auf "High"...... Wo ist denn die Timerinitialisierung ???? mhh.......
ldi temp, 0x00 out TCCR0A, temp ldi temp, 0x01 out TCCR0B, temp ldi temp, 0x00 out TCNT0, temp ldi temp, 1 << TOIE0 ; TOIE0: Interrupt bei Timer Overflow sts TIMSK0, temp sei ...dachte ich
... TCCR0B hab ich auf 0x05 für Teiler 1024 gestellt, zusammen mit dem dekrement von count sollte ca. 1s rauskommmen, sollte...
Hi Interruptfreigabe Befehl "sei" gehört nicht in den Interrupt. Das Interrupt Flag wird mit reti gesetzt.
Ich habe deinen Code bizzle getunt. Versuchs mal damit. Mir gefällt das springen ausm Interrupt(BRNE) nicht. loop: rjmp loop timer0_overflow: ;sei dec count cpse count,0x00 ;-> reti ;brne loop call LED_aus reti
> Das Interrupt Flag wird mit reti gesetzt.
Du meinst die Interruptroutine sollte in der Art aussehen:
1 | timer0_overflow: |
2 | dec count |
3 | cpi count,0x00 |
4 | brne lreturn |
5 | call LED_aus |
6 | lreturn: |
7 | reti |
Wo genau hängt die LED wie dran? Sie hätte derzeit nur an PD6 und PD7 eine Chance zu funktionieren.
@ Stefan Deine ist eindeutig die bessere Lösung. Hab's vergesse dass "cpse" nur unter Registern geht.
Danke, danke, aber geändert, geladen, getestet, LED an, aber nich aus. doch die Fuses, oder mein unvermögen? ja, PD6 und PD7 sind LED
1 | ldi temp, 0x00 |
2 | out TCNT0, temp |
Der Timer0 ist mit diesem Code angehalten. http://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer#TCCR0
1 | ;ldi temp, 0x00 ; CS00 setzen: Teiler 1 |
2 | ;out TCCR0A, temp |
3 | |
4 | ;ldi temp, 0x01 ; CS00 setzen: Teiler 1 |
5 | ;out TCCR0B, temp |
6 | |
7 | ldi temp, 0x01 ; CS02=0 CS01=0 CS00=1 => Teiler 1 |
8 | out TCNT0, temp |
Hi! Nochwas ganz wichtiges: Flagregister bei Eintritt in die ISR sichern und am Ende zurückschreiben, sonst sind böse Überraschungen sicher. Viel Erfolg, 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.