Pages: [1]   Go Down
Author Topic: DS1307 e schemi di collegamento differenti.  (Read 1947 times)
0 Members and 1 Guest are viewing this topic.
Palermo
Offline Offline
God Member
*****
Karma: 2
Posts: 745
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Per collegare il chip rtc in questione, ho utilizzato questo schema:



Ovviamente gli ho collegato anche la batteria.

Noto che nell'esecuzione dello sketch, ottengo questi risultati:

22:01
22:02
22:03
22:03
22:04
22:05
22:06
22:06
22:07

Ovvero ogni tanto ripete due volte un secondo. Ogni ciclo e' scandito da un delay(1000). Secondo voi che problema è?

Poi ho trovato pure questo schema:



Ci sono delle differenze rispetto al primo. Cosa comportano?

Grazie mille!!
Logged

Gianfranco

Milano, Italy
Offline Offline
Faraday Member
**
Karma: 10
Posts: 3085
Sideralis Arduino!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il secondo e' lo schema completo e corretto, con batteria di backup, il cristallo fondamentale e tutto il resto.
Io uso il secondo schema di solito ma senza la resistenza su SQW, dovrei provare... il primo schema non significa moltissimo
Logged

Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

0
Offline Offline
Faraday Member
**
Karma: 23
Posts: 2793
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tempo fà leggendo il datasheet ho eseguito dei semplici calcoli consigliati appunto nel datasheet per stabbilire il valore delle resistenze di pull-up, ora ricordo che il limite inferiore è di 1.5Kohm, da scegliere solo se le piste sono molto lunghe e se ci sono molti dispositivi sulla linea I2c.

Per 1 o due dispositivi  meglio 4.7kohm.

Ciao.
Logged

AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20193
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao GianfrancoPa
concordo con MauroTec che le resistenze pullup sono troppo piccole.

Prendo come sicuro che hai sulla sheda del DS1307 un quarzo con i dati giusti.

presumo che hai un Arduino UNo perche´quello ha un risonatore per il clock che é piú inpreciso di un quarzo ( fattore 100 di differenza ).

Qua mi sembra che il "delay(1000)" non aspetta 1 secondo preciso ma parecchio in meno. Direi per dire una cifra alcuni microsecondi fino una decina di micrsecondi. Arrivo a questo valore perché hai delle funzioni che consumano tempo: la serial.print del ora, il leggere l'ora dal DS1307 e fare qualche calcolo. Per questo Ti capita che ognitanto un secondo hai stampato 2 volte.

Non puoi fare questo controllo perché non potrai mai azzecare al 100% il secondo col delay. Succederá sempre che ognitanto stampa delle ore uguali o si dimenetica una in mezzo.

Se vuoi aggiornare ogni secondo l' orologio usa il sqr out programmandolo a 1Hz e mettendolo ad un entrata interrupt. cosí ad ogni secondo aggiorni l' ora sul display.

Ciao Uwe

Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21619
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Aggiungo anch'io i miei 2 cent  smiley-lol
1) ricordati di mettere il cristallo saldato/installato il più possibile vicino ai 2 piedini del DS1307;
2) non puoi fare un check del tempo usando delay, è una funzione che viene eseguita esternamente ad un interrupt, per cui non sarà mai precisa al millesimo di secondo. Puoi però usare ciò che ti offre proprio il DS1307, ovvero la scansione del tempo. Fai un ciclo controllando il cambio dei secondi leggendoli direttamente dall'RTC, ad esempio.
Logged


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20193
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@leo72
Il DS1307 ha un uscita con 1 Hz (se lo programmi a 1 Hz, ha anche altre frequenze), Perché non usare quella per l' interupt?
Ciao Uwe
Logged

Palermo
Offline Offline
God Member
*****
Karma: 2
Posts: 745
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie a tutti. preciso che ho utilizzato resistenze da 4.7ohm. Il primo schema che ho postato, non avendo il pc dei test a portata di mano, è uno che ho trovato velocemente in rete. Differisce dal mio punto di riferimento solo per la mancanza del circuito batteria e, come detto, per le resistenze.

Intanto grazie a tutti per i preziosi consigli!

@uwefed
purtroppo ancora non ho mai affrontato gli interrupt, non so cosa siano e come funzionino. Avevo provato a leggere qualche cosa, ma non avendo la necessità di applicarli realmente, il capitolo non aveva avuto seguito. Sfrutterò questa situazione per fare delle prove!
Il quarzo è un 32768, quello necessario! Solo che per mancanza di un quarzo completo di piedini saldabili, tempo fa ne acquistai alcuni smd. Successivamente ho saldato dei fili di rame sui connettori. Spero che questo non comprometta il corretto funzionamento del clock!

@federico
utilizzando la versione più semplice cosa puo' succedere? Perdo in precisione??

@leo72
infatti ho saldato il clock proprio in prossimità dei piedini. Avevo addirittura letto che sarebbe opportuno circondare i collegamenti tra chip e clock da una messa a terra. suppongo per l'ovvio ragione di eliminare interferenze
Logged

Gianfranco

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21619
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@uwe:
non mi ricordavo di questa funzione.  smiley-kitty
Logged


Milano, Italy
Offline Offline
Faraday Member
**
Karma: 10
Posts: 3085
Sideralis Arduino!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se vuoi ieri sera ho disegnato la scheda basata sul circuito che hai dato tu, secondo me devi utilizzare assolutamente la versione intera (cioe' il secondo schema disegnato in eagle, che poi sono 4 componenti in croce)

1- versione larga e comoda, monofaccia


2- versione super piccola monofaccia, la batteria va montata lato piste tramite saldatura rocambolesca


Io ne ho un paio su millefori che uso, ma che volevo riconvertire in una cosa decorosa...


Fede
Logged

Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

Palermo
Offline Offline
God Member
*****
Karma: 2
Posts: 745
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie per i chiarimenti, appena posso mi costruisco l'rtc con il circuito completo, pero' con le millefori, in quanto ancora non sono in grado di realizzare pcb.

Resta solo un dubbio, riguardante il pin SQW/OUT. Dal datasheet leggo:

Quote
Square Wave/Output Driver. When enabled, the SQWE bit set to 1, the SQW/OUT pin
outputs one of four square-wave frequencies (1Hz, 4kHz, 8kHz, 32kHz). The SQW/OUT
pin is open drain and requires an external pullup resistor. SQW/OUT operates with either
VCC or VBAT applied. The pullup voltage can be up to 5.5V regardless of the voltage on
VCC. If not used, this pin can be left floatin

Capisco che se non necessario tale pin (che forse fornisce segnale come se fosse un clock?), può essere lasciato volante. Vuol dire che tutta la circuteria legata a questo pin puo' essere omessa? Così fosse, allora, la versione light dello schema sarebbe valida...
Logged

Gianfranco

Milano, Italy
Offline Offline
Faraday Member
**
Karma: 10
Posts: 3085
Sideralis Arduino!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma senza il quarzo ?!
Logged

Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

Palermo
Offline Offline
God Member
*****
Karma: 2
Posts: 745
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No, il quarzo è d'obbligo...
Logged

Gianfranco

Pages: [1]   Go Up
Jump to: