- Messaggi: 376
- Ringraziamenti ricevuti 38
Come far vedere all' inpterrup molte PORT
12 Anni 8 Mesi 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
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
- Moderator
Riduci
Di più
12 Anni 8 Mesi fa #7
da Guido
Risposta da Guido al topic Re: Come far vedere all' inpterrup molte PORT
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
- Autore della discussione
- Platinum Member
Riduci
Di più
- Messaggi: 583
- Ringraziamenti ricevuti 1
12 Anni 8 Mesi fa #8
da inx83
Risposta da inx83 al topic Re: Come far vedere all' inpterrup molte PORT
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
- New Member
Riduci
Di più
- Messaggi: 14
- Ringraziamenti ricevuti 1
12 Anni 8 Mesi fa - 12 Anni 8 Mesi fa #9
da Matteo Garia
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
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 8 Mesi fa da Matteo Garia.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Matteo Garia
- Moderator
Riduci
Di più
- Messaggi: 376
- Ringraziamenti ricevuti 38
12 Anni 8 Mesi fa #10
da Guido
Risposta da Guido al topic Re: Come far vedere all' inpterrup molte PORT
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
- Autore della discussione
- Platinum Member
Riduci
Di più
- Messaggi: 583
- Ringraziamenti ricevuti 1
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.