Basata sullrsquo;integrato DS1307 della Maxim-Dallas, questa shield per Arduino consente di avere un preciso orologio di sistema, sgravando la CPU dal calcolo e dalla gestione dei dati orari e liberando spazio nella memoria di programma, che puograve; cosigrave; essere utilizzata per scrivere il codice di altre applicazioni. L#39;integrato DS1307 egrave; un contatore BCD (Binary Coded Decimal) a basso consumo, che conta secondi, minuti, ore, giorni, mesi e anni, provvisto di 56 byte di RAM statica non volatile. Puograve; operare nelle modalitagrave; 12 o 24 ore, con indicazione delle ore antimeridiane (AM) e di quelle pomeridiane (PM). Le informazioni sullrsquo;ora e la data vengono collocate in un apposito registro e trasferite al microcontrollore di Arduino mediante lrsquo;Isup2;C-bus. Il bus fa capo ai piedini 5 (SDA) e 6 (SCL) che combaciano con i pin SCL e SDA di Arduino (UnoRev3 e MegaRev3), il quale fa da unitagrave; master dellrsquo;Isup2;C-Bus, mentre il DS1307 egrave; lo slave. Per le versioni di Arduino precedenti ad Arduino Uno Rev3 (UnoRev2 o Arduino2009), i segnali SCL e SDA sono disponibili sui pin A4 e A5, per rendere la shield compatibile anche con queste versioni, sul lato rame sono presenti delle piazzole a saldare. Per conoscere lrsquo;ora e la data, Arduino deve interrogare il DS1307 mediante lrsquo;Isup2;C-bus; allo scopo occorre implementare un semplicissimo sketch che attivi un Isup2;C-Bus. Ad ogni interrogazione, il DS1307 risponde inviando allrsquo;ATmega (sempre lungo il suo bus Isup2;C) la risposta e le informazioni su ora e data. Sui connettori sono disponibili l#39;RST, i 5V, la massa e gli ingressi analogici A0divide;A5. Nella shield lrsquo;uscita SQW (SQUARE WAVE) pilota in modo sink un LED, facendolo pulsare alla stessa frequenza dellrsquo;onda quadra prodotta; inoltre, tramite il ponticello J1 possiamo decidere se far leggere o no ad Arduino, tramite la linea A3, il segnale corrispondente. Alimentazione: 5 Vdc (ben stabilizzati), assorbimento: 1,5 mA (che scende a 500 nA nel funzionamento a pila). Dimensioni (mm): 55x51x15. La confezione comprende anche la batteria CR2032. |
Il DS1307 dispone di unrsquo;uscita di clock programmabile che rende disponibile unrsquo;onda quadra ricavata dalla frequenza di clock dellrsquo;orologio (determinata, a sua volta, dal quarzo da 32.768 kHz collegato ai piedini 1 e 2) che, mediante un apposito divisore interno, puograve; essere divisa di frequenza ottenendo 1 Hz, 4.096 kHz, 8.192 kHz o lrsquo;intero clock. Le frequenze ottenibili non sono state scelte a caso: per esempio, 1 Hz puograve; servire a far lampeggiare i due punti o il punto dei secondi di un eventuale display che mostra lrsquo;ora. La condizione dellrsquo;uscita di clock ausiliario (SQWE - Square Wave Enable, piedino 7) si definisce impostando opportunamente lo stato logico dei bit RS0 (0) ed RS1 (1) del registro di controllo, secondo quanto mostrato nellrsquo;apposito riquadro; ad esempio, 1 Hz si ottiene con entrambi i bit a zero. Si noti che quando sia il quarto (SQWE) che il settimo bit (OUT) si trovano a zero logico, lrsquo;uscita di clock si pone fissa a livello basso; se, invece, il bit 7 egrave; ad uno logico e il 4 a zero, lrsquo;uscita assume costantemente lo stato alto. Nel nostro shield lrsquo;uscita SQW pilota in modo sink un LED, facendolo pulsare alla stessa frequenza dellrsquo;onda quadra prodotta; inoltre, tramite il ponticello J1 possiamo decidere se far leggere o no ad Arduino, tramite la linea A3, il segnale corrispondente. Come accennato, questo clock ausiliario puograve; servire per attivare dei visualizzatori o scandire certe sequenze: per esempio far suonare un cicalino ogni secondo al raggiungimento di una certa ora, per realizzare una sveglia; il tutto senza impegnare lrsquo;ATmega328 di Arduino in routine di temporizzazione. |