Rotary Encoder

8 Anni 6 Mesi fa #1 da Claudio_F
Rotary Encoder è stato creato da Claudio_F
Buongiorno, sto provando vari sensori e periferiche con il PIC18F4550, ma non riesco a portarne a termine nemmeno uno. sto usando MPLAB v3.3 e XC8 v1.37 forse dipende da quello. Utilizzando le librerie LTlib 4.0.1 (DS1337) ho collegato un RTC DS3231 e fin qui tutto bene. Ora volevo usare un rotary encoder per settare l'orologio, ma anche scopiazzando codice da progetti già provati in passato non ottengo nulla. In particolare ruotando l'encoder non viene rilevata nessuna variazione. Allego il sorgente.
Allegati:

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

  • Claudio_F
  • Premium Member
  • Premium Member
Di più
8 Anni 5 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Rotary Encoder
Ho visto velocemente il codice, non ho pensato alle varie operazioni logiche che hai fatto, ma un possibile problema che vedo è subdolo.

Fai uso della funzione delay dentro la funzione delle interruzioni (ISR).

la funzione delay è usata anche dal modulo LCD fuori dalla ISR, per cui questo può creare problemi tra cui il blocco del programma. la funzione delay in gergo si chiama non thread safe.

dovresti togliere il commento nel file delay.h alla seguente riga di codice:

//#define DELAY_INTERRUPT_BLOCKING

in questo modo puoi usare la funzione delay anche nelle ISR.

rimane ancora un 1% di non thread safe visto che alcune operazioni non sono compiute in maniera atomica.

Saluti,

Mauro

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
8 Anni 4 Mesi fa #3 da Claudio_F
Risposta da Claudio_F al topic Rotary Encoder
Superato il problema dell'encoder (allego il codice)ora la domanda è questa: è possibile far lampeggiare solo una parte del display? Il problema è questo: utilizzando un modulo TRC e partendo dall'esempio del libro XC8 STEP BY STEP, vorrei ruotando l'encoder far lampeggiare, solo le ore, i minuti e l'anno e una volta selezionato, sempre tramite l'encoder ottenere l'incremento o decremento del valore mostrato e quindi trasferire questi valori come settaggio dell'RTC.
Allegati:

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

  • Claudio_F
  • Premium Member
  • Premium Member
Di più
8 Anni 4 Mesi fa #4 da alfa75
Risposta da alfa75 al topic Rotary Encoder

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.

  • alfa75
  • Avatar di alfa75
  • Platinum Member
  • Platinum Member
Di più
8 Anni 4 Mesi fa #5 da Claudio_F
Risposta da Claudio_F al topic Rotary Encoder
Ottima idea

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

  • Claudio_F
  • Premium Member
  • Premium 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