Probier mal den CODE für AVR Studio 4.
Dein Code schaltet zwar Portb kurz ein aber dann sofort wieder aus!
Der Interrupt wird also durchlaufen, nur Du merkst ausser einem sehr kurzen Impuls an PORTB nichts davon. Dein Interrupt wird bei einer Quarzfrequenz von 4MHz alle 512 µsec aufgerufen, was einer Frequenz von ca. 1000 Hz entspricht.
Ich hab auch noch die verwendeten Register auf dem Stack gesichert.
PORTB,3 has Du anscheinend mit einer Sonderfunktion belegt, der ist bei mir dauerhaft 0 im simulator!
Code:
.include "m8def.inc"
;------------------------------------------------------------------------
;Reset and Interrupt vector ;VNr. Beschreibung
;Start, Power ON, Reset
;-----------------------------------------------------------------------
.cseg
.org 0
rjmp reset
.cseg
.org 3
rjmp interrupt
reset: ldi r16,low(RAMEND)
out SPL,r16
ldi r16,high(RAMEND)
out SPH,r16
ldi r16,0b11111111
out DDRB,r16
ldi r16,255 ;compare value
out OCR2,r16
ldi r16,0b00100010 ;CTC - PRS 8
out TCCR2,r16
ldi r16,0b10000000 ;Interrupt enable
out TIMSK,r16
sei ;global int. enable
ldi r17,0b00000000
ldi r18,0b11111111
;Hier Init-Code eintragen.
;------------------------------------------------------------------------
mainloop: wdr
rjmp mainloop
interrupt:
;toggle Port B
PUSH r16
IN R16,SREG
PUSH r16
PUSH r18
LDI r18,0xFF
In r16,PORTB
EOR r16,r18
out PORTB,r16
POP r18
POP r16
OUT SREG,r16
POP r16
reti
Lesezeichen