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







Zitieren

Lesezeichen