Newsgroup: it.hobby.elettronica.digitale
Titolo: interrupt alta e bassa priorità

ciao a tutti,
ho la necessità di configurare in ASM un pic 18f258 gestendo entrambe e
priorità del interrupt.
Ho configurato per prima la priorità alta assegnandola al timer1. (COME
SOTTO)
e fino a qui funziona.
Ma quando cerco di configurare RB0/RB1/RB2 con interrupt esterni a bassa
priorità, icd2 mi crea un errore
Error[118]   C:\PIC\OROLOGIO\OROLOGIO.ASM 85 : Overwriting previous address
contents (0018)
Error[118]   C:\PIC\OROLOGIO\OROLOGIO.ASM 85 : Overwriting previous address
contents (0019)
Error[118]   C:\PIC\OROLOGIO\OROLOGIO.ASM 86 : Overwriting previous address
contents (001A)
Error[118]   C:\PIC\OROLOGIO\OROLOGIO.ASM 86 : Overwriting previous address
contents (001B)
Error[118]   C:\PIC\OROLOGIO\OROLOGIO.ASM 86 : Overwriting previous address
contents (001C)
Error[118]   C:\PIC\OROLOGIO\OROLOGIO.ASM 86 : Overwriting previous address
contents (001D)
Error[118]   C:\PIC\OROLOGIO\OROLOGIO.ASM 87 : Overwriting previous address
contents (001E)
Error[118]   C:\PIC\OROLOGIO\OROLOGIO.ASM 87 : Overwriting previous address
contents (001F)
Error[118]   C:\PIC\OROLOGIO\OROLOGIO.ASM 87 : Overwriting previous address
contents (0020)
Error[118]   C:\PIC\OROLOGIO\OROLOGIO.ASM 87 : Overwriting previous address
contents (0021)
Error[118]   C:\PIC\OROLOGIO\OROLOGIO.ASM 88 : Overwriting previous address
contents (0022)
Error[118]   C:\PIC\OROLOGIO\OROLOGIO.ASM 88 : Overwriting previous address
contents (0023)
Error[118]   C:\PIC\OROLOGIO\OROLOGIO.ASM 88 : Overwriting previous address
contents (0024)
Error[118]   C:\PIC\OROLOGIO\OROLOGIO.ASM 88 : Overwriting previous address
contents (0025)
ORG0
        GOTO START
;********************************************************
 org 00008h ; Interrupt vector
     MOVWF  W_TEMP
  MOVFF  STATUS, STATUS_TEMP
  MOVFF  BSR,BSR_TEMP
  CALL  INTERRUPT
  CALL VISUALIZZAZIONE_LCD
  MOVFF  BSR_TEMP,BSR
  MOVF  W_TEMP,W
  MOVFF  STATUS_TEMP,STATUS
  RETFIE
 org 00018h ; Interrupt vector
    MOVWF W_TEMP1
    MOVFF STATUS, STATUS_TEMP1
    MOVFF BSR,BSR_TEMP1
    CALL INTERRUPT1
    MOVFF BSR_TEMP1,BSR
    MOVF W_TEMP1,W
    MOVFF STATUS_TEMP1,STATUS
    RETFIE
;********************************************************
START
   MOVLW  B'11000000'
   MOVWF  INTCON
   MOVLW  B'10000001'
   MOVWF  INTCON2
   MOVLW  B'01001000'
   MOVWF  INTCON3
   BSF  PIE1,0
   BSF  IPR1,0
   MOVLW  B'10001111'
   MOVWF  T1CON
   MOVLW  B'10000000'
   MOVWF  RCON
   BSF  RCON,0
   CLRF TMR1L                   ;SETTAGGIO REGISTRO TMR1L/H  8000h
   MOVLW   B'10000000'
   MOVWF TMR1H
;*********+++++++++++*********+++++++++++++++*++++++**
 INTERRUPT    BSF PORTA,0
                            RETURN
 INTERRUPT1    BCF PORTA,0
                            RETURN
END
come se non riconosce la routine di interrupt vector dopo 00018h.
infatti se elimino la routine funziona.
Come posso risolvere questo tipo di errore.
Non vedo il motivo del xchè non deve funzionare, anche se non è assegnato
nessun interrupt la ruotine è priva di errori.
I vari registri W_TEMP ed altri sono definiti.
non comprendo, c'è qualcuno che può aiutarmi?
Bartolo Totaro

 Bartolo Totaro
L'errore dice chiaramente che stai sovrascrivendo la
memoria.
Sicuro che la ci sia spazio abbastanza tra 8h e 18h per
la prima routine?
Prova a togliere un po' di zeri davanti agli indirizzi di org,
altro non mi viene in mente. Sappiami dire il risultato.




 ha scritto nel messaggio
news:hcxMf.9931$PR2.2...@twister2.libero.it...

Ciao Valeria,
ho provato a togliere gli zeri ma ho gli stessi errori.
Temo che ci sia noscosto qualcosa di arcano che non riesco a trovare
leggendo il datasheet.



ciao Valeria,
ho provato, ma ho avuto gli stessi problemi. Credo che ci sia qualcosa di
arcano nascosto all'interno del data sheet.
ciao da
bartolo

 ha scritto nel messaggio
news:dtvaa5$127$1...@emma.aioe.org...


L'indirizzo di inizio del codice (ORG) usalo solo per i vettori statici del 
micro:
Es.
org  0   ;inizio dopo un reset generale
    goto  reset
org  4   ;vettore int
    goto v1
org  8   ;vettore int usart
    goto v2
org  12h  ;vettore int usb
    goto v3
eviti che mettendo subito il codice, se lungo, vai a sovrascivere.
Si arrangia il compilatore ad allocare le varie isr.
BYE
