RV3029 Echtzeituhr mit Bascom ansteuern

RV3029 Baustein in Nahaufnahme
Den RV3029 Baustein habe ich schon erfolgreich in mehreren kleinen Projekten eingesetzt, es ist ein sehr kleiner aber dennoch genauer Uhrenbaustein, welcher sich durch sein I2C Interface besonders gut für Mikrocontroller-Anwendungen eignet.

Von Lötstellen-Besucher Nico habe ich den folgenden Code erhalten, welcher das Auslesen eines RV3029 Bausteins mit der beliebten Programmierumgebung BASCOM ermöglicht.

COM PORT EINSTELLUNGEN Config Com3 = 19200 , Mode = Asynchroneous , Parity =
None , Stopbits = 1 , Databits = 8 ' use USART C0

Open "COM3:" For Binary As #3

'RTC-Variablen const RV3029R = &HAD const RV3029W = &HAC

Dim Time_array(8) As Byte

Config Sda = PortE.0 Config Scl = Porte.1

'Porte_pin0ctrl = &B00_011_000 ' Pullup , Bothedges 'Porte_pin1ctrl =
&B00_011_000 ' Pullup , Bothedges

Dim Twi_start As Byte 'This Variable is used by the I2C functions

Open "TWIE" For Binary As #2 'Pull-Up resistor (4K7) on SDA and SCL to Vcc
= 3,3V

Config Twie = 100000 'Set TWI Baud Rate and Enable TWI Master

I2cinit #2

'******************************************************************************************************
'SET TIME TO RTC

Print #3 , "Please Enter Actual Date and Time"

Input #3 , "Day : " , _day

Input #3 , "Month : " , _month

Input #3 , "Year : " , _year

Input #3 , "Hour : " , _hour

Input #3 , "Minute : " , _min

Input #3 , "Seconds : " , _sec

'The format is DD/MM/YY

Print #3 , "SET TIME IN EXTERNAL RTC"

Print #3 , Date$ ; " - " ; Time$

waitms 250

Time_array(1) = &H08 'Startadress = &H08

Time_array(2) = Makebcd(_sec)

Time_array(3) = Makebcd(_min)

Time_array(4) = Makebcd(_hour)

Time_array(5) = Makebcd(_day)

Time_array(6) = Makebcd(0)

Time_array(7) = Makebcd(_month)

Time_array(8) = Makebcd(_year)

I2cstart #2

I2csend RV3029W , Time_array(1) , 8 , #2

I2cstop #2


'******************************************************************************************************
'GET TIME FROM RTC

Time_array(1) = &H08 'Startaddress der RTC Watch Page

I2cstart #2

I2creceive RV3029R , Time_array(1) , 1 , 7 , #2

waitms 5

I2cstop #2

_sec = Makedec(time_array(1))

_min = Makedec(time_array(2))

_hour = Makedec(time_array(3))

'Weekday = Makedec(time_array(4))

_day = Makedec(time_array(4))

_month = Makedec(time_array(6))

_year = Makedec(time_array(7))

Print #3 , Date$ ; " - " ; Time$

Bauteile für dieses Projekt - Anzeigen:
Aktive Bauelemente

Passive Bauelemente


Weitere Informationen,Grundlagen,Bauanleitung,Schaltplan, Links zum Thema
Anzeigen:

Neueste Artikel
Anzeigen:
Aktuelle Newsbeiträge
Sie sind Besucher Nr. 1138785