- Messaggi: 45
- Ringraziamenti ricevuti 0
Interrupts
8 Anni 2 Settimane fa #26
da Guido72
Risposta da Guido72 al topic Interrupts
Salve Ettore,
si , mi sono confuso tra MPLAB e XC8 .
Il return è stato poi rimosso...
Oggi ho eseguito un test con un interrupt ma qualcosa non mi convince.
La routine dell'interrupt non fà altro che incrementare una variabile conteggio++ ogni qualvolta INT1IF==1 e RB1==1 (stesso pin). Il main , gestisce le varie configurazioni ed il while il solo LCD.
Il Pic conta ma , sembra che perda qualche impulso.
Gli impulsi provengono da un generatore di segnali ad una freq max di 1.2Khz. Verifico il conteggio con un frequenzimetro Kontron con funzione di contaimpulsi.
Il pic tende ad accumulare un ritardo di circa 50 impulsi ogni 30000 circa.
Il tutto sembra essere legato alla frequenza. A frequenze pi basse tiene il passo.
Con un Xtal da 20Mhz non dovrei avere problemi.
Forse vi è un problema con il software ma , ripeto, è minimalista e senza istruzioni bloccanti quali delay ecc..
Consigli ?
Guido
si , mi sono confuso tra MPLAB e XC8 .
Il return è stato poi rimosso...
Oggi ho eseguito un test con un interrupt ma qualcosa non mi convince.
La routine dell'interrupt non fà altro che incrementare una variabile conteggio++ ogni qualvolta INT1IF==1 e RB1==1 (stesso pin). Il main , gestisce le varie configurazioni ed il while il solo LCD.
Il Pic conta ma , sembra che perda qualche impulso.
Gli impulsi provengono da un generatore di segnali ad una freq max di 1.2Khz. Verifico il conteggio con un frequenzimetro Kontron con funzione di contaimpulsi.
Il pic tende ad accumulare un ritardo di circa 50 impulsi ogni 30000 circa.
Il tutto sembra essere legato alla frequenza. A frequenze pi basse tiene il passo.
Con un Xtal da 20Mhz non dovrei avere problemi.
Forse vi è un problema con il software ma , ripeto, è minimalista e senza istruzioni bloccanti quali delay ecc..
Consigli ?
Guido
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Guido72
- Autore della discussione
- Senior Member
Riduci
Di più
8 Anni 1 Settimana fa #27
da ettore
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Risposta da ettore al topic Interrupts
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- ettore
- New Member
Riduci
Di più
- Messaggi: 14
- Ringraziamenti ricevuti 2
8 Anni 1 Settimana fa #28
da Guido72
Risposta da Guido72 al topic Interrupts
Al momento stò valutando come sfruttare il pic.
L'utilizzo del timer l'ho preso in considerazione non solo per aggiornare il display con intervalli stabiliti ma anche
per il conteggio.
Il problema principale è che al pic dovrebbero arrivare segnali da 2 encoders percui, mi ritrovo a dover gestire 2 conteggi (con relativi interrupts) e altri 2 interrupts per la gestione della direzione.
L'eventualità che qualche evento non venga identificato per via del fatto che uno o più interrupts possono verificarsi
contemporaneamente non è affatto remota poichè gli encoders sono indipendenti.
Si potrebbero usare 2 interrupts ad alta priorità per il conteggio e due a bassa periorità per l'inversione ma resterebbero , credo, i problemi di concomitanza.
Riguardo la perdita del conteggio di cui scrivevo nel post precedente , credo sia stata risolta. In pratica il contatore Kontron aveva il trigger sul conteggio settato improriamente. Ho sfruttato un secondo pic per generare un numero predeterminato di impulsi ed ho verificato che il tutto conta bene.
Guido
L'utilizzo del timer l'ho preso in considerazione non solo per aggiornare il display con intervalli stabiliti ma anche
per il conteggio.
Il problema principale è che al pic dovrebbero arrivare segnali da 2 encoders percui, mi ritrovo a dover gestire 2 conteggi (con relativi interrupts) e altri 2 interrupts per la gestione della direzione.
L'eventualità che qualche evento non venga identificato per via del fatto che uno o più interrupts possono verificarsi
contemporaneamente non è affatto remota poichè gli encoders sono indipendenti.
Si potrebbero usare 2 interrupts ad alta priorità per il conteggio e due a bassa periorità per l'inversione ma resterebbero , credo, i problemi di concomitanza.
Riguardo la perdita del conteggio di cui scrivevo nel post precedente , credo sia stata risolta. In pratica il contatore Kontron aveva il trigger sul conteggio settato improriamente. Ho sfruttato un secondo pic per generare un numero predeterminato di impulsi ed ho verificato che il tutto conta bene.
Guido
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Guido72
- Autore della discussione
- Senior Member
Riduci
Di più
- Messaggi: 45
- Ringraziamenti ricevuti 0
8 Anni 1 Settimana fa #29
da Claudio_F
Risposta da Claudio_F al topic Interrupts
Ciao, sto seguendo le varie risposte, in questo periodo non ho molto tempo per fare delle prove. Leggendo il tuo ultimo post, mi è venuto un pensiero: I due segnali di cui devi contare gli impulsi e determinare la direzione, si riferisce ad un encoder digitale con codice gray?
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Claudio_F
- Premium Member
Riduci
Di più
- Messaggi: 130
- Ringraziamenti ricevuti 11
8 Anni 1 Settimana fa #30
da Guido72
Risposta da Guido72 al topic Interrupts
Salve Claudio,
francamento non conosco il codice di cui parli.
Sono segnali in quadratura.
Guido
francamento non conosco il codice di cui parli.
Sono segnali in quadratura.
Guido
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Guido72
- Autore della discussione
- Senior Member
Riduci
Di più
- Messaggi: 45
- Ringraziamenti ricevuti 0
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.
Login
© LaurTec 2006 - 2024