Habe hier aus dem Forum das unten aufgeführte Programm und will es auf
dem Tiny26 laufen lassen, nur löst der Interrupt beim Timerüberlauf
nicht aus..wo ist hier der Fehler
.include"tn26def.inc"
.def temp = r16
.def leds = r17
.org 0x0000
rjmp main
.org OVF0addr
rjmp timer0_overflow
main:
ldi temp,(RAMEND)
out SP,temp
ldi temp, 0xFF
out DDRB, temp
ldi leds, 0xFF
ldi temp, 0b00000001
out TCCR0, temp
ldi temp, 0b00000001
out TIMSK, temp
sei
loop: rjmp loop
timer0_overflow:
out PORTB, leds
com leds
reti
Ingo Laabs wrote: > Habe hier aus dem Forum das unten aufgeführte Programm und will es auf > dem Tiny26 laufen lassen, nur löst der Interrupt beim Timerüberlauf > nicht aus..wo ist hier der Fehler > ... > ldi temp, 0b00000001 > out TIMSK, temp Das Bit TOIE0 ist zu setzen. Das Makro dafür steht in "tn26def.inc" und es wird so angewendet: ldi temp, (1<<TOIE0) ; 0b00000001 out TIMSK, temp Die Werte für den Prescaler > ldi temp, 0b00000001 > out TCCR0, temp habe ich nicht kontrolliert. Vom Sourcecode her könnte dort das gleiche Problem vorliegen. Lässt man die 0b00000001 dort stehen und simuliert man mit 4 Mhz im AVR Studio, geht PORTB nach 68,25 µs dauerhaft auf HIGH.
bewirkt den aber: ldi temp, 0b00000001 out TIMSK, temp und: ldi temp, (1<<TOIE0) out TIMSK, temp nicht dasselbe ? in beiden Fällen wird das entsprechende Bit doch gesetzt.
Versuch doch mal einen Vorteiler von 1024. ldi temp, 0b00000101 out TCCR0, temp Bei einem Vorteiler von 1 wirste die LED´s nich einmal flackern sehen. Ansonsten probier mal Dein Programm im Simulator. Mfg, tom.
ich teste das Programm ja im Simulator nur wird bein Timerüberlauf die Interruptroutine nicht angesprungen .....und das war ja ursprünglich meine Frage. Mit dem Mega8 funktioniert die Sache im Simulator, nur wenn ich den Tiny26 im Simulator verwende nicht.
TOIEO das InterruptBit für Timer0 liegt auf bit1 im TIMSK, nicht auf bit0. Deswegen hatte der Stefan Recht. Entweder: ldi temp, (1<<TOIE0) out TIMSK, temp oder: ldi temp, 0b00000010 out TIMSK, temp Dann gehts.
ohhh..rotwerd Blick ins Datenblatt hätte wohl genügt, schätze ich. Beim Mega8 ist das TOIE0 Bit an Stelle 0 und beim Tiny26 ist es an Stelle 1 im TIMSK Register.
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.