Hallo,
hat schon jemand Erfahrung mit einem RV-3029-C2 gemacht.
Möchte eine Uhr damit basteln und über I2C ansteuern. Verbindung und
aufbau stehen. jetzt fehlt mir nur noch der quellcode! da ich Einsteiger
bin würde mich über jede Hilfe freuen!
MfG
µC-Einsteiger
Selber Hallo,
die Hardware haste gut ausgesucht, es ist eine sehr unkomplizierte RTC
mit Kompensation des Temeraturdrifts ,wodurch sie sehr genau zu
justieren
geht und man kann den Temperatursensor sogar abfragen,somit kann man
auch
noch ein Thermometer ohne mehraufwand zusätzlich realisieren und das
ganze
zu einem mittlerweile super preis ;-)
Nun zu Deinem Quellcode-Problem.....fertigen Quellcode wirst Du bestimmt
finden, von mir könntest Du ihn z.B. in Assembler bekommen, allerdings
löst das nicht Dein "Anfängerproblem".
Welche Programmiersprache ist Dir am sympathischsten, bzw. nutzt Du?
Hast Du:
-Dich schon mal mit TWI (I2C) auseinandergesetzt?
-Das gut gestaltete Datenblatt zur RV-3029 angeschaut?
(speziell die Register der Uhr)
-schon Versuche zum auslesen unternommen?
Welchen MC verwendest Du?
MfG Launebaer
moin,
ich habe diese rtc bis heute nicht zum laufen gebracht, alles wurde
tausendfach überprüft.
die i2c adresse stimmt, sda und scl sind richtig angeschlossen, strom-
versorgung stimmt auch....trotzdem reagiert der klumpen auf nix!
in meiner verzweiflung habe ich ein testprogramm geschrieben welches
alle
möglichen i2c adressen mit einer start/stop-condition durchgeht und auf
acknowledge prüft und die adresse der antwortenden i2c-geräte anzeigt.
alle geräte (eeprom,lm75,ioexpander) melden sich hintereinander, aber
die
rv 3029 sagt keinen mux!
falsch anschließen kann man da nix großartig...in dem besch...
datenblatt
gibts ja auch kein schaltbeispiel, also gehe ich davon aus,das man nix
besonderes beachten muß....
vielleicht hat jemand das teil am laufen und kann ein paar tipps geben?!
grüße.....der da ist
Der da ist schrieb:> die i2c adresse stimmt, sda und scl sind richtig angeschlossen, strom-> versorgung stimmt auch....trotzdem reagiert der klumpen auf nix!
Schonmal andere I2C-ICs angesteuert?
Es soll Leute geben, die vergessen die Pullups (1,8 ... 4,7k).
Peter
ääähm,ja amkopfkratz
lieber peter dannegger, vielen dank für deinen hinweis!!
als ich deinen beitrag las,dachte ich mir "klar, wer ist so blöd und
vergisst die pullups?", ich war schon dran dich als "schlaumeier"
abzutun, aber von dir kommen hier sehr viele gute und fundierte
beiträge, weshalb ich lieber noch mal auf meiner schaltung nachsah ;-)
-->was soll ich sagen,bin ja nicht blöd,pullups sind drauf,aber die
falschen!! ompf
irgendwie hab ich in die falsche schublade gegriffen und 220Ohm
erwischt, alle phillips devices schaffen diese kurioser weise
herunterzuziehen und funktionieren, der kleine schweizer ist aber
warscheinlich zu schwach.
durch deine angabe des widerstandsbereiches kam mir diese überprüfung in
den sinn, sonst würde ich warscheinlich noch monde grübeln gg
also vielen dank nochmal für deine investierte zeit, vielleicht kann ich
sie dir irgendwann zurückgeben ;-)
grüße vom GooM
Ich Programmiere in Sprache C!
Verwende einen Atmega644
ja mit dem I2C habe ich kein Problem der funktioniert und habe ich schon
Programmiert!
habe noch keine Versuche unternommen diesbezüglich!
Sowie beim datenblatt da fehlen mir die gedankengänge.
Hallo,
> µC-Einsteiger schrieb:> Ich Programmiere in Sprache C!>> Verwende einen Atmega644
ich habe die RTC PCF8563 /RV 8564-C2 in Betrieb.
Die beiden sind mit der RV 3029-C2 bis auf einige Register kompatible.
(Was die Uhrzeit,Datum und Alarmzeit betrifft)
Werde Dir in Kürze den Code einstellen.
Gruß XMEGA
Ich komme einfach nicht weiter. Welche Register ich nutzen muss ist klar
doch wie lese ich sie aus! kann gerne auch mal meine I2C Routine
dazugeben wenn mir dabei dann jemand mehr helfen könnte.
#define RV3029C2_W_SEC 0x08
#define RV3029C2_W_MIN 0x09
#define RV3029C2_W_STD 0x0A
#define RV3029C2_REG_HR_12_24 (1<<6)
Wäre echt dankbar.
Brauche die Uhr um die werte wo gezählt werden alle 24 Std zu speichern,
zur Anzeige hab ich auch kein Display somit muss die Uhr im Quellcode
auch gestellt werden.
MfG,
µC-Einsteiger
Hallo,
habe dir einen funktionsfähigen Code beigelegt.
Uhrzeit, Datum wird zwar über ein Display ausgegeben.
Für dich ist nur der Code für die RV-3029-C2 entscheidend.
Gruß XMEGA
Hallo,
XMEGA schrieb:> habe dir einen funktionsfähigen Code beigelegt.
leider ist ein Hochladen von Dateien zur Zeit nicht möglich!!
Ich probiere es morgen nochmals.
Gruß XMEGA
Bekomme den Baustein nicht zum laufen!
zeigt immer 256 an bei minuten und Stunden mehr benötige ich nicht für
mein Programm.
i2c_start();
i2c_write(RV3029_lesen);
Minuten = i2c_read(1);
Stunden = i2c_read(0);
i2c_stop();
i2c_start();
i2c_write(RV3029_schreiben);
i2c_write(RV3029C2_W_MIN);
i2c_write(0x05);
i2c_write(0x03);
i2c_stop();
Sollte ja hier dann 03:05 ausgeben was allerdings nicht passiert.
Hallo,
µC-Einsteiger schrieb:> Sollte ja hier dann 03:05 ausgeben was allerdings nicht passiert
mit diesem lückenhaften Code kann dir kein Mensch helfen!
Gruß XMEGA
i2c_start();
i2c_write(RV3029_schreiben);
i2c_write(0x00);
i2c_write(0x01); //1Hz Takt einschalten
i2c_stop();
i2c_start();
i2c_write(RV3029_schreiben);
i2c_write(RV3029C2_W_MIN);
i2c_stop();
i2c_start();
i2c_write(RV3029_lesen);
Minuten = i2c_read(1);
Stunden = i2c_read(0);
i2c_stop();
i2c_start();
i2c_write(RV3029_schreiben);
i2c_write(RV3029C2_W_MIN);
i2c_write(0x05);
i2c_write(0x03);
i2c_stop();
uart_puts( dtostrf( Stunden, 1,0,string ) );
uart_puts(":"); uart_puts( dtostrf( Minuten, 1,0,string )
);
uart_puts(";");
zur Anzeige nutze ich HTERM. da ich die Uhr nur zur abfrage brauch ob es
24 Uhr ist. Sobald 24 Uhr muss wert im EEPROM gespeichert werden das ist
anversich ja das kleinere Problem. Wie gesagt es geht um die UHR!!!!!!
Hallo,
jetzt fehlt noch die I2C Adresse.
Reihenfolge beachten: Zuerst Zeit/Datum einschreiben, dann lesen!
> i2c_start();>> i2c_write(RV3029_lesen);>> Minuten = i2c_read(1);>> Stunden = i2c_read(0);>> i2c_stop();
laut Datenblatt:
Adrersse 08h Seconds
Adresse 09h Minutes
Adresse 0Ah Hours
Du liest die Control page aus!!
> i2c_start();>> i2c_write(RV3029_schreiben);>> i2c_write(RV3029C2_W_MIN);>> i2c_write(0x05);>> i2c_write(0x03);>> i2c_stop();
hier wird am Ende der Routine die Zeit eingeschrieben statt gelesen.
Wichtig!!
The time registers in the Clock pages are encoded in the Binary Coded
Decimal format (BCD) --> sollte unbedingt beachtet werden!
Stelle deinen gezippten Code mal hier ein.
Gruß XMEGA
Hallo,
das schaut schon mal gut aus, aber man kann deinen Code nicht ausführen.
So ist nichts zu machen.
Ich habe dir nochmals einen 100% lauffähigen Code eingestellt.
Also... man kann dir nur helfen, wenn du deinen Code in dieser Form
einstellst!!
Gruß XMEGA