write_integer_LCD libreria LCD_44780

11 Anni 2 Settimane fa #11 da Mauro Laurenti
Risposta da Mauro Laurenti al topic write_integer_LCD libreria LCD_44780

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.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
11 Anni 2 Settimane fa #12 da alpignolo
Risposta da alpignolo al topic write_integer_LCD libreria LCD_44780
Ho modificato la libreria ed ora funziona bene! :)
Ho letto un po' di volte la spiegazione, confesso che sono concetti un po' difficili per uno alle prime armi.
A grandi linee credo di aver capito, correggimi se sbaglio, se si usa la stessa funzione sia nel ciclo continuo che nella funzione di interrupt, utilizzando le stesse variabili quando scatta l'interrupt sovrascrive le variabili. Un po' come quando dichiaro le variabili volatile perchè vengono utilizzate nell'interrupt?
Quindi disabilitando gli interrupt nella funzione elimino questo problema e il tutto funziona correttamente.
Se faccio due funzioni con nomi diversi allora le variabili sono diverse ma c'è il problema che quella usata per gli interrupt e soggetta sia agli interrupt ad alta che a bassa priorità.
Si potrebbe risolvere usando tre nomi diversi una per il ciclo continuo , una per gli interrupt alta priorità e una per interrupt bassa priorità?(solo per capire una funzione unica è meglio)
Ho cercato un po' di informazioni sulle funzioni inline ma per il momento non ho capito molto, appena ho un po di tempo approfondisco! :)
Spero di non aver scritto qualche cavolata..

Grazie buona serata,

Andrea

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

  • alpignolo
  • Junior Member
  • Junior Member
Di più
11 Anni 2 Settimane fa #13 da Mauro Laurenti
Risposta da Mauro Laurenti al topic write_integer_LCD libreria LCD_44780
E' esatto quello che hai detto.

In gergo si dice che la funzione non e' thread safe.

Per le funzioni inline, praticamente hai che ad ogni chiamata il compilatore sostituisce in relata' il codice della funzione. Per tale ragione hai bisogno di piu' memoria (il codice e' piu' grande).
Dall'altro lato pero' guadagni in velocita' perche' non hai la chimata reale della funzione.
Inoltre lo stack non viene usato perche' in realta' no devi "ritornare" dalla funzione.

Saluti,

Mauro

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
11 Anni 2 Settimane fa #14 da firstcolle
Risposta da firstcolle al topic write_integer_LCD libreria LCD_44780
mm in questo modo però se arriva un interrupt mentre sono in un ciclo di delay devo aspettare che finisca il ciclo prima che l'interrupt venga preso in considerazione. diciamo che si perde un po' il senso dell'interrupt stesso..

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

  • firstcolle
  • Avatar di firstcolle
  • Platinum Member
  • Platinum Member
Di più
11 Anni 2 Settimane fa #15 da StefA
Risposta da StefA al topic write_integer_LCD libreria LCD_44780
in alcuni casi sei comunque costretto a disabilitare momentaneamente l'interrupt, se ad esempio stai inviando dati al display e scatta l'interrupt il display impazzisce e non scrive più le cose correttamente.
Se i ritardi sono piccoli e l'immediatezza dell'interrupt non è fondamentale, non ti accorgi di questo compromesso, altrimenti fai il ritardo in modo diverso..libreria microchip..timer..

Ad esempio se ho un orologio sveglia, poco importa se aspetto 2msec per scrivere l'orario su lcd e la sveglia suona con un ritardo di 2msec..
se invece sto implementando un frequenzimetro..magari l'interrupt mi serve precisissimo..

Ste

..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]

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

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