Real-Time-Clock RTC-DCF mit DCF77-Empfang

Dieser Beitrag bezieht sich auf das folgende Produkt: ELV USB-I2C-Interface, Komplettbausatz inkl. Gehäuse, bearbeitet und bedruckt, USB-Kabel, 3 Anschlusskabel

Bestell-Nr. 68-08 41 23

Zum Produkt
zur Übersicht3 Beiträge Thema abonnieren Neue Antwort
Anzeigen  Sortieren 

Real-Time-Clock RTC-DCF mit DCF77-Empfang

von manfi » 06.08.2013, 22:10 

ein Beispiel oder ein Makro wäre nicht schlecht.
Ist ein Pullup Widerstand nötig. Wird ein Wandler 5 Volt auf 3.3 Volt benötigt:
manfi
Beiträge: 6
Registriert
19.09.2011

AW: Real-Time-Clock RTC-DCF mit DCF77-Empfang

von ELV - Technische Kundenbetreuung » 13.08.2013, 12:14 

Hallo manfi

Die Daten und Taktleitung des I²C-Bus werden über jeweils 10kOhm Widerstände auf 5V Potential gelegt. Für die Verwendung von 3,3V Slaves löten Sie bitte die Pull-Up-Widerstände R2 und R3 aus und verschalten die beiden Widerstände auf Seiten der 3,3V Slaves, so dass die Daten- und die Taktleitung auf 3,3V Spannung "gezogen" werden. Der Prozessor der USB-I²C-Interface kann auch einen High-Pegel der Takt und Datenleitung von lediglich 3,3V auswerten.

Beispiele stehen für LogView 2.7 (Ini-Datei) sowie eine Demosoftware zur Verfügung.
ELV - Technische Kundenbetreuung
Beiträge: 12019
Registriert
01.07.2011
Mit freundlichen Grüßen Ihr Team der technischen Kundenbetreuung

AW: AW: Real-Time-Clock RTC-DCF mit DCF77-Empfang

von manfi » 16.08.2013, 16:57 

Hallo
ein Beispiel in Bascom
Vorschläge und Erweiterungen erwünscht




'------------------------------------------------------------------
' (c) 2013
' ELV Real-Time-Clock mit DCF77-Empfang
' Version 1.0
'
'Arduino Uno

'Atmega 328
'------------------------------------------------------------------
'
$regfile = "M328def.dat"
$crystal = 16000000
$baud = 38400
$hwstack = 32 ' default use 32 for the hardware stack

$swstack = 10 'default use 10 for the SW stack

$framesize = 40

Config Sda = Portc.4 'I2C-Pins definieren
Config Scl = Portc.5
I2cinit
Print"I2C init"
' we need to provide the SDA pin name
'Dim ELV_RTC_DCF77_Schreiben As Byte
'Dim ELV_RTC_DCF77_Lesen As Byte
dim Datenbyte_Sekunde as Byte
dim Datenbyte_Minute as Byte
dim Datenbyte_Stunde as Byte
dim Datenbyte_Wochentag as Byte
dim Datenbyte_Tag as Byte
dim Datenbyte_Monat as Byte
dim Datenbyte_Jahr as Byte
dim Datenbyte_Alarm_Minute as Byte
dim Datenbyte_Alarm_Stunde as Byte
dim Datenbyte_Alarm_Wochentag as Byte
dim Datenbyte_periodischer_Interrupt as Byte
dim Datenbyte_Alarm_Config_Register as Byte
dim Datenbyte_Per_Int_Config as Byte
dim Datenbyte_DCF77_Config_Register as Byte
dim Datenbyte_Status_Register as Byte


'------------------------------------------------------------------------------
Const ELV_RTC_DCF77_Schreiben = &b0000010
Const ELV_RTC_DCF77_Lesen = &b0000011


Datenbyte_Stunde = Makebcd (14) '2h
Datenbyte_Minute = Makebcd(00) '1h
Datenbyte_Sekunde = Makebcd(00) '0h
Datenbyte_Tag = Makebcd(16) '4h
Datenbyte_Wochentag = Makebcd(5) '3h Wochentag 001:Montag / 010smileienstag / 111:Sonntag
Datenbyte_Monat = Makebcd(8) '5h
Datenbyte_Jahr = Makebcd(13) '6h

Datenbyte_Alarm_Minute = Makebcd(00) '7h
Datenbyte_Alarm_Stunde = Makebcd(00)'8h
'Wochentag 001:Montag / 010smileienstag / 111:Sonntag
Datenbyte_Alarm_Wochentag =4 '9h
Datenbyte_periodischer_Interrupt =0 'Ah
Datenbyte_Alarm_Config_Register =0 'Bh
Datenbyte_Per_Int_Config =0 'Ch
Datenbyte_DCF77_Config_Register = &b0000101 'Dh
Datenbyte_Status_Register = 0

Print"Programmstart"
I2cstart
I2cwbyte ELV_RTC_DCF77_Schreiben
I2cwbyte &b0000000

I2cwbyte Datenbyte_Sekunde
I2cwbyte Datenbyte_Minute
I2cwbyte Datenbyte_Stunde
I2cwbyte Datenbyte_Wochentag
I2cwbyte Datenbyte_Tag
I2cwbyte Datenbyte_Monat
I2cwbyte Datenbyte_Jahr
I2cwbyte Datenbyte_Alarm_Minute
I2cwbyte Datenbyte_Alarm_Stunde
I2cwbyte Datenbyte_Alarm_Wochentag
I2cwbyte Datenbyte_periodischer_Interrupt
I2cwbyte Datenbyte_Alarm_Config_Register
I2cwbyte Datenbyte_Per_Int_Config
I2cwbyte Datenbyte_DCF77_Config_Register
I2cwbyte Datenbyte_Status_Register

I2cstop


Do
I2cstart
I2cwbyte ELV_RTC_DCF77_Schreiben
I2cwbyte &b0000000
I2CREPSTART
I2cwbyte ELV_RTC_DCF77_Lesen

I2crbyte Datenbyte_Sekunde , ack '0h
I2crbyte Datenbyte_Minute , ack '1h
I2crbyte Datenbyte_Stunde , ack '2h
I2crbyte Datenbyte_Wochentag , ack '3h
I2crbyte Datenbyte_Tag , ack '4h
I2crbyte Datenbyte_Monat , ack '5h
I2crbyte Datenbyte_Jahr , ack '6h
I2crbyte Datenbyte_Alarm_Minute , ack '7h
I2crbyte Datenbyte_Alarm_Stunde , ack '8h
I2crbyte Datenbyte_Alarm_Wochentag , ack '9h
I2crbyte Datenbyte_periodischer_Interrupt , ack 'Ah
I2crbyte Datenbyte_Alarm_Config_Register , ack 'Bh
I2crbyte Datenbyte_Per_Int_Config , ack 'Ch
I2crbyte Datenbyte_DCF77_Config_Register, ack 'Dh
I2crbyte Datenbyte_Status_Register , nack 'Eh
I2cstop



Print "Datenbyte_Sekunde "; Makedec(Datenbyte_Sekunde) '0h
Print "Datenbyte_Minute "; Makedec(Datenbyte_Minute) '1h
Print "Datenbyte_Stunde "; Makedec(Datenbyte_Stunde) '2h
Print "Datenbyte_Wochentag "; Makedec(Datenbyte_Wochentag) '3h
Print "Datenbyte_Tag "; Makedec(Datenbyte_Tag) '4h
Print "Datenbyte_Monat "; Makedec(Datenbyte_Monat) '5h
Print "Datenbyte_Jahr "; Makedec(Datenbyte_Jahr) '6h
Print "Datenbyte_Alarm_Minute "; Datenbyte_Alarm_Minute '7h
Print "Datenbyte_Alarm_Stunde "; Datenbyte_Alarm_Stunde '8h
Print "Datenbyte_Alarm_Wochentag "; Datenbyte_Alarm_Wochentag '9h
Print "Datenbyte_periodischer_Interrupt "; Datenbyte_periodischer_Interrupt 'Ah
Print "Datenbyte_Alarm_Config_Register "; Datenbyte_Alarm_Config_Register 'Bh
Print "Datenbyte_Per_Int_Config "; Datenbyte_Per_Int_Config 'Ch
Print "Datenbyte_DCF77_Config_Register "; Datenbyte_DCF77_Config_Register 'Dh
Print "Datenbyte_Status_Register "; Datenbyte_Status_Register 'Eh





Print Makedec(Datenbyte_Stunde) ;":"; Makedec(Datenbyte_Minute);":" ; Makedec(Datenbyte_Sekunde)




waitms 600

Loop

End
[code][code][/code][/code]
manfi
Beiträge: 6
Registriert
19.09.2011
Anzeigen  Sortieren 
zur Übersicht3 Beiträge Neue Antwort