Problema RTC

Ciao a tutti, sono un novello e sto provando a capire il funzionamento del fantastico arduino. Ho montato un RTC DS1307 seguendo questo tutorial http://www.ladyada.net/learn/breakoutplus/ds1307rtc.html ma non riesco a farlo funzionare, o meglio dopo aver caricato lo sketch il risultato è questo

2165/165/165 165:165:85 since midnight 1/1/1970 = 1399160785s = 16193d now + 7d + 30s: 2014/5/10 23:46:55

Sapete aiutarmi? Grazie

Il tutorial è senz'altro fatto bene... ma tu come lo hai collegato? Hai una foto/schema del progetto? Che sketch usi? Che arduino hai ecc... Hai ricontrollato i collegamenti? La batteria tampone è collegata? Hai buttato la pasta?

In poche parole: più info ;)

Arduino UNO
Ho collegato:

  • GND dell’RTC con GND di arduino
  • 5v dell’RTC con 5v di arduino
  • SDA dell’RTC con A4 di Arduino
  • SCL dell’RTC con A5 di Arduino

questo lo sketch
#include <Wire.h>
#include “RTClib.h”

RTC_DS1307 RTC;

void setup () {
Serial.begin(57600);
Wire.begin();
RTC.begin();

if (! RTC.isrunning()) {
Serial.println(“RTC is NOT running!”);
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(DATE, TIME));
}
}

void loop () {
DateTime now = RTC.now();

Serial.print(now.year(), DEC);
Serial.print(’/’);
Serial.print(now.month(), DEC);
Serial.print(’/’);
Serial.print(now.day(), DEC);
Serial.print(’ ‘);
Serial.print(now.hour(), DEC);
Serial.print(’:’);
Serial.print(now.minute(), DEC);
Serial.print(’:’);
Serial.print(now.second(), DEC);
Serial.println();

Serial.print(" since midnight 1/1/1970 = ");
Serial.print(now.unixtime());
Serial.print("s = ");
Serial.print(now.unixtime() / 86400L);
Serial.println(“d”);

// calculate a date which is 7 days and 30 seconds into the future
DateTime future (now.unixtime() + 7 * 86400L + 30);

Serial.print(" now + 7d + 30s: ");
Serial.print(future.year(), DEC);
Serial.print(’/’);
Serial.print(future.month(), DEC);
Serial.print(’/’);
Serial.print(future.day(), DEC);
Serial.print(’ ‘);
Serial.print(future.hour(), DEC);
Serial.print(’:’);
Serial.print(future.minute(), DEC);
Serial.print(’:’);
Serial.print(future.second(), DEC);
Serial.println();

Serial.println();
delay(3000);
}

e' solo il primo rigo ad essere sballato

il secondo ed il terzo sembrano corretti che strano :relaxed:

@Franglove: potresti provare usando l'ide versione 23, se stai usando la 1.0?

Ma il quarzino l'hai messo sull'RTC? Hai collegato la batteria di backup?

Schemino? Foto?

La pasta ormai è scotta :)

lesto: @Franglove: potresti provare usando l'ide versione 23, se stai usando la 1.0?

Si sto usando la 1.0 dove posso trovare la 23? grazie

Qui: http://arduino.cc/en/Main/Software

non avevo minimamente pensato all'IDE, quindi ti compila regolarmente con la libreria ?

non è la prima libreria che compila ma poi non va… nelle ultime 2 settimane ho passtao metà dei post a scrivere: hai provato con l’ide 0023?

questo e' ancora peggio,

a questo punto mi dispiace ma 0.23 a vita, perche' si va fuori strada alla grande.

Sorry this is in english...I will google translate the text too. I'm not positive what is going on in the above threads but I see the error with the DS1307 RTC posting "2165/165/165 165:165:85" to the SD card. This is likely caused by a low voltage to the VCC pin on the RTC. I would bet that if you put a multimeter to that pin you would see that it shows something less than 5v. Whatever arduino shield or battery you are using is probably not getting enough voltage to the DS1307. I've also posted this response to the adafruit forums because it frustrated me, there weren't very many google results when I searched "2165/165/165 165:165:85", and I was excited to actually figure out the problem. You can see my other reply on the adafruit forums here: http://forums.adafruit.com/viewtopic.php?f=31&t=24867&p=133378#p133378.

Translated to italian with google translate:

Tradotto in italiano con Google Translate: Spiacente, questo è in inglese ... io google tradurre il testo troppo. Io non sono positive ciò che sta accadendo nelle discussioni di cui sopra, ma io vedo l'errore con il RTC DS1307 distacco "2165/165/165 165:165:85" sulla scheda SD. Questo è probabilmente causato da un bassa tensione al pin VCC sul RTC. Sono pronto a scommettere che se si mette un multimetro a quel pin si vedrebbe che mostra qualcosa di meno di 5V. Qualunque Arduino scudo o la batteria si sta utilizzando non è probabilmente sufficiente a tensione ottenendo il DS1307. Ho anche inviato questa risposta al forum Adafruit perché mi frustrato, non c'erano molti risultati di Google quando ho cercato "2165/165/165 165:165:85", ed ero entusiasta di capire realmente il problema . Potete vedere la mia altra risposta sul forum Adafruit qui: http://forums.adafruit.com/viewtopic.php?f=31&t=24867&p=133378 # p133378.

But we get the error condition while arduino is connected to the usb port, so maybe the usb port is not giving the requested current? (it happens on some notebook) @Franglove try on another (desktop) pc

ma la condizione d'errore cel'abbiamo con arduino connesso su usb, potrebbe essere la porta usb che non fornisce la corrente richiesta? (capita su alcuni notebook) @Franglove prova su un altro pc (fisso). P.S. (ho trdotto la risposta per cortesia verso l'utente non italiano che si è prodigato per rispondere)

Ma dopo aver montato la batteria, non và impostata la data e l'ora nel RTC? Nello sketch non vedo i comandi o le variabili per impostarle.

PaoloP: Ma dopo aver montato la batteria, non và impostata la data e l'ora nel RTC? Nello sketch non vedo i comandi o le variabili per impostarle.

viene fatto con

 if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
}

Si puó lanciare un sketch una volta dove il RTC.adjust() non é condizionato. Ciao Uwe

uwefed:

PaoloP: Ma dopo aver montato la batteria, non và impostata la data e l'ora nel RTC? Nello sketch non vedo i comandi o le variabili per impostarle.

viene fatto con

 if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
}

Si puó lanciare un sketch una volta dove il RTC.adjust() non é condizionato. Ciao Uwe

Si, ma DATE e TIME quanto valgono? Dove vengono settate? Le passa il compilatore? Sono quelle del PC?

Sono variabili che contengono la data e l'ora del computer al momento della compilazione dello sketch e rimangono poi ovviamente sempre uguali perché "registrati" nello sketch. Ciò significa che se hai compilato alle 12:34:23 del 3/02/2012 tutte le volte che resetti la scheda, lo sketch reimposta questi valori nell'RTC

Comunque quel if dovrebbe fare che solo la prima volta che viene eseguito lo sketch dopo il uploade aggiorna l' ora. Nelle altre volte non dovreppe piú aggiornare l' ora perché il Flag che legge la funzione RTC.isrunning() é settato. e percui l'ora dovrebbe essere sempre giusta e non rimessa quella del momento della compilazione. Se succede che ogni volta ci si trova l' ora vecchia vuol dire che ci sono problemi con la betteria tampone. Ciao Uwe

Certo, quando parlavo di resettare la scheda, intendevo tutto l'accrocchio senza batteria tampone. Se la batteria tampone è correttamente collegata, l'ora dovrebbe essere mantenuta indipendentemente dalla presenza o meno dell'alimentazione principale. Cmq tempo fa avevo problemi con un DS1307 ed anch'io notai che quando l'alimentazione della batteria dava dei problemi, l'orologio sbarellava.

Mi viene da chiedere una cosa: è stato messo in comune il "-" della batteria tampone con la massa dell'RTC e del circuito?