Epson RTC 72421 Datum und Uhrzeit stellen

Gast #7304743
Lesenswert?
• ▲
▼

Dass ist nur Arduino Hass, der wird hier üball ausgekippt wenns nur irgend geht...

Aber wie das auf dieser einen einzigen Platine die es gibt auf der dieser Epson RTC Chip verbaut ist - kommt halt eben auf genau diese Platine an! Das Manual/Datasheet findet Google für dich - oder aber die Ardu*-Hater die sich aber nicht zu fein sind ein dummer Suchbot für die Google-Faulen zu sein...

Moderator (Firma: Titel) Persönliche Seite #7305599
Lesenswert?
• ▲
▼

Marcel schrieb:

Hatte bis jetzt mit dem Arduino noch nicht soviel zutun gehabt

Aber jetzt sollst du die Aufgabe mit so einem lösen, oder?

Marcel schrieb:

finde dazu nix passendes.

Mein Google tut tadellos und findet das hier mit dem ausführlichen Datenblatt: Beitrag "Uhrenbaustein RTC 72421"

Wo wird denn wo was angeschlossen

In dem Datenblatt steht das drin.

Gast #7306129
Lesenswert?
• ▲
▼

Marcel schrieb:

Ich habe hier auf einer Platine ein Epson RTC 72421, womit kann man den ansteuern um das Datum und die Uhrzeit neu einzustellen?

Diese Funktion hat mit CHatGPT generiert:

1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <unistd.h>
4
#include <time.h>
5
#include "i2c_lib.h"  // Bibliothek für I2C-Kommunikation
6

7
#define RTC_ADDRESS 0x6F  // I2C-Adresse des RTC-Chips
8

9
void set_rtc_time(int year, int month, int day, int hour, int minute, int second) {
10
  // Befehle zum Schreiben in die RTC-Register
11
  const uint8_t SECONDS_REG = 0x00;
12
  const uint8_t MINUTES_REG = 0x01;
13
  const uint8_t HOURS_REG = 0x02;
14
  const uint8_t DAY_REG = 0x03;
15
  const uint8_t MONTH_REG = 0x04;
16
  const uint8_t YEAR_REG = 0x05;
17

18
  // Daten für die RTC-Register vorbereiten
19
  uint8_t seconds = ((second / 10) << 4) | (second % 10);
20
  uint8_t minutes = ((minute / 10) << 4) | (minute % 10);
21
  uint8_t hours = ((hour / 10) << 4) | (hour % 10);
22
  uint8_t day = ((day / 10) << 4) | (day % 10);
23
  uint8_t month = ((month / 10) << 4) | (month % 10);
24
  uint8_t year = ((year / 10) << 4) | (year % 10);
25

26
  // Verbindung zum RTC-Chip herstellen
27
  int fd = i2c_init("/dev/i2c-1");  // öffne I2C-Schnittstelle
28
  i2c_select_device(fd, RTC_ADDRESS);  // wähle RTC-Chip auf der I2C-Schnittstelle aus
29

30
  // Sende Befehle zum Schreiben in die RTC-Register
31
  i2c_write_byte(fd, SECONDS_REG, seconds);
32
  i2c_write_byte(fd, MINUTES_REG, minutes);
33
  i2c_write_byte(fd, HOURS_REG, hours);
34
  i2c_write_byte(fd, DAY_REG, day);
35
  i2c_write_byte(fd, MONTH_REG, month);
36
  i2c_write_byte(fd, YEAR_REG, year);
37

38
  // Schließe die Verbindung zum RTC-Chip
39
  i2c_close(fd);
40
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.