Forum

Einloggen | Registrieren | RSS  

I2C-Speicherzelle auslesen bzw. speichern (Computertechnik)

verfasst von simi7(R), D Südbrandenburg, 07.06.2025, 17:43 Uhr

» Hallo an alle,
» ich habe einen Baustein DS3231. Die Platine enthält einen Uhrenbaustein
» mit der Adresse 0x68 und einen Speicher 0x50.
» Kann mir jemand bitte sagen, wie ich aus einer Speicherzelle die Daten
» auslesen bzw. Daten ablegen kann?
» Ich verwende Python.

Ich habe mal soeben die KI beauftragt, schlag mich nicht, wenn es nicht funzt:
ich
bitte schreibe ein Programm in Python um den DS3231 auszulesen

Antwort
Um den DS3231 auszulesen, benötigen wir eine Bibliothek, die die Kommunikation über I2C ermöglicht. Hier ist ein Beispielprogramm in Python, das den DS3231 ausliest:

Voraussetzungen
- Python 3.x
- I2C-Bibliothek (z.B. smbus für Raspberry Pi)
- DS3231-Modul

Code

import smbus
import time

# I2C-Adresse des DS3231
DS3231_ADDRESS = 0x68

# Register-Adressen des DS3231
SECONDS_REGISTER = 0x00
MINUTES_REGISTER = 0x01
HOURS_REGISTER = 0x02
DAY_REGISTER = 0x03
DATE_REGISTER = 0x04
MONTH_REGISTER = 0x05
YEAR_REGISTER = 0x06

# Funktion zum Auslesen des DS3231
def read_ds3231():
bus = smbus.SMBus(1) # I2C-Bus 1 verwenden

# Sekunden auslesen
seconds = bus.read_byte_data(DS3231_ADDRESS, SECONDS_REGISTER)
seconds = (seconds >> 4) * 10 + (seconds & 0x0F)

# Minuten auslesen
minutes = bus.read_byte_data(DS3231_ADDRESS, MINUTES_REGISTER)
minutes = (minutes >> 4) * 10 + (minutes & 0x0F)

# Stunden auslesen
hours = bus.read_byte_data(DS3231_ADDRESS, HOURS_REGISTER)
hours = (hours >> 4) * 10 + (hours & 0x0F)

# Tag auslesen
day = bus.read_byte_data(DS3231_ADDRESS, DAY_REGISTER)
day = day & 0x07

# Datum auslesen
date = bus.read_byte_data(DS3231_ADDRESS, DATE_REGISTER)
date = (date >> 4) * 10 + (date & 0x0F)

# Monat auslesen
month = bus.read_byte_data(DS3231_ADDRESS, MONTH_REGISTER)
month = (month >> 4) * 10 + (month & 0x0F)

# Jahr auslesen
year = bus.read_byte_data(DS3231_ADDRESS, YEAR_REGISTER)
year = (year >> 4) * 10 + (year & 0x0F) + 2000

bus.close()

return {
"seconds": seconds,
"minutes": minutes,
"hours": hours,
"day": day,
"date": date,
"month": month,
"year": year
}

# Hauptprogramm
while True:
datetime = read_ds3231()
print(f"Datum: {datetime['date']}.{datetime['month']}.{datetime['year']}")
print(f"Uhrzeit: {datetime['hours']}:{datetime['minutes']}:{datetime['seconds']}")
print(f"Tag: {datetime['day']}")
print("------------------------")
time.sleep(1)


Hinweise
- Dieses Programm verwendet die smbus-Bibliothek, die für den Raspberry Pi geeignet ist. Für andere Plattformen muss möglicherweise eine andere Bibliothek verwendet werden.
- Die I2C-Adresse des DS3231 ist standardmäßig 0x68. Wenn die Adresse geändert wurde, muss sie im Programm entsprechend angepasst werden.
- Das Programm liest die Uhrzeit und das Datum aus dem DS3231 aus und gibt sie auf der Konsole aus.



Gesamter Thread:

I2C-Speicherzelle auslesen bzw. speichern - magifix, 07.06.2025, 16:43
I2C-Speicherzelle auslesen bzw. speichern - simi7(R), 07.06.2025, 17:43