Hallo! Ich suche einen C Code für die DS1307 RTC von Dallas. Und zwr möchte ich die zeit mit der I2C Library von Peter Fleury auslesen. eigentlich brauch ich ja nur den Auslesevorgang, da ich eh mit dam Datenblatt nich herbekomme. Danke schon mal! Gruß, Laura
"...I2C Library von Peter Fleury..." Ich denke nicht, daß es sinnvoll ist, die Lösungssuche so stark einzuschränken. Entweder der Peter Fleury hat ein eigenes Forum oder Du bist auch offen für andere Lösungen. Die bisherigen Antworten sind nicht unhöflich gemeint, sie sagen nur durch die Blume, daß diese Leute den DS1307 bzw. die "I2C Library von Peter Fleury" nicht kennen (wie ich). Persönlich halte ich nichts davon den I2C als eine Black-Box zu betrachten. Besonders als Software-Singlemaster ist er eigentlich gut zu verstehen und portabel. Ich bin gerade dabei den Hardware-I2C des ATMEGA8 zu benutzen, allerdings als Multimaster. Lustig ist, daß er funktional 100% vom Philips 80C552 abgekupfert ist. Peter
Meine I2C Library ist für den AVR und AVR-GCC Compiler geschrien. Deshalb wäre es eigentlich sinnvoller Laura würde diese Frage im AVR-GCC Forum auf dieser Site stellen. Zu meiner I2C library gibt es ein Beispiel (Lesen/Schreiben von I2C EEprom). Der Dallas RTC 1307 kann angesteuert werden wie ein I2C EEprom. Dazu muss man allerdings das Datenblatt des 1307 lesen um zu verstehen wie die einzelnen Register anzusprechen sind.
ich habe den DS1307 vom PIC18F452 angesprochen. Der Compiler ist CCS http://www.ccsinfo.com/picc.shtml Gruss Markus
Hat überhaupt schon mal jemand den DS1307 mit der I2C Library von Peter Fleury zum Laufen gebracht ? Wenn ich den DS1307 ansteuere wie im EEprom Beispiel angegeben, dann hängt sich der Mega128 auf..... Greets Karlheinz
ja das selbe problem hab ich auch allerdings mitm atmega32 passiert einfach nichts und controller hängt sich auf, bzw ich komm nur bis zur fehlermeldung die vom LCD ausgegeben wird, Pegel passen aber alle vom I2C bin auch noch nicht so gewand in C kleine hilfe wäre echt super vielen dank Flo
Ich habe es mittlerweile am Laufen, allerdings mit anderen Routinen aus dem Net: Auszug aus dem Quellcode: RTC_DATE_TIME rtc; if (rtc_read(&rtc)== RTC_NO_ERROR) { sprintf(buffer, "%s: %d%d:%d%d:%d%d - %d%d.%d%d.%d%d%d%d", "Current timestamp of RTC is", rtc.time[0], rtc.time[1], rtc.time[3], rtc.time[4], rtc.time[6], rtc.time[7], rtc.date[0], rtc.date[1], rtc.date[3], rtc.date[4], rtc.date[6], rtc.date[7], rtc.date[8], rtc.date[9]); uart1_puts(buffer); uart1_puts("\n\r"); } else { uart1_puts("Error reading RTC\n\r"); }
tataaa es funktioniert auch mit peter fleury i2c include file lag am unübersichtlichen datenblatt...hatte die adresse für den ds1307 falsch peinlich
Hi Harald oder alle Anderen, hoffe du treibst dich hier noch rum. Habe da nämlich eine Frage und zwar habe ich mit "deinem" Code die RTC DS1307 am laufen, sie funktioniert prima. Jetz will ich jedoch die Uhr über das LCD Display stellen . Wie kann ich das denn machen ? Da gibt es ja die "rtc_write" aber ich weiss nicht wie ich da irgendetwas in das passende Register rein schreiben kann. Benutze ein Atmega8. Hast Du oder jemand anderes einen Tip ?
Hallo, ich habe die Dateien von "grieko" verwendet, jetzt stürzt der Controller zwar nicht mehr ab bei der Kommunikation, jedoch kann ich nur Nullen lesen. Bei der Implementierung einer Register Initialisierung scheitert es dann auch noch. Es ist kein 1Hz (4,8,32kHz) Signal machbar, als ob das Register nicht reagiert. Hier der Auszug aus der INI:
1 | unsigned char rtc_init(void) |
2 | {
|
3 | unsigned char errorStatus; |
4 | |
5 | errorStatus = i2c_start(); |
6 | if(errorStatus == RTC_ERROR) |
7 | {
|
8 | i2c_stop(); |
9 | return(RTC_ERROR); |
10 | }
|
11 | |
12 | errorStatus = i2c_sendAddress(0b11010000); |
13 | if(errorStatus == RTC_ERROR) |
14 | {
|
15 | i2c_stop(); |
16 | return(RTC_ERROR); |
17 | }
|
18 | |
19 | errorStatus = i2c_sendData(0b00000111); |
20 | if(errorStatus == RTC_ERROR) |
21 | {
|
22 | i2c_stop(); |
23 | return(RTC_ERROR); |
24 | }
|
25 | |
26 | errorStatus = i2c_sendData(0b10010000); |
27 | if(errorStatus == RTC_ERROR) |
28 | {
|
29 | i2c_stop(); |
30 | return(RTC_ERROR); |
31 | }
|
32 | |
33 | i2c_stop(); |
34 | return(RTC_NO_ERROR); |
35 | }
|
Kann mir jemand sagen, wieso die RTC nicht startet, bzw den Ausgang nicht Taktet? Das Datenblatt http://www.pobot.org/IMG/pdf/ds1307.pdf sowie http://datasheets.maximintegrated.com/en/ds/DS1307.pdf habe ich bereits zu Hilfe gezogen. Leider bisher ohne Erfolg, aber dafür mit noch mehr Fragen ... Grüße und Danke Schonmal
So... Nach etlichem Gesuche und Probieren habe ich etwas gefunden mit dem es Funktioniert. https://github.com/Osteri/DS1307 Ist zwar ein anderes Rückgabeformat, aber denn noch sehr einfach gehalten und auch gut zu verstehen. Danke und GT_N8
Denis K. schrieb: > Kann mir jemand sagen, wieso die RTC nicht startet, bzw den Ausgang > nicht Taktet? die 1307 braucht doch ein stop start command ich mache das ja mit der arduino LIB und verzweige bei Bedarf auf DS1307 oder DS3231 ich weiss ja nicht wie ihr das verwendet, mit start und stop für die DS1307?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.