Ho un Real Time Clock (RTC) che comunica con il protocollo I2C, l'ho collegato ai pin analogici 4 e 5. Se ho capito bene per poter inviare o ricevere qualcosa devo usare la libreria Wire, però non sono riuscito a fare niente... C'è qualche tutorial passo passo che spiega come fare? Oppure me lo spiegate voi?
Cos'hai? Un DS1307 o un PCF8563?
Cmq se cerchi nel forum e/o nel playground escono diversi risultati. Quelli che seguono sono solo alcuni di quelli che ho trovato. Per il primo: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1191209057 Per il secondo: http://www.arduino.cc/playground/Main/RTC-PCF8563
sopra c'è scritto:
M41T0
E9924
e come sei sicuro che sia un RTC? dove hai trovato i collegamenti in rete non si trova nulla... trova il datasheet può esseree utile se non essenziale
il datasheet credo sia questo: http://www.datasheetcatalog.org/datasheet/stmicroelectronics/9105.pdf comunque sono sicuro che sia un rtc ;)
Sì, è un RTC. Dovresti usarlo tipo gli altri 2 che ti ho segnalato. Basta sostituire l'indirizzo I2C del chip e poi decodificare i byte che leggi per ottenere l'ora e la data. Prova a vedere se trovi su internet qualcosa relativo a questo chip altrimenti non dovrebbe essere difficile adattare una delle librerie scritte per un altro RTC.
Ok, provo anche se questa libreria mi può servire: http://www.arduino.cc/playground/Main/RTC-PCF8563
in quella libreria c'è scritto:
Remember to check your I2C addresses. There are set here, in the header file.
perchè lo devo modificare nella libreria. però come faccio a saperlo?
L'indirizzo lo ricavi dal datasheet. Per il tuo RTC ho visto che fornito in forma binaria (mi pare di ricordare) in una figura esplicativa.
nella figura 9 slave address location c'è scritto lo slave address così: 1101000 però non ho ancora capito come trovare gli indirizzi read e write da scrivere quì:
#define RTCC_R 0xa3
#define RTCC_W 0xa2
L'indirizzo in un bus I2C è in genere unico: serve ad identificare il chip. Non ho letto il datasheet e non conosco quell'RTC, non so quindi se ha bisogno di 2 indirizzi ma mi suona strano. Più tardi darò un'occhiata al datasheet, rileggilo anche tu per conferma.
L’indirizzo è unico, difatti.
Ma dove sono quei RTCC_W e RTCC_R, scusa?
Ah, ok. Questo perché gli RTC hanno qualche byte di memoria su cui puoi scriverci sopra. Puoi evitare la cosa: considera solo l'indirizzo per leggere il micro, dato che tanto un RTC serve principalmente per ottenere l'ora e la data.
Nel datasheet ho trovato gli indirizzi e messo così:
/* the read and write values for pcf8563 rtcc */
/* these are adjusted for arduino */
#define RTCC_R 0xd1
#define RTCC_W 0xd0
però non va... proverò a vedere la libreria se riesco a capire cosa non va bene, ma per ora non ho idee...
Io vedo che l'indirizzo del tuo RTC, guardando il datasheet a pag. 11, è 1101000b, ossia 0x68.