problema libreria delay

12 Anni 1 Mese fa - 12 Anni 1 Mese fa #1 da StefA
problema libreria delay è stato creato da StefA

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.

  • StefA
  • Avatar di StefA
  • Moderator
  • Moderator
Di più
12 Anni 1 Mese fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: problema libreria delay

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ù
12 Anni 1 Mese fa #3 da StefA
Risposta da StefA al topic Re: problema libreria delay
Ho riscontrato facendo il debug che nel caso limite, delay_ms(10000) basterebbe un "int value" per contene quel valore, però dopo si ha la variabile "reference" (e di conseguenza "mainDelay") che vale 10000*20 (freq del quarzo) = 200000.
Per contenere questo valore serve una variabile "short long" (considerando che non ci interessano i valori negativi si può utilizzare "unsigned short long" con la possibilità di valori max maggiori).
Però se si cambia il tipo di variabile soltanto per "reference" e "mainDelay" e si lascia "int value", la moltiplicazione con "delay_quartz_frequency_value" risulta errata.
Quindi bisogna dichiarare anche "unsigned short long value", bisogna cambiare anche l'intestazione della funzione nel file h in "void delay_ms (unsigned short long value);".
In questo modo sembra funzioni, ovviamente si paga con il passaggio di alcune variabili da 16 a 24 bit.
Per valori di ritardo in millisecondi inferiori ai 3000 funziona benissimo senza modifiche.

..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ù
12 Anni 1 Mese fa #4 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: problema libreria delay
Ciao StefA,
ora non e' c'e' piu' dubbio, e' un overflow della variabile interna.
Effettivamente questi sintomi "di tempi o valori anomali" dipendono da un overflow che fa ripartire la variabile da zero.

Ho risolto il problema imponendo di usare delay_ms() fino a 1000 ms, ed ho creato una nuova funzione delay_s() che richiama la funzione delay_ms(1000) n volte.

Grazie per il debug e aver condiviso il risultato!

Questo fine settimana riportero' le correzioni in una nuova release della biblioteca per C18, che ora include i commenti per Doxigen.

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 1 Mese fa #5 da StefA
Risposta da StefA al topic Re: problema libreria delay
grazie a te di dedicare tempo a cose "poco" importanti.

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 LaurentiStefA

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login