Interrupt multipli

11 Anni 1 Mese fa #11 da StefA
Risposta da StefA al topic Interrupt multipli
i 4 pin della porta b...RB4-RB7 hanno un interrupt unico, cioè quando premi uno dei pulsanti scatta l'interrupt per la porta b ma non sai quale pulsante lo ha fatto scattare.
Per saperlo dovresti salvarti lo stato dei pulsanti e poi quando hai l'interrupt confrontarlo con l'attuale.
In alternativa puoi mettere dei pulsanti sugli interrupt esterni INT0, INT1 ecc. quelli scattano singolarmente.
Inoltre gli interrupt per pic18F4550 hanno la possibilità di essere impostati con due priorità, alta e bassa.

Ste

..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • StefA
  • Avatar di StefA
  • Moderator
  • Moderator
Di più
11 Anni 1 Mese fa #12 da firstcolle
Risposta da firstcolle al topic Interrupt multipli
esatto, nel mio esempio non sono gestiti gli interrupt INT0 INT1 ecc, ma per questi, come ti avevo scritto ieri, esiste un flag per ogni PIN da verificare (INTxIF)

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • firstcolle
  • Avatar di firstcolle
  • Platinum Member
  • Platinum Member
Di più
11 Anni 1 Mese fa #13 da bassfender
Risposta da bassfender al topic Interrupt multipli
Ciao ragazzi, stavo leggendo l'articolo di mauro laurenti sul compliatore XC8 e leggevo che per la dichiarazione degli interuppt si sono semplificate le cose, quindi non bisogna più scrivere tutto quello che è scritto sul C18 step by step ?

Io avevo visto che bisognava scrivere:

// Prototipo di funzione
void High_Int_Event (void);


#pragma code high_vector = 0x08
void high_interrupt (void) {
// Salto per la gestione dell'interrupt
_asm GOTO High_Int_Event _endasm
}

#pragma code


#pragma interrupt High_Int_Event
void High_Int_Event (void) {
// Programma per la gestione dell'interruzione
}


invece ora si fa così ? non ho trovato esempi per capire meglio:


__interrupt(low_priority) void nome_funzione_a(void) {

// gestione delle interruzioni a bassa priorità
}

__interrupt(high_priority) void nome_funzione_b(void) {
// gestione delle interruzioni ad alta priorità
}


ciao

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • bassfender
  • Senior Member
  • Senior Member
Di più
11 Anni 1 Mese fa #14 da firstcolle
Risposta da firstcolle al topic Interrupt multipli
esatto..
infatti gli esempi che ti avevo messo (in XC8) sono così...

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • firstcolle
  • Avatar di firstcolle
  • Platinum Member
  • Platinum Member
Di più
11 Anni 1 Mese fa #15 da StefA
Risposta da StefA al topic Interrupt multipli
si, adesso basta la funzione...

__interrupt(low_priority) void nome_funzione_a(void)
{
// qui scrivi tutto il codice da eseguire quando scatta l'interrupt a bassa priorità
}

la parte in verde puoi chiamarla come vuoi.

Stesso discorso per l'interrupt ad alta priorità

Ste

..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • StefA
  • Avatar di StefA
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login