Hallo, kann man den z-pointer auf mehrere Tabellen ausrichten? Ich habe SINNGEMÄß folgendes vor: main: ldi zl,low(tabelle1*2) ldi zh,high(tabelle1*2) loop: adiw zl,1 lpm r1,z out portb,r1 rjmp loop timer0_interrupt: ldi zl,low(tabelle2*2) ldi zl,high(tabelle2*2) adiw zl,1 lpm out portb,r0 ldi zl,low(tabelle1*2) ldi zh,high(tabelle1*2) reti tabelle1: .db 1,2,3,4,5,6,7,8 tabelle2: .db 23,234,34,44,90 Ich habe auh außerhalb der interruptroutine versucht den pointer auf die 2. Tabelle auszurichten, klappt auch nicht. Geht das generell nicht? Gruß, Mark_mit_k
Klar geht das, du solltes aber in der ISR sowohl SREG als auch ZH/ZL sichern und wieder herstellen, statt den alten Startwert wieder herzustellen. ausserdem hier noch ein Schreibfehler: ldi zl,high(tabelle2*2)
Du must im Interrupt entweder andere Register als im Main nehmen oder die verwendeten Register sichern, also: xx_interrupt: push r2 in r2, sreg push r0 push zl push zh ... pop zh pop zl pop r0 out sreg, r2 pop r2 reti Peter
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.