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.