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...
Gast
#513804
Was genau läuft denn nicht ???
naja, ich teste mich grad mit nem "einfachen LED an und nach 1s aus"-Programm siehe anhang durch
Gast
#513824
Also mit dem Programm geht ganz sicher nichts an und wieder aus. Was soll das?
sorry falsche datei...
Gast
#513832
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...
Gast
#513844
Hi Interruptfreigabe Befehl "sei" gehört nicht in den Interrupt. Das Interrupt Flag wird mit reti gesetzt.
Gast
#513857
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
Gast
#513866
> Das Interrupt Flag wird mit reti gesetzt.
Du meinst die Interruptroutine sollte in der Art aussehen:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
Wo genau hängt die LED wie dran? Sie hätte derzeit nur an PD6 und PD7 eine Chance zu funktionieren.
Gast
#513873
@ Stefan Deine ist eindeutig die bessere Lösung. Hab's vergesse dass "cpse" nur unter Registern geht.
Gast
#513876
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
Gast
#513884
danke männers, das klappt. einen wunderschönen tag noch und danke...
Gast
#513897
1 | |
2 | |
Der Timer0 ist mit diesem Code angehalten. http://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer#TCCR0
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
Gast
#513904
Quatsch. TCCR0 und TCNT0 verwechselt. Dummer Stefan ;-)
Gast
#514206
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
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.