Forum: Mikrocontroller und Digitale Elektronik [ASM] Attiny13 INT0 Interrupt im Simulator nur sporadisch


von Marcel B. (gigi)


Lesenswert?

Hey, ich wollte mal Interrupts ein bisschen verinnerlichen
und habe dann folgendes Programm geschrieben.

Allerdings bleibt er bim simulieren mit F10 im loop,
aber mit f5 springt er nach 17 "clocks" bzw ticks direkt in
die Instruktion o0.

Habe schon versucht während der Simulation das Interrupt Flag
im GIFR (Bit 6) zu ändern, ebenfalls den PINB1, aber das hat
auch nicht gefruchtet.

Ich nutze Atmel Studio 6.1

Hat da jemand ne Erklärung für, oder kann mir jemand einen Tipp geben ?

1
.nolist
2
.include "tn13def.inc"
3
.list
4
5
.org 0x000
6
       rjmp init
7
.org INT0addr                 ; External Interrupt0 Vector Address
8
       rjmp intvec                  ; IRQ0 Handler
9
        
10
 init:
11
 .def tmp = R16 ; GeneralPurposeRegister
12
13
 ldi r16, 0x1D  ;PB1 Transistor(Relais/Motor), PB2 LEDGrün, PB3 LEDGelb, PB4 LEDRot
14
 out DDRB, r16  ; Schreibe PB's nach DDRB
15
 sbi PORTB, (1<<PB1) ; Pullup -> Taster zieht nach GND/Low
16
 ldi r16,0x40   ; Für INT0-Bit (6)
17
 out GIMSK, r16 ; Enable INT0
18
 sei
19
 rjmp loop
20
21
loop:
22
nop
23
rjmp loop
24
25
intvec: 
26
sbi PORTB, (1<<PB2)
27
reti

Vielleicht OT, aber nicht wert ein neues Thema zu eröffnen.
Sind die Operanden bei sbi (1<<DDRx) begrenzt ?

Ab DDRB4 gibts immer einen "Out Of Range Error"
Ebenfalls bei sbi da gibts ab PORTB4 bei mir auch einen
Out of Range Error.



LG,
M. Berghaus

von spess53 (Gast)


Lesenswert?

Hi

>Vielleicht OT, aber nicht wert ein neues Thema zu eröffnen.
>Sind die Operanden bei sbi (1<<DDRx) begrenzt ?

Ja. SBI verwendet Bitnummern (0..7). Also nichts shiften.

Syntax:

SBI A,b    0 ≤ A ≤ 31,   0 ≤ b ≤ 7

MfG Spess

von Marcel B. (gigi)


Lesenswert?

Achsooo, das wusste ich nicht, danke Dir.

von spess53 (Gast)


Lesenswert?

Hi

>Achsooo, das wusste ich nicht, danke Dir.

Zum nachsehen:

http://www.atmel.com/Images/Atmel-0856-AVR-Instruction-Set-Manual.pdf

MfG Spess

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.