Go Down

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

Testato

spetta spetta, pero' c'e' uno sketch che fa da orologio per arduino, e funziona pure, quindi nella libreria TIME ufficiale gia' esiste la funzione che stai creand tu con la tua lib ?  :smiley-eek-blue: :smiley-eek-blue:

Code: [Select]

/*
* TimeRTC.pde
* example code illustrating Time library with Real Time Clock.
*
*/

#include <Time.h>  
#include <Wire.h>  
#include <DS1307RTC.h>  // a basic DS1307 library that returns time as a time_t

void setup()  {
 Serial.begin(9600);
/*  setSyncProvider(RTC.get);   // the function to get the time from the RTC
 if(timeStatus()!= timeSet)
    Serial.println("Unable to sync with the RTC");
 else
    Serial.println("RTC has set the system time");      
*/
}

void loop()
{
  digitalClockDisplay();  
//  delay(1000);
}

void digitalClockDisplay(){
 // digital clock display of the time
 Serial.print(hour());
 printDigits(minute());
 printDigits(second());
 Serial.print(" ");
 Serial.print(day());
 Serial.print(" ");
 Serial.print(month());
 Serial.print(" ");
 Serial.print(year());
 Serial.println();
}

void printDigits(int digits){
 // utility function for digital clock display: prints preceding colon and leading 0
 Serial.print(":");
 if(digits < 10)
   Serial.print('0');
 Serial.print(digits);
}
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Michele Menniti

Lo dicevo io che finiva che ci mordevamo le chiappe con sta storia :smiley-mr-green:
Non perdiamo di vista che l'obiettivo di Leo era evitare di usare hardware esterno, stai dicendo che lo sketch che hai postato fa diventare Arduino un RTC senza quarzi esterni e quant'altro :smiley-eek-blue:? cosa cavolo dici Willy?
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Testato

prova a caricarlo e vedi, lanci la seriale e lui inizia a contare dal 1 gennaio 2000 senza null'altro attaccato  :smiley-eek-blue:
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

leo72

Beh, è normale visto che funzioni visto che usa millis()... basta dare un'occhiata al suo sorgente.
La swRTC usa invece un timer tutto suo interrupted ha la correzione per allineare il tempo calcolato al tempo reale.
E' un approccio differente ma, secondo me, molto migliore dato che non usa funzioni precostituite di Arduino ma direttamente gli interrupt.

Michele Menniti


Beh, è normale visto che funzioni visto che usa millis()... basta dare un'occhiata al suo sorgente.
La swRTC usa invece un timer tutto suo interrupted ha la correzione per allineare il tempo calcolato al tempo reale.
E' un approccio differente ma, secondo me, molto migliore dato che non usa funzioni precostituite di Arduino ma direttamente gli interrupt.

cioè è possibile usarlo mentre sul micro gira un altro software che usa la tua lib come se fosse un RTC esterno, giusto? MI pareva questo l'obiettivo iniziale.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72

Esatto.
La forza di una routine che gira in un interrupt è che è trasparente allo sketch dell'utente. Quest'ultimo può accedere al primo ma è come accedere ad un sistema chiuso.

Immagina di ordinare una pizza per telefono o di fartela in casa. Nel primo caso alzi la cornetta, fai l'ordine, poi torni a lavorare finché non suonano alla porta e te la consegnano. Nel secondo caso, sei costretto ad interrompere ciò che stavi facendo, prendere gli ingredienti, impastare la pizza e metterla in forno, dopodiché tornare periodicamente a vedere se è pronta.

Michele Menniti


Esatto.
La forza di una routine che gira in un interrupt è che è trasparente allo sketch dell'utente. Quest'ultimo può accedere al primo ma è come accedere ad un sistema chiuso.

Immagina di ordinare una pizza per telefono o di fartela in casa. Nel primo caso alzi la cornetta, fai l'ordine, poi torni a lavorare finché non suonano alla porta e te la consegnano. Nel secondo caso, sei costretto ad interrompere ciò che stavi facendo, prendere gli ingredienti, impastare la pizza e metterla in forno, dopodiché tornare periodicamente a vedere se è pronta.

Leo :smiley-fat: :smiley-fat: :smiley-fat: :smiley-fat: mi vuoi far crepare? hai notato che sono sparito 4 ore? ero tranquillo nel mio lab quando mi arriva LA TELEFONATA dell'anno "scommetto che hai dimenticato il nostro anniversario! ]:D! ]:D", «chi io? fossi matta? e come potrei, dopo SOLI 26 anni? :~ :* :smiley-sad-blue: :smiley-red: :smiley-mr-green:» Stavo giusto per venirti a prendere per andare a cena nel miglior Ristorante della zona, era una sorpresa e me l'hai guastata :smiley-mr-green: :smiley-mr-green:".
Ho rastrellato le mie figliole in fretta e furia, in 3/4 d'ora tutti tirati a lucido, minchia che mangiata, e che conto $) $) $), ora sto scrivendo sdraiato, non riesco a stare seduto, troppa compressione sullo stomaco :smiley-fat: E TU MI PARLI DI PIZZA? ]:D ]:D ]:D
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Testato

Buon anniversario  :

Leo quindi ad esempio se suo usa la Time non sui può usare millis negli scketch perché influenzerebbe anche l' orario ?

Ma come si usa questa Time per RTC esterno? Negli esempi non trovo nulla
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Michele Menniti


Buon anniversario  :

Leo quindi ad esempio se suo usa la Time non sui può usare millis negli scketch perché influenzerebbe anche l' orario ?

Ma come si usa questa Time per RTC esterno? Negli esempi non trovo nulla


Grazie! aggiusta la prima frase che non è molto comprensibile a prima occhiata.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72

Condoglianze  XD XD

Cmq mi par di capire che la Time non pregiudichi l'uso di millis perché esegue dei calcoli propri. Poi non so, andrebbe visto meglio il codice.

Testato

Scusa menny ma sto scrivendo dal cellulare. Leo cmq ha capito la domanda.
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Michele Menniti


Condoglianze  XD XD

sei un vero amico  :*

@ Testato, ora l'ho capita anch'io, ci sono un paio di parole "suo" "sui" ma sono io in piena crocodile-digest e ho poco sangue al cervello :smiley-eek-blue:
Me ne vado a dormire, buonanote ragazzi, a domani XD
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Testato

Aggiungo il risultato di  un bel test, il mio RTC reale con 1307 ha perso 7 secondi in un giorno, alla faccia della precisione :)
Leo a questo punto credo che la tua libreria potrebbe davvero spaccare se si risolve la questione consumi e si aggiunge il deltaT funzionante
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

lesto

hai testato l precisione della libreria modificata che ho postato al messaggio #363
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Testato

ho smesso i test su questa libreria perche' cmq voglio chiudere questo progetto, altrimenti rimango bloccato su questo, e visto che non posso rinunciare alla batteria di nackup per ora non ci sono sbocchi.
Cioe' la questione consumi e' prioritaria rispetto alla precisione.
Se ci sono sviluppi sulla questione consumi posso ricominciare con i test
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Go Up