- Messaggi: 527
- Ringraziamenti ricevuti 86
Tastiera PS2 in interrupt
9 Anni 7 Mesi fa - 9 Anni 7 Mesi fa #6
da alfa75
Risposta da alfa75 al topic Tastiera PS2 in interrupt
prova ad azzerare subito dopo la sua chiamata il flag di interrupt
cosi per intendersi
if (INTCONbits.INT0IF) {
INTCONbits.INT0IF=0;
......tutto il resto del codice
cosi per intendersi
if (INTCONbits.INT0IF) {
INTCONbits.INT0IF=0;
......tutto il resto del codice
Ultima Modifica 9 Anni 7 Mesi fa da alfa75.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- alfa75
- Platinum Member
Riduci
Di più
9 Anni 7 Mesi fa #7
da firstcolle
Risposta da firstcolle al topic Tastiera PS2 in interrupt
Credo di aver capito.. ma chiedo conferma ai più esperti..
il problema potrebbe essere causato da:
- Cambio di configurazione del TRIS da ingresso a uscita all'interno della routine di interrupt (causata dallo stesso PIN)
- Disabilitazione dello stesso interrupt all'interno del ciclo di interrupt
infatti se sposto queste due righe al di fuori del ciclo di interrupt i dati vengono presi e salvati correttamente.
Può essere che cambiando la direzione del pin o disabilitando l'interrupt il ciclo di interrupt venga interrotto forzatamente???
il problema potrebbe essere causato da:
- Cambio di configurazione del TRIS da ingresso a uscita all'interno della routine di interrupt (causata dallo stesso PIN)
- Disabilitazione dello stesso interrupt all'interno del ciclo di interrupt
infatti se sposto queste due righe al di fuori del ciclo di interrupt i dati vengono presi e salvati correttamente.
Può essere che cambiando la direzione del pin o disabilitando l'interrupt il ciclo di interrupt venga interrotto forzatamente???
Si prega Accedi o Crea un account a partecipare alla conversazione.
- firstcolle
- Autore della discussione
- Platinum Member
Riduci
Di più
- Messaggi: 362
- Ringraziamenti ricevuti 39
9 Anni 7 Mesi fa #8
da alfa75
Risposta da alfa75 al topic Tastiera PS2 in interrupt
l'interrupt deve essere sempre piu "snello" possibile per evitare problemi
qui forse trovi la risposta alle tue domande...
www.settorezero.com/wordpress/la-gestion...6-pic18-pic24-dspic/
qui forse trovi la risposta alle tue domande...
www.settorezero.com/wordpress/la-gestion...6-pic18-pic24-dspic/
Si prega Accedi o Crea un account a partecipare alla conversazione.
- alfa75
- Platinum Member
Riduci
Di più
- Messaggi: 527
- Ringraziamenti ricevuti 86
9 Anni 7 Mesi fa #9
da Mauro Laurenti
Direi di No.
Cambiare il TRIS e' indipendente dalle interruzioni a meno di non avere delle interruzioni abilitate sui pin della porta d'interesse. cambiare il valore del registro TRIS potrebbe cuasare interrupt "spuri".
In particolare quando sei in un livello di interruzioni, queste sono gia' disabilitate di per se.
Puoi riattivarle permettendo interrupt annidati e permettere di darsi la zappa sui piedi...e' lo stesso bit delle impostazioni per due funzioni diverse!
Non ho visto i dettagli del codice ma qualcosa e' cambiato...
Saluti,
Mauro
Risposta da Mauro Laurenti al topic Tastiera PS2 in interrupt
Può essere che cambiando la direzione del pin o disabilitando l'interrupt il ciclo di interrupt venga interrotto forzatamente???
Direi di No.
Cambiare il TRIS e' indipendente dalle interruzioni a meno di non avere delle interruzioni abilitate sui pin della porta d'interesse. cambiare il valore del registro TRIS potrebbe cuasare interrupt "spuri".
In particolare quando sei in un livello di interruzioni, queste sono gia' disabilitate di per se.
Puoi riattivarle permettendo interrupt annidati e permettere di darsi la zappa sui piedi...e' lo stesso bit delle impostazioni per due funzioni diverse!
Non ho visto i dettagli del codice ma qualcosa e' cambiato...
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
9 Anni 7 Mesi fa #10
da firstcolle
Risposta da firstcolle al topic Tastiera PS2 in interrupt
Ciao Mauro,
in effetti come dici tu all'interno dell'interrupt gli interrupt vengono disabilitati, quindi anche se cambiassi il valore del TRIS del PIN che ha causato l'interrupt e si dovessero creare degli interrupt "spuri" non verrebbero calcolati. Il risultato però era errato...
Togliendo questo cambio di direzione del pin dal ciclo di interrupt (ovviamente disabilitando l'interrupt prima di modificare il TRIS) il tutto funziona correttamente...
in effetti come dici tu all'interno dell'interrupt gli interrupt vengono disabilitati, quindi anche se cambiassi il valore del TRIS del PIN che ha causato l'interrupt e si dovessero creare degli interrupt "spuri" non verrebbero calcolati. Il risultato però era errato...
Togliendo questo cambio di direzione del pin dal ciclo di interrupt (ovviamente disabilitando l'interrupt prima di modificare il TRIS) il tutto funziona correttamente...
Si prega Accedi o Crea un account a partecipare alla conversazione.
- firstcolle
- Autore della discussione
- Platinum Member
Riduci
Di più
- Messaggi: 362
- Ringraziamenti ricevuti 39
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.