LO HAI MAI REALIZZATO CON UN PIC? RTCC - IL PIC TIENE LA DATA E L'ORA 1

Documenti analoghi
LO HAI MAI REALIZZATO CON UN PIC? LA LAMPADA SIBILLA! 1

LO HAI MAI REALIZZATO CON UN PIC? - I PICMICRO E I DISPLAY LCD ALFANUMERICI

LO HAI MAI REALIZZATO CON UN PIC? - I PICMICRO E I DISPLAY GRAFICI (PRIMA

Davide Gennaretti, Matteo Nicolini

Real Time Clock, in I2C BUS, Provvisto di RAM.

LO HAI MAI REALIZZATO CON UN PIC? - I PICMICRO E I DISPLAY GRAFICI (SECONDA

GENERATORE DI BASE TEMPI

Corso di programmazione Arduino DI MALVEZZI DAVIDE

Opera Crate Monitor Software Reference Manual V2.0

Calcolatori Elettronici T Ingegneria Informatica A2 - Gestione di una matrice di LED (8x8)

Verso Arduino... E oltre!

LO HAI MAI REALIZZATO CON UN PIC - PIC WATCH UN SEMPLICE OROLOGIO SVEGLIA

HP LED Driver Shield. EtherMania di Signorini Marco Via Cadore MALNATE (VA) P.I REA VA

MST_K12. Regolatore di velocita per motori in CC. Realizzazione e Applicazione

DIMMER SX13 REL.1.1. Guida Utente

D.A.M. Bros Robotics -

Corso introduttivo sui microcontrollori. Un sistema tastierino a matrice 4x4 da collegare alla nostra demoboard AnxaPic.

TM1638 BOARD con ARDUINO

Week Programmer v2.1 Week Programmer Rev2.1

CONTROLLARE UN SERVOCOMANDO A DISTANZA. 1

EEPROM SERIALI IN I2C BUS.

SCHEDA PRODOTTO IO2-88C-DR0-C (centralizzato).

DISPOSITIVO PER LA LETTURA DI UN ENCODER INCREMENTALE

D.A.M. Bros Robotics -

MANUALE TECNICO E ISTRUZIONI

1 Descrizione del sistema

Il protocollo RS Introduzione. 1.2 Lo Standard RS-232

Prof. Capuzzimati Mario - ITIS Magistri Cumacini - Como MICROCONTROLLORE

PROTOCOLLO 1-WIRE. Schema a blocchi del sistema 1-Wire e struttura del master e dello slave

TUTORIAL GPL_BENZINA CON PIC16F1826 (UTILIZZO DELL ADC)

SCHEDA PRODOTTO IO2-88C-DR-C (centralizzato).

Prefazione...IX. Capitolo 1 - La famiglia di Arduino...1

6. GENERATORI DI SEGNALI DIGITALI

Soluzioni a 8 bit per il bus del PIC18F8x20

Esperimentazioni di Fisica 3 AA Tracking ADC. M. De Vincenzi

KS 405. Terminale operatore con PLC integrato. inferiore a 200mA senza carichi. Memoria Programma Memoria Pagine

IECGG-MB IECGG-MB CARATTERISTICHE FUNZIONALI MODBUS REV 1.1 MODBUS CARATTERISTICHE FUNZIONALI

10 Realizzazione Firmware

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Termometro digitale. Ivancich Stefano

"Centrale per risparmio energetico Mod. R01"

EEPROM SERIALI IN SPI.

CALCOLATORI ELETTRONICI II

Multivibratore bistabile, monostabile e astabile con TIMER 555

Rivediamo alcuni concetti fondamentali: note sulla periferica GPIO

Sch ed e Ser ie RD7 7

MODBUS-RTU per HPX. Specifiche protocollo MODBUS-RTU per controllo dispositivo HPX in rete LEGGERE E CONSERVARE REV ITA

Contatore asincrono esadecimale

Calcolatori Elettronici T Ingegneria Informatica A3 - Gestione delle interruzioni

Filippo Bagnato Corso di Elettronica digitale a.a. 2016/2017

SMD 2018 HACKATHON SECONDARIA DI PRIMO GRADO PRIMI PASSI CON MBLOCK

Un quadro della situazione. Lezione 14 Il Set di Istruzioni (2) Dove siamo nel corso. I principi di progetto visti finora. Cosa abbiamo fatto

Alimentatore master. Introduzione

DMX 30. PLC visualizzato per montaggio a quadro. CARATTERISTICHE ELETTRICHE Min 20Vcc ; Max 26 Vcc Min 15 Vac ; Max 21 Vac

Interfacciamento di periferiche I/O al μp 8088

INTERFACCIA PER PC MEDIANTE PORTA SERIALE

LO HAI MAI REALIZZATO CON UN PIC? - UNA BREVE INTRODUZIONE A XC8: HELLO WORLD!

MANUALE OPERATIVO LETTORE / SCRITTORE MIFARE RDM1 versione OEM

TW-IDU-NODE-2 IOT Protocollo di comunicazione Versionamento FW

Sistemi di Elaborazione: esercizio con il D12

Reti logiche (2) Circuiti sequenziali

Flip-flop e loro applicazioni

MANUALE D'USO WPC.

Componenti e connessioni. Capitolo 3

Circuiti sequenziali. Circuiti sequenziali e applicazioni

Giuseppe Borgone Roma, 24 ottobre

Reti logiche (2) Circuiti sequenziali

Linguaggio macchina e register file

Elettronica Sistemi Digitali 09. Flip-Flop

Le sintonie elettroniche per l ATV

Giancarlo Rini (rini) FPGA. 29 September 2011

ELETTRONICA II. Prof. Dante Del Corso - Politecnico di Torino

C O U N T E R e T I M E R (2).

Circuito logico AND / AND Gate

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

CALCOLATORI ELETTRONICI. I dispositivi di memoria

1) Si descriva brevemente il processo di conversione analogico-digitale di un segnale.

All interno di un ATmega16 troviamo moltissimi dispositivi trai quali, timer, gestori delle interupt personalizzabili, convertitori A/D, multiplexer

CORSO DI PROGRAMMAZIONE MICROCONTROLLORI

DIGITAL ALARM CLOCK OROLOGIO-SVEGLIA A MICROCONTROLLORE

OROLOGIO DIGITALE con DISPLAY GIGANTI

Raccolta Test di Laboratorio di Sistemi a Microcontrollore

2.4GHz Moduli ZigBee per Applicazioni di reti Wireless. XTR-ZB1-xLI

TUTORIAL PER UN CORRETTO USO DEL MODULO REAL TIME CLOCK DS 3231

LE ALTRE BOARD ARDUINO

PIEDINO NOME DESCRIZIONE

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (2) Le operazioni e gli operandi. Dove siamo nel corso. Cosa abbiamo fatto

Componenti principali

Centralina controllo pompa

LO HAI MAI REALIZZATO CON UN PIC? - L'AMBIENTE DI SVILUPPO MPLAB X 1

KS 407. Terminale operatore con PLC integrato. inferiore a 300 ma senza carichi. Memoria Programma

BIU - Bus Interface Unit. EU - Execution Unit. indipendente e asincrono: Costituito da due unità che operano in modo parzialmente

Trasmettitore TX-8L25IA

MODBUS-RTU per Expert NANO RTC

Architettura del PIC 18F452

progettare CHIAVE progettare & costruire

Esame di Stato. a.s

Corso di Sistemi di Elaborazione A.A. 2008/2009

Transcript:

Paolo Rognoni (Paolino) LO HAI MAI REALIZZATO CON UN PIC? RTCC - IL PIC TIENE LA DATA E L'ORA 5 November 2011 Nelle applicazioni a microcontrollore uno dei progetti cui ci si imbatte spesso, soprattutto per chi è all'inizio (ma non solo), è la realizzazione di un orologio digitale dotato di calendario. Il conteggio del tempo non è di per sé un affare complicato, avendo a che fare con sistemi dotati di oscillatori! Il primo approccio è quindi quello di usare il clock di sistema, dividerlo con vari prescaler e/o postscaler ed assegnare il conteggio ad un registro conta secondi: 60 secondi per un minuto, 60 minuti formano l'ora, 24 ore per un giorno, 365 (o 366) giorni per un anno, eccetera... Se poi ci mettiamo il conteggio dei mesi con la composizione della data (comprensiva dei giorni della settimana) il progetto "semplice" di un orologio digitale diventa invece abbastanza complicato. Con tutti i distinguo del caso. Per le applicazioni in cui l'ora è sì un aspetto importante (ad esempio una centralina di irrigazione) ma la sua gestione non deve richiedere troppe risorse sia in termini di pin di I/O sia di memoria occupata, l'impiego di chip dedicati è la soluzione migliore. Il dispositivo illustrato, benché non sia di ultimissima generazione, è ottimo nelle applicazioni con microcontrollori privi della porta SPI oppure quando la porta SPI è già destinata ad altri scopi e non può essere distolta da compiti differenti. Real Time Clock Calendar Uno tra i più famosi ed utilizzati chip RTCC (Real Time Clock Calendar) è il Dallas DS1302. È un chip a 8 pin, con interfaccia seriale sincrona, del tutto simile a SPI ma con specifiche differenti. LO HAI MAI REALIZZATO CON UN PIC? RTCC - IL PIC TIENE LA DATA E L'ORA 1

Pinout DS1302 Qui di seguito la descrizione dei pin: Pin Denominazione 1 V cc2 Alimentazione principale 2 X1 3 X2 Funzione svolta Ai pin X1 ed X2 si collega un quarzo da 32768 Hz (vedi datahseet) Ai pin X1 ed X2 si collega un quarzo da 32768 Hz (vedi datahseet) 4 GND Connessione di massa 5 CE 6 I/O 7 SCLK Chip Enable. Questo segnale va tenuto alto durante le operazioni di lettura o scrittura. Questo pin ha un pulldown interno di 40 kohm (valore tipico) Pin di I/O digitale; su questa linea transitato in dati dal micro al modulo RTCC e viceversa Serial CLOCK. Pin usato per la generazione del segnale di clock usato per sincronizzare le operazioni di I/O bidirezionali. Questo pin ha un pulldown interno di 40 kohm (valore tipico) 8 V cc1 quando l'alimentazione principale non è disponibile. A questo Alimentazione secondaria, utilizzata per alimentare DS1302 pin va collegata una batteria tampone. LO HAI MAI REALIZZATO CON UN PIC? RTCC - IL PIC TIENE LA DATA E L'ORA 2

Il dispositivo ben si adatta per quelle applicazioni in cui è richiesta l'alimentazione a batteria oppure, nel caso di applicazioni alimentate da rete elettrica, quando non si vuole perdere l'ora in caso di black-out. Il datasheet mostra come è costituito all'interno il modulo RTCC: Blocchi logici interni a DS1302 Nei diagrammi che seguono è mostrato l'assorbimento in corrente dai pin V cc1 e Vcc2; con alimentazione da batteria (V cc1 ), il consumo di DS1302, nel pieno dello svolgimento delle sue funzioni di mantenimento aggiornato il calendario, è di qualche centinaia di na, valori certamente accettabili per la maggior parte delle applicazioni. LO HAI MAI REALIZZATO CON UN PIC? RTCC - IL PIC TIENE LA DATA E L'ORA 3

Correnti assorbite da DS1302 Ma come si comanda? Il dispositivo è in grado di ricevere comandi dal microcontrollore e di fornire i dati richiesti. La formattazione del pacchetto è a byte ed è strutturato come indicato in figura. Il significato dei bit è il seguente: Bit Significato Va posto a 1 per le operazioni di lettura ed a 0 per quelle di scrittura. Il byte di 0 comando è sempre un'operazione di lettura, quindi questo bit va posto a 1 per inviare i comandi. 1 Bit 0 dell'indirizzo del registro interno che si vuole leggere e/o scrivere. 2 Bit 1 dell'indirizzo del registro interno che si vuole leggere e/o scrivere. 3 Bit 2 dell'indirizzo del registro interno che si vuole leggere e/o scrivere. LO HAI MAI REALIZZATO CON UN PIC? RTCC - IL PIC TIENE LA DATA E L'ORA 4

4 Bit 3 dell'indirizzo del registro interno che si vuole leggere e/o scrivere. 5 Bit 4 dell'indirizzo del registro interno che si vuole leggere e/o scrivere. Va posto a 1 per i dati di calendario ed orologio, mentre va posto a 1 per accedere 6 alla RAM interna. Deve sempre assumere valore 1, altrimenti ogni operazioni di scrittura su 7 DS1302 viene disabilitata. I comandi vanno scritti e letti secondo questo digramma di timing: Diagramma di timing Si noti come la sequenza è sempre quella di due byte: il comando precede il dato. Nel caso di lettura di un dato, questa operazione avviene sul fronte di discesa del segnale di clock, mentre la scrittura è attiva sul fronte di salita. I comandi che il dispositivo rende disponibili sono raggruppati nella seguente tabella: LO HAI MAI REALIZZATO CON UN PIC? RTCC - IL PIC TIENE LA DATA E L'ORA 5

Tabella dei comandi disponibili Si noti che i byte che contengono i dati presentano dei valori estremi, pertanto le ore sono comprese tra 00 e 23 (nel caso di gestione dell'orario su 24 ore), i minuti ed i secondi stanno tra 00 e 59, e così via. Un po' di codice Tra i compilatori C di terze parti che Microchip annovera come ufficiali e che sono disponibili con l'installazione di MPLAB, è presente anche il compilatore PCB di CCS (vedi riferimenti in bibliografia), in versione limitata. Tra i vari file forniti con il compilatore ce ne è uno che interfaccia DS1302. Prendendo spunto da quel file, ho rimodellato il codice C secondo le mie esigenze, andando a modificare alcune funzioni proprie del compilatore PCB ma che non andavano bene nella generalità dei casi. I file, (disponibili nella sezione download di questo articolo) racchiudono le funzioni di gestione del dispositivo e i comandi da fornire per leggere e scrivere i dati. Un esempio è riportato nel seguito: /* DS1302 RTC interface */ /* GLOBAL VARIABLES */ extern unsigned char RTCDS1302_hr,RTCDS1302_min,RTCDS1302_sec; extern unsigned char RTCDS1302_day,RTCDS1302_month,RTCDS1302_year,RTCDS1302_dow; /* WRITE AND READ COMMANDS */ #define W_HR 0x84 #define W_MIN 0x82 #define W_SEC 0x80 #define W_DAY 0x86 #define W_MONTH 0x88 #define W_YEAR 0x8C #define W_DOW 0x8A #define W_TRICKLE 0x90 #define W_CONTROL 0x8E #define R_HR #define R_MIN #define R_SEC #define R_DAY 0x85 0x83 0x81 0x87 LO HAI MAI REALIZZATO CON UN PIC? RTCC - IL PIC TIENE LA DATA E L'ORA 6

#define R_MONTH #define R_YEAR #define R_DOW #define R_TRICKLE #define R_CONTROL 0x89 0x8D 0x8B 0x91 0x8F /* FUNCTION PROTOTYPES */ extern void write_ds1302_byte (unsigned char ); extern void ds1302_io_definition (void); extern void write_ds1302 (unsigned char, unsigned char ); extern unsigned char read_ds1302 (unsigned char ); extern void rtc_init (unsigned char); extern unsigned char get_bcd (unsigned char ); extern unsigned char rm_bcd (unsigned char ); extern void rtc_set_datetime (unsigned char, unsigned char, unsigned char, unsigned extern void rtc_set_time(unsigned char hr, unsigned char min); extern void rtc_get_date (void); extern void rtc_get_time (void); extern void rtc_write_nvr (unsigned char, unsigned char ); extern unsigned char rtc_read_nvr (unsigned char ); Un esempio dell'uso delle funzioni è il seguente: void main(void) { InitPic (); // Inizializza il micro rtc_init (0xA7); // Trickle charger: 1 diodo, R = 8k rtc_set_datetime(05,11,11,07,18,15); // 05/11/2011, Sabato, ore 18.15 while (1) { rtc_get_date(); rtc_get_time(); //... } } Trickle charger Il DS1302 può anche caricare una piccola batteria, quella di back-up, od un supercap. In questo modo è possibile tenere alimentata la batteria che, in caso di black-out, mantiene l'orologio in funzione. Per far ciò, è necessario trasferire un byte specifico, LO HAI MAI REALIZZATO CON UN PIC? RTCC - IL PIC TIENE LA DATA E L'ORA 7

byte che contiene le informazioni circa la corrente di carica. Tale corrente è stabilita da una selezione di diodi e di resistenze, interposti tra la tensione Vcc2 e la Vcc1, secondo il seguente schema: L'equazione che stabilisce la massima corrente che DS1302 è in grado di fornire alla batteria vale: Con una tensione di alimentazione di 5V, selezionando un diodo e la resistenza da 4kΩ, supponendo che i diodi abbiano una caduta di tensione di circa 0.7V ciascuno, il valore di corrente massima per la carica della batteria vale: La scelta del numero di diodi e il valore della resistenza avviene mediante la composizione del "byte di carica", secondo questa tabella: TCS3 TCS2 TCS1 TCS0 DS1 DS0 ROUT1 ROUT0 Funzione X X X X X X 0 0 Trickle charger disabilitato X X X X 0 0 X X Trickle charger disabilitato X X X X 1 1 X X Trickle charger disabilitato 1 0 1 0 0 1 0 1 1 diodo, R = 2kΩ 1 0 1 0 0 1 1 0 1 diodo, R = 4kΩ 1 0 1 0 0 1 1 1 1 diodo, R = 8kΩ LO HAI MAI REALIZZATO CON UN PIC? RTCC - IL PIC TIENE LA DATA E L'ORA 8

1 0 1 0 1 0 0 1 2 diodi, R = 2kΩ 1 0 1 0 1 0 1 0 2 diodi, R = 4kΩ 1 0 1 0 1 0 1 1 2 diodi, R = 8kΩ 0 1 0 1 1 1 0 0 Condizione iniziale Download I due file sorgenti DS1302.c e DS1302.h sono scaricabili a questo indirizzo. Bibliografia Datasheet DS1302: http://pdfserv.maxim-ic.com/en/ds/ds1302.pdf Ambiente di sviluppo MPLAB: http://www.microchip.com/mplab Compilatore C18 per PICMicro: http://www.microchip.com/c18 Compilatore CCS: http://www.ccsinfo.com Sito web PicExperience Collana "LO HAI MAI REALIZZATO CON UN PIC?": Il contamarce Una sorpresa musicale per Babbo Natale Una tecnica antirimbalzo Il dado elettronico Un approccio ai timer dei PICMicro I PIC e i segnali analogici: la conversione A/D Generare segnali PWM con i PICMicro La lampada SIBILLA! Una tecnica di misura della tensione di batteria Pillole di microcontrollori PIC: LO HAI MAI REALIZZATO CON UN PIC? RTCC - IL PIC TIENE LA DATA E L'ORA 9

Pillole di Microcontrollori PIC Estratto da "http://www.electroyou.it/mediawiki/ index.php?title=userspages:paolino:lo-hai-mai-realizzato-con-un-pic-rtcc-il-pic-tienel-ora" LO HAI MAI REALIZZATO CON UN PIC? RTCC - IL PIC TIENE LA DATA E L'ORA 10