Come far vedere all' inpterrup molte PORT

12 Anni 1 Mese fa #6 da Matteo Garia
Risposta da Matteo Garia al topic Re: Come far vedere all' inpterrup molte PORT
Io adotterei una semplice soluzione hardware, che credo sia l'unica possibilità

Ogni ingresso che intendi gestire in interrupt lo porti sia al pin a cui vuoi collegarlo, sia, tramite un diodo, al pin RB0/INT

quando sull'ingresso, qualsiasi esso sia, avviene il cambiamento di livello logico, si genera anche l'interrupt, e da lì puoi leggendo le porte capire quale ingresso ha generato l'interrupt. I diodi sono fondamentali per non far interferire tra loro gli ingressi

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

  • Matteo Garia
  • Avatar di Matteo Garia
  • Moderator
  • Moderator
Di più
12 Anni 1 Mese fa #7 da Guido
Ciao, una cosa non capisco attualmente l'Interrupt su RB avviene solo da RB4 a RB7, in precedenza ho provato a settare anche RB0 ma non succedeva niente, per caso devo collegare gli altri pin su RB4 con un diodo come mi hai spiegato?

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

  • Guido
  • Platinum Member
  • Platinum Member
Di più
12 Anni 1 Mese fa #8 da inx83
Ciao, non puoi ottenere un interrupt su ogni porta perche l'interrupt e un discorso hardware intrinseco del micro e non puo essere cambiata. Infatti i flag dei vari interrupt sono su dei registri e non tutte le porte li hanno.

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

  • inx83
  • Avatar di inx83
  • New Member
  • New Member
Di più
12 Anni 1 Mese fa - 12 Anni 1 Mese fa #9 da Matteo Garia
Risposta da Matteo Garia al topic Re: Come far vedere all' inpterrup molte PORT

Guido ha scritto: Ciao, una cosa non capisco attualmente l'Interrupt su RB avviene solo da RB4 a RB7, in precedenza ho provato a settare anche RB0 ma non succedeva niente, per caso devo collegare gli altri pin su RB4 con un diodo come mi hai spiegato?


L'interrupt su RB4:7 si verifica in presenza di un certo livello logico (mi pare a zero) mentre quello su RB0 si verifica sul fronte, di salita o discesa a seconda di come imposti il bit INTEDG del registro OPTION


Ovvio che solo i pin citati generano l'interrupt hardware, ma con il trucco di unire ogni pin da cui vuoi l'interrupt con un diodo ad uno dei pin citati, è poi sufficiente leggere tutte le porte nella routine di interrupt per capire quale ha generato l'evento.

Mi viene un solo dubbio: sei sicuro che ciò che vuoi fare possa esser fatto solo con gli interrupt?
Non è possibile gestire gli ingressi con altri sisemi, es. polling?

Gli interrupt sono risorse importanti di cui credo sia bene non abusare, ma usarli solo per compiti prioritari
Ultima Modifica 12 Anni 1 Mese fa da Matteo Garia.

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

  • Matteo Garia
  • Avatar di Matteo Garia
  • Moderator
  • Moderator
Di più
12 Anni 1 Mese fa #10 da Guido
Grazie per le preziose risposte , penso che mi rimane ancora un alternativa per mantenere la funzione dell' interrupt, usare una matrice di pulsanti, l'unico dubbuo è se (con la matrice) posso premere piu pulsanti contemporaneamente (per creare un accordo).

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

  • Guido
  • Platinum Member
  • Platinum Member
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