Hi,
ich will ein RTC Uhr über das Display stellen. Es handelt sich dabei um
den DS1307 der mit dem Code (s.Anhang) an diesem Board :
http://shop.myavr.de/Baus%C3%A4tze%20und%20Platinen/myAVR%20Board%20MK2%20USB%20PLUS,%20Bausatz.htm?sp=article.sp.php&artID=47
betrieben wird. Es funktioniert auch schon prima. Doch kriege ich es
einfach nicht hin die Uhr zu stellen. Wie muss ich welches Register
beschreiben damit ich mit dem Code im Anahng die Uhr stellen kann ? Wäre
prima wenn mir einer hilft.
Ich übertrage die Uhr zur LCD so:
1
if(rtc_read(&rtc)==RTC_NO_ERROR)
2
{
3
4
5
//Stunden
6
lcd_setcursor(8,1);
7
8
//Int to ASCII umwandlung
9
itoa(rtc.time[0],itoa_lcd_buffer,10);
10
lcd_string(itoa_lcd_buffer);// Ausgabe an das LCD-Display
11
12
13
lcd_setcursor(9,1);
14
15
//Int to ASCII umwandlung
16
itoa(rtc.time[1],itoa_lcd_buffer,10);
17
lcd_string(itoa_lcd_buffer);// Ausgabe an das LCD-Display
18
19
//Doppelpunkt
20
lcd_setcursor(10,1);
21
22
23
//Int to ASCII umwandlung
24
itoa(rtc.time[2],itoa_lcd_buffer,10);
25
lcd_data(lcd_doppelpunkt);
26
27
28
//Minuten
29
lcd_setcursor(11,1);
30
31
//Int to ASCII umwandlung
32
itoa(rtc.time[3],itoa_lcd_buffer,10);
33
lcd_string(itoa_lcd_buffer);// Ausgabe an das LCD-Display
34
35
36
lcd_setcursor(12,1);
37
38
//Int to ASCII umwandlung
39
itoa(rtc.time[4],itoa_lcd_buffer,10);
40
lcd_string(itoa_lcd_buffer);// Ausgabe an das LCD-Display
41
42
//Dopelpunkt
43
lcd_setcursor(13,1);
44
45
//Int to ASCII umwandlung
46
itoa(rtc.time[5],itoa_lcd_buffer,10);
47
lcd_data(lcd_doppelpunkt);
48
49
//Sekunden
50
lcd_setcursor(14,1);
51
52
//Int to ASCII umwandlung
53
itoa(rtc.time[6],itoa_lcd_buffer,10);
54
lcd_string(itoa_lcd_buffer);// Ausgabe an das LCD-Display
55
56
57
lcd_setcursor(15,1);
58
59
//Int to ASCII umwandlung
60
itoa(rtc.time[7],itoa_lcd_buffer,10);
61
lcd_string(itoa_lcd_buffer);// Ausgabe an das LCD-Display
Sebastian K. schrieb:> ich will ein RTC Uhr über das Display stellen.
Das geht schonmal garnicht, ein Display macht nur Ausgaben.
Du brauchst Eingabegeräte, z.B. Tasten.
Und dann mußt Du erstmal einen Ablaufplan machen, wie Du mit den Tasten
die Werte ändern willst.
Und erst danach kannst Du überhaupt den PAP in Code umsetzen.
Peter
Hi Peter,
ja das ist klar. Ich wollte das so machen das ich über einen Taster die
Zeiten hochzähle. (zB.: 19:30:15 ) Ich kann mit den Tasten dann die
19(Stunden) hochzählen oder die 30 (Minuten) usw. wenn ich dann die
richtige Zeit eingestellt habe will ich über eine "Übernahme"-Taste den
Wert zur RTC-übertragen. Und daran scheiterts im Moment.
Könntest Du mir da einwenig weiterhelfen wo ich ansetzen muss ?
Vieeelllleeen Dank
Hallo
Woran scheitert es?
Du findest nicht die richtigen Register im RTC?
http://www.datasheetcatalog.org/datasheet/maxim/DS1307.pdf
Seite 4
Du hast keine Ahnung, wie I2C funktioniert?
Gleiches Datenblatt weiter hinten.
Gruß
Joachim
Du must schon deutlich konkreter werden.
Wo hast Du Probleme und was hast Du bereits gemacht?
Wie ist die Bedienerführung gedacht?
Zeig dochmal Deinen PAP.
Peter
Danke Rolf, ich werde dein Code mir auch einmal verinnerlichen ob ich
davon was gebrauchen kann.
@ Peter. Was ich schon gemacht habe ist eigentlich nur folgendes:
In der rtc.c gibt es ja die Function "rtc_write" und damit habe ich dann
versucht ein Register zu beschreiben:
Da habe ich erstmal ganz simple versucht irgendwelche Bits im Register
zu beeimern um zu sehen ob sich überhaupt was tut. Tat es natürlich
nicht, da ich zugegebenermaßen alles nicht bis ins kleinste Detail
verstanden habe. Dafür das ich aber erst 4 Wochen unregelmäßig mit
Mikrocontroller arbeite gehts aber schon so lala....
Sebastian K. schrieb:> warum machst Du das während dem Sekundenwechsel ?
Nicht während, sondern unmittelbar nach dem Sekundenwechsel. So kann ich
ziemlich sicher sein, dass während dem Beschreiben der Register die
Uhrzeit nicht ändert.
Direkt zum DS1307 kann ich Dir nicht helfen, ich benutze immer nur den
internen Timer als RTC.
Dann braucht man nichts hin und her zu schicken und kann auch Sommerzeit
einbauen.
Peter
Nikolaus schrieb:> Problem ist nur der Stromausfall.
Kommt drauf an, wo Du wohnst.
An den letzten Netzausfall kann ich mich nicht mehr erinnern, 2010 war
jedenfalls keiner.
Außerdem haben größere AVRs (ab ATmega48) die Möglichkeit, einen
Uhrenquarz dranzupappen. Mit nem 1F Goldcap sollten da mehrere Wochen
gepuffert werden können.
Peter
Nikolaus schrieb:> Problem ist nur der Stromausfall. Oder ? Beim RTC kein Problem da mit> Batterie.
:-)
Da könnte man auch sagen:
Das Problem einer RTC ist, dass die Batterie irgendwann leer wird