logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega8][Asm][AvrStudio]Problem z zewn. przerwaniem

tmkd 26 Wrz 2009 00:15 1262 3
REKLAMA
  • #1 7058423
    tmkd
    Poziom 11  
    Witam, mam problem z zewnętrznym przerwaniem, mianowicie testując je na symulatorze z avrstudio okazuje się że pierwsze przerwanie powoduje że funkcja obsługująca je dwa razy się wywołuje a następnie powrót następuje pod adres 0x0, a nie do miejsca w którym wystąpiło przerwanie. Poniżej zamieszczam kod. Proszę o pomoc.
    
    .nolist
    .include "m8def.inc"
    .list
    
    .def tmp=R17 
    ;przeniesienia  przerwan
    ldi tmp,(1<<IVCE)
    out GICR,tmp
    ldi tmp,(1<<IVSEL)
    out GICR,tmp
    ;wlaczenie przerwan
    ldi tmp,(1<<INT0)
    out GICR,tmp
    ldi tmp,0xF
    out MCUCR,tmp
    sei
    
    loop:
    ldi tmp,0x0
    rjmp loop
    
    
    .org 0xc01
    rjmp EXT_INT0;ext interrupt 1
    EXT_INT0:
    
    RETI
    
  • REKLAMA
  • REKLAMA
  • Pomocny post
    #3 7058711
    _Robak_
    Poziom 33  
    Dokladnie, musisz ustawic stos. U mnie struktura wygladala tak
    
    .include "m8def.inc"
    
    .org 0x00					
    	 rjmp reset					
    
    RESET:
    
    	ldi 	R16,low(RAMEND)	
    	out		SPL,R16		
    	ldi 	R16,high(RAMEND)	
    	out 	SPH, R16	
    
    main: 	
    
    rjmp main
    
    
  • #4 7059382
    tmkd
    Poziom 11  
    Dzięki pomogło.
REKLAMA