Forum: Mikrocontroller und Digitale Elektronik RTC MCP 79410-I/SN - Ist die Sequenz richtig?


von Wolfgang M. (avvf)


Angehängte Dateien:

Lesenswert?

Guten Abend,
ich habe eine Platine mit einem RTC gemacht und dies ist mein ersten 
Projekt mit einem RTC.

Die ganze Platine ist THT, bis auf den RTC der als SMD auf der Rückseite 
angelötet ist. Da ich mich mit den Pads ein wenig vertan hab musste ich 
ein wenig tricksen um den richtig rauf löten zu können.
Ich habe nun mit dem Multimeter überprüft oder die Kontakte passen bzw. 
Brücken da sind -> alles Okay.

Nun wollte ich mein Programm testen, doch das Programm stoppt beim 
schreiben über I2C immer. Jetzt weiß ich nicht ob der IC defekt ist 
(vielleicht thermisch) oder ob mein Programm fehlerhaft ist. Da ich 
nicht weiß ob alle Befehle stimmen. Also die Adressen usw.

Bitte um Hilfe ob die Vorgehensweise richtig ist.

Mit freundlichen Grüßen,
avvf

edit: vor der Zeile mit PORTD |= (1<<5); muss ein Fehler sein, da dieser 
Befehl nicht mehr ausgeführt wird.

RTC: MCP 79410-I/SN
1
  #define RTC_SRAM_ADDRESS 0b1101111
2
3
  // init rtc - chip
4
    
5
  i2c_init();
6
  i2c_start_wait(RTC_SRAM_ADDRESS+I2C_WRITE);
7
  i2c_write(0x00);
8
  i2c_write(0x40); //start ON Board Oscillator
9
    PORTD |= (1<<5);
10
  i2c_stop();
11
  
12
  i2c_start_wait(RTC_SRAM_ADDRESS+I2C_WRITE);
13
  i2c_write(0x02);
14
  i2c_write(0x30); //24 hours format
15
  i2c_stop();
16
17
  i2c_start_wait(RTC_SRAM_ADDRESS+I2C_WRITE);
18
  i2c_write(0x03);
19
  i2c_write(0x34); //VBAT act. 0b00111
20
  i2c_stop();

von MWS (Gast)


Lesenswert?

Die Device Adressbits sind die 7 MSBits, um RW hinzuaddieren zu können, 
muss die Adresse auf 8 Bit erweitert sein.

von Chris B. (dekatz)


Lesenswert?

Wolfgang Maier schrieb:
> i2c_write(0x40); //start ON Board Oscillator

Nein. "i2c_write(0x80);" startet den Oscillator.
"i2c_write(0x40);" überschreibt ein Bit im "10-Seconds" Feld

> i2c_write(0x30); //24 hours format
Auch nicht, damit setzt du die "10-Hours" auf "AM" (oder "PM"??) und 
"10"
Das Bit für die 12/24 Umschaltung ist das Bit#6 - also
i2c_write(0x40); //24 hours format

von Wolfgang M. (avvf)


Lesenswert?

Danke für die Antowrten -> funktioniert einwandfrei! :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.