Forum: Mikrocontroller und Digitale Elektronik Timer2 Mega88 Assembler


von Michael (Gast)


Lesenswert?

Hallo,

ich habe ein Problem mit dem Timer2 des Mega88.
Ich möchte das TOV2-flag auslesen, klappt aber bisher nicht.

hier die Initalisierung des Timers:
1
ldi temp, 156
2
sts tcnt2, temp                
3
ldi temp, (1<<CS22) | (1<<CS21) | (1<<CS20) ;Teiler für Timer2 einstellen
4
sts tccr2b, temp          ;Teiler für Timer2 starten

Ab hier soll das TOV2-Flag abgefragt werden, laut Simulation wird das 
Tov2-flag auch gesetzt, leider wird das Byte nicht ins Temp-Register 
übertragen.
1
w20ms:
2
 lds temp, TIFR2
3
 sbrs temp, TOV2
4
rjmp w20ms
5
 ldi temp, (0<<CS22) | (0<<CS21) | (0<<CS20)  ;Timer2 aus
6
 sts tcnt2, temp
7
 ldi temp, (1<<TOV2)        ;Timer2 zurückstellen
8
 sts TIFR2, temp

Wahrscheinlich ist es ganz einfach, aber von allein komme ich irgendwie 
nicht drauf. Ich hoffe mir kann jemand einen Tipp geben


Gruß, Jürgen

von Naja (Gast)


Lesenswert?

(1<<TOV2)

von spess53 (Gast)


Lesenswert?

Hi

Versuchs mal mit in/out statt mit lds/sts.

MfG Spess

von Christopher G. (cbg)


Lesenswert?

Ist bei mir zwar schon eine Zeit lang her, dass ich AVRs in Assembler 
programmiert habe, aber bist du dir sicher, dass du nicht OUT statt STS 
und IN statt LDS brauchst?

@Naja: SBRS erwartet als zweiten Parmaeter eine Zahl von 0 bis 7, nicht 
von 0 bis 255.

von Michael (Gast)


Lesenswert?

Vielen Dank, da habe ich wohl nicht richtig geschaut, das TOV2-Flag 
liegt noch bei 0x17. Somit muss es der In-Befehl sein

von Naja (Gast)


Lesenswert?

Meine Bemerkung war dann falsch. sbrs arbeitet ja mit den Bitnummern, 
nicht mit einer Maske.

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
Noch kein Account? Hier anmelden.