Go Down

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

lupo3000


Infatti  :)
Se vuoi mettere componenti esterni allora prendi un rtc da pochi euro ed hai anche la batteria tamponata per 5anni  :)



in effetti...mica hai tutti i torti!! XD

genny77

Ciao a tutti,
perdonate l'ignoranza ma posso usare questa libreria su arduino YUN ?

Grazie

leo72

A che ti serve questa lib su Arduino Yun dato che lato Linux hai un SO che può gestire il tempo tramite server NTP? ;)

Testato

magari per progetti non connessi ad internet ?
non tutte le reti cablate/wifi si creano per accedere ad internet  ;)

dovrebbe gia' funzionare di suo o no ? il 32u4 e' supportato
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

paolone86

ragazzi io ho un problema a tempo di compilazione come Arduino Uno e IDE 1.6.1.
Ho importato la libreria, eseguo swRTCtest ma ottengo:

In file included from swRTCtest.ino:16:0:
C:\Users\User\Documents\Arduino\libraries\swRTC/swRTC.h:524:6: error: prototype for 'byte swRTC::setClockWithTimestamp(long unsigned int, int)' does not match any in class 'swRTC'
 byte swRTC::setClockWithTimestamp(unsigned long timeT, int yearRef) {
      ^
C:\Users\User\Documents\Arduino\libraries\swRTC/swRTC.h:92:11: error: candidate is: boolean swRTC::setClockWithTimestamp(long unsigned int, int)
   boolean setClockWithTimestamp(unsigned long timeT, int yearT = 0);
           ^
Errore durante la compilazione

come mai ?
grazie in anticipo

gpb01

#1070
Mar 22, 2015, 01:55 pm Last Edit: Mar 22, 2015, 02:05 pm by gpb01
 Prima di tutto, essendo il tuo primo post, ti consiglio di presentarti QUI (spiegando quali conoscenze hai di elettronica e di programmazione) e di leggere con attenzione il REGOLAMENTO ...

... poi, perché nella 1.6.1, contrariamente alle versioni precedenti, il boolean ed il byte sono diventati due cose differenti.

Così a naso direi che ... puoi aprire i sorgenti della swRTC (swRTC.h) e sostituire dove trovi "boolean" con "byte" ...
... senza alcun "danno collaterale:smiley-roll:

Guglielmo
Search is Your friend ... or I am Your enemy !

paolone86

Prima di tutto, essendo il tuo primo post, ti consiglio di presentarti QUI (spiegando quali conoscenze hai di elettronica e di programmazione) e di leggere con attenzione il REGOLAMENTO ...

... poi, perché nella 1.6.1, contrariamente alle versioni precedenti, il boolean ed il byte sono diventati due cose differenti.

Così a naso direi che ... puoi aprire i sorgenti della swRTC (swRTC.h) e sostituire dove trovi "boolean" con "byte" ...
... senza alcun "danno collaterale:smiley-roll:

Guglielmo
Innanzitutto chiedo scusa per non essermi presentato.
L'ho fatto solo da poco...
Sostituendo tutte le variabili da boolean a byte adesso compila.
Grazie mille!

gpb01

Ottimo ...   :)
... ho comunque avvertito Leo (l'autore della libreria) che provvederà a verificare sulle sue varie librerie ed a sistemare la cosa in una prossima release ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

Testato

perché nella 1.6.1, contrariamente alle versioni precedenti, il boolean ed il byte sono diventati due cose differenti.
INteressante, alla fine sempre un byte occupano :-)

ma dove hai letto questa cosa ? nel changelog non c'e'
http://arduino.cc/en/Main/ReleaseNotes
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

gpb01

#1074
Mar 22, 2015, 05:39 pm Last Edit: Mar 22, 2015, 05:42 pm by gpb01
Non l'ho letta, se ne è discusso in un altro thread perché il codice che usa i boolean ora occupa di più (... ovvio, invece che puro C usa una classe C++ ) ed è bastato andare a vedere nel "core", file Arduino.h, come sono definiti:

Code: [Select]
#include <stdbool.h>
...
...
typedef bool boolean;
typedef uint8_t byte;


... mentre prima entrambi erano definiti come semplici uint8_t !

Guglielmo
Search is Your friend ... or I am Your enemy !

Testato

#1075
Mar 22, 2015, 10:03 pm Last Edit: Mar 22, 2015, 10:28 pm by Testato
E per quale diavolo di motivo hanno fatto una cosa del genere ?
Io lo catalogherei come Bug  :smiley-eek:
Si è creata incompatibilità con le librerie, consumo maggiore di flash, rallentamento delle operazioni, a fronte di cosa ?

Facciamo una pull request rimettendo le cose come prima   :)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

astrobeed

E per quale diavolo di motivo hanno fatto una cosa del genere ?
Io lo catalogherei come Bug  :smiley-eek:
Per allinearsi con il C/C++ dove il tipo boolean è diverso dal tipo unsigned char, la differenza è che il primo può assumere solo valore 0 o 1 mentre il secondo qualunque valore compreso tra 0 e 255.
Anche se la cosa ti sembra una cavolata ha una sua ragione di essere e ti garantisco che quella è sempre stata una bella cavolata di Arduino definire il tipo bool come unsigned char invece che come boolean, comunque presente nel avrgcc, il tipo boolean è stato introdotto nel C Ansi a partire dalla versione C90.
Il vero bug era nelle precedenti versioni del IDE dove, arbitrariamente, avevano definito bool come unsigned char, cosa che potrebbe causare problemi a run time con codice scritto in C/C++ dove viene utilizzato il tipo boolean per quello che è realmente.
Esempio pratico se in una if si aspetta che il dato boolean sia esclusivamente  0 o 1 e fa un confronto if (pippo == 1), con pippo definito bool con il vecchio sistema, e pippo ha assunto il valore '5' a causa dei calcoli la if non funziona, se pippo è un vero boolean anche se il calcolo fornisce 5 pippo diventa 1.


Usare il GOTO in C è ammettere la propria sconfitta come programmatore

astrobeed

Si è creata incompatibilità con le librerie,
L'incompatibilità è di chi ha scritto le librerie senza tenere conto del vero significato di un dato boolen :)
Usare il GOTO in C è ammettere la propria sconfitta come programmatore

PaoloP

INteressante, alla fine sempre un byte occupano :-)

ma dove hai letto questa cosa ? nel changelog non c'e'
http://arduino.cc/en/Main/ReleaseNotes

Si che c'è
Quote
ARDUINO 1.6.0rc2 - 2015.01.20

[ide]
* Reenabled speed of 38400 on serial monitor
* Improved Find/Replace dialog layout (Eberhard Fahle)
* Fixed missing .dll error on some Windows box

[core]
* Arduino "boolean" type is now mapped to "bool" instead of "uint8_t" (Christopher Andrews)

Testato

Quindi non è dalla 1.6.1 ma gia dalla 0

Ma in questo caso dove la lib di leo non funziona lui che colpa ne ha ?
- [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