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
Ultima Modifica 9 Anni 7 Mesi fa da alfa75.

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

  • alfa75
  • Avatar di alfa75
  • Platinum Member
  • Platinum Member
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???

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

  • firstcolle
  • Avatar di firstcolle
  • Platinum Member
  • Platinum Member
Di più
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/

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

  • alfa75
  • Avatar di alfa75
  • Platinum Member
  • Platinum Member
Di più
9 Anni 7 Mesi fa #9 da Mauro Laurenti
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.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
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...

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

  • firstcolle
  • Avatar di firstcolle
  • 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