Lettura posizione cursore display 2x16 con controller 44780

12 Anni 5 Mesi fa - 12 Anni 5 Mesi fa #6 da Armando
Ciao Mauro,

Nella guida "C18 Step by Step" si legge che "Un'altra caratteristica della PORTB è quella delle interruzioni al variare dello stato logico, cioè viene generata un'interruzione se uno qualunque dei pin RB4-RB7 cambia di valore, ..."
Di fatto ho frainteso in quanto, ad essere pignoli, non è scritto "solo se uno qualunque dei pin RB-4-RB7 ..."

Da datasheet mi pare di capire che il bit in causa da controllare per rilevare interrupt su RB1 sia INT1IF.
Ad ogni modo con INT1IE=0 gli interrupt su RB1 dovrebbero essere disabilitati.
E invece continuo a non leggere da RB1 (sui fronti di salita di RB4)...

Armando
Ultima Modifica 12 Anni 5 Mesi fa da Armando.

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

  • Armando
  • Junior Member
  • Junior Member
Di più
12 Anni 5 Mesi fa #7 da Armando
Ho appena notato che la lettura da RA1 funziona; collegavo erroneamente il resistore di pull-up alla linea da 1.5V convinto che fosse quella da 5V...
Mi resta da capire, non per il caso in specie per il quale l'uso di RA1 (senza possibilità di interrupt) è ottimale, come usare uno qualunque dei pin da RB0 a RB3.
Leggerò con calma il datasheet...

Grazie!
Armando

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

  • Armando
  • Junior Member
  • Junior Member
Di più
12 Anni 5 Mesi fa #8 da Mauro Laurenti
Ciao Armando,

non ho ben capito l'ultimo messaggio.

Hai provato su RA1 senza interruzioni e funziona.
Hai uso il polling?

Non sei riuscito ad usare le interruzione INT?

Il datasheet e' comunque la risorsa ottimale per comprendere i registri e bit da impostare.

Saluti,

Mauro

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
12 Anni 5 Mesi fa - 12 Anni 5 Mesi fa #9 da Armando
Ciao Mauro,

nessun polling.
Ok, faccio un breve riepilogo...

Segnale digitale da leggere sui fronti di salita di un segnale di clock.

Ho inizialmente preferito RA1 per il segnale ed RB4 (con interrupt) per il clock.
La lettura da RA1 non ha mai funzionato...
Convinto si trattasse di un errore di codice (di impostazione dei registri), poichè il clock lo leggevo senza problemi su RB4, ho ripiegato su RB5, pin del tutto simile a RB4, (col clock sempre su RB4) dovendo però resettare (da ISR) il flag di interrupt inutile su RB5.
Così tutto ha iniziato a funzionare (non in maniera "pulita" per inutili interruzioni da ignorare su RB5).

Rinunciando momentaneamente ad RA1, ho optato (sempre col segnale di clock su RB4) per uno qualunque dei pin RB0-RB3 pensando non occorressero interruzioni sui fronti del segnale applicato a tali pin.
Mi hai poi fatto notare che i fronti su RB0-RB3 alterano un'altra flag con conseguente interruzione.

Sono tornato a rivalutare RA1 ed ho notato che mi "accanivo" a collegare male il resistore di pull-up esterno (su linea di 1.5V scambiata erroneamente per una da 5V)... :evil:

Armando

P.s. Resterebbe a questo punto da sperimentare uno qualunque dei pin RB0-RB3, sporcando il codice, per imparare a gestire l'interruzione indesiderata su ciascuno di tali pin...
Ultima Modifica 12 Anni 5 Mesi fa da Armando.

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

  • Armando
  • Junior Member
  • Junior Member
Di più
12 Anni 5 Mesi fa #10 da Mauro Laurenti
Grazie per il chiarimento,

Saluti,

Mauro

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
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