Go Down

Topic: swRTC (Read 85013 times) previous topic - next topic

leo72

#975
Dec 28, 2012, 06:43 am Last Edit: Dec 28, 2012, 06:46 am by leo72 Reason: 1

nel millis() non usi l'unsigned è sott'inteso da qualche parte?

Non ho capito questa domanda. Millis() è una funzione predefinita di Arduino che restituisce un unsigned long.
Il suo valore è quindi un 32 bit senza segno.

Quote

comunque io ho sempre usato questa

Code: [Select]
unsigned long Millis_corrente = millis();  
   if(Millis_corrente - Millis_Precedente > intervallo)
   {  
     Millis_Precedente = Millis_corrente;
     ...
     ...  
   }


che direi sia la stessa, ma ovviamente non ho mai taroccato i valori per vedere che succede, quindi così anche trovandomi vicino al punto 0 non mi salta l'opearzione? parola di lupetto :) :) o devo provare  :D

ciao




E' lo stesso ma fai uso di una variabile tampone inutile, sprecando quindi 4 byte di SRAM per nulla  ;)
Se ottimizzi il controllo così:
Code: [Select]

if(millis() - Millis_Precedente > intervallo)
   {  
     Millis_Precedente = millis();
     ...
     ...  
   }

ottieni l'identica cosa.

EDIT:
pablos, potresti rispondermi sul thread del leOS?

leo72


Leo mi sorge un dubbio, ma se questo semplice trucco che pablos sta gia' usando e che tu hai descritto sul blog, cioe'
Code: [Select]
millis() - tempo_precedente > intervallo elimina il problema overflow di millis, a che serve la tua secTimer ?

Avevo scritto la secTimer diversi mesi prima di pubblicare una soluzione al problema di millis.
A parte questo, la secTimer è un contasecondi non un contamillisecondi. Per cui puoi usarla per misurare intervalli in secondi in tutti i casi in cui serve gestire questa unità di misura.

pablos

Quote
Millis() è una funzione predefinita di Arduino che restituisce un unsigned long.

va bene se è così allora tolgo la variabile di appoggio unsigned .... grazie ciao


EDIT: ho risposto al topic LEOS2
no comment

leo72


Quote
Millis() è una funzione predefinita di Arduino che restituisce un unsigned long.

va bene se è così allora tolgo la variabile di appoggio unsigned .... grazie ciao


EDIT: ho risposto al topic LEOS2

OK per entrambe.

Testato

Scusa Leo, ma vista la grandezza della notizia, hai aperto un topic tipo "il problema millis non esiste ?"
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

pablos


Scusa Leo, ma vista la grandezza della notizia, hai aperto un topic tipo "il problema millis non esiste ?"


Prima l'overflow fa schiantare il micro, poi, no quando arriva a termine riparte da 0, poi si riparte da 0 senza schiantare niente, ma i risultati ottenuti saranno falsi, ora mi dici che il problema millis non è mai esistito ahahahahhaha sta storia è peggio dei maya.

anche qui il tutorial mostra la stessa formula l'abbiamo sempre avuta sotto il naso :) http://arduino.cc/en/Tutorial/BlinkWithoutDelay

EDIT: Testato .... ti posso dare una testata?  :D
no comment

leo72

Che il contatore vada in overflow e che riparta da zero è indubbio.
Dopo questo, entra in gioco il "come" viene gestito il controllo. E' tutto lì. Se il controllo viene fatto in un certo modo, il problema non affligge il codice.

Di come fosse fatto nel BlinkWithoutDelay sinceramente non mi ero mai preoccupato  :smiley-yell:

Testato

pablos accomodati pure, ma ritengo non sia giusto riceverla.
credo siamo sulla stessa barca, anche io come te, ho avuto il terrore dell'overflow del millis, ora scopro che il problema non c'e', basta usare bene la formula.
Ti assicuro che in questi termini non si era mai espresso nessuno, infiniti commenti ci sono sul forum sul terrore millis, e lo stesso Leo ci ha scritto fiumi prima di arrivare alla soluzione definitiva.
Sottolineare che il problema non esiste credo sia cosa buona e giusta per il mondo intero  :) e Leo deve ricevere un premio nobel  :)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

leo72


pablos accomodati pure, ma ritengo non sia giusto riceverla.
credo siamo sulla stessa barca, anche io come te, ho avuto il terrore dell'overflow del millis, ora scopro che il problema non c'e', basta usare bene la formula.
Ti assicuro che in questi termini non si era mai espresso nessuno, infiniti commenti ci sono sul forum sul terrore millis, e lo stesso Leo ci ha scritto fiumi prima di arrivare alla soluzione definitiva.
Sottolineare che il problema non esiste credo sia cosa buona e giusta per il mondo intero  :) e Leo deve ricevere un premio nobel  :)


^_^

pablos

Quote
accomodati pure, ma ritengo non sia giusto riceverla.


Ueee guarda che scherzavo  :D
no comment

Testato

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

lesto

uhh nessuna citazione?  =(
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

leo72


uhh nessuna citazione?  =(

Vero vero...
La seconda soluzione me l'hai suggerita tu. Anzi, per dirla tutta, mi ha fatto presente tu via PM che si poteva evitare il casting perché usando l'ordine delle operazioni ed il secondo metodo di confronto, che poi è risultato essere quello del BlinkWithoutDelay, il problema non si poneva.

Testato

Il premio nobel non si puo' dividere in due, quindi uno ciascuno.
Leo pero' ora devi mettere ufficialmente la citazione sul tuo Blog, e' il minimo  :)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

lesto

#989
Dec 29, 2012, 02:40 pm Last Edit: Dec 29, 2012, 02:47 pm by lesto Reason: 1

Il premio nobel non si puo' dividere in due, quindi uno ciascuno.


veramente il massimo sono due persone. Per esempio i coniugi Cuirie hanno fatto a metà con un altro tizio (per un'altra ricerca), mi pare fosse quello in fisica.. ora cerco altre info (quindi 50% Curie e 50% altro tizio, perchè il premio va alla ricerca, non alle persone)

ecco il link: http://www.nobelprize.org/nobel_prizes/physics/laureates/1903/index.html
Antoine Henri Becquerel "in recognition of the extraordinary services he has rendered by his discovery of spontaneous radioactivity" (scoperta della radioattività spontanea)

Pierre Curie and Marie Curie, née Sklodowska "in recognition of the extraordinary services they have rendered by their joint researches on the radiation phenomena discovered by Professor Henri Becquerel" in pratica se ricordo bene Antonie aveva trovato la teoria, i Cuirie invece l'hanno messa in pratica, bombardando di elettroni l'argento(o l'alluminio). Nello stesso periodo Fermi in Italia, scoperto questo fatto, usò del Bario e del Radon creando una sorgente di bombardamento di Neutroni, e quindi molto più efficaci non essendo rallentati o disturbati dai campi elettrici del nucleo.
L'inizio dell'era atomica. C'è una biografia carina di Pierre de Latil su Fermi, interessante come la scienza si mischi con la politica del periodo, e di come sia stato portato avanti il progetto Manhattan.
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up