Hallo Leute,
ich hab ein etwas gröberes Problem mit meiner RTC (Maxim DS1302).
Sie hat ne doofe datenbitcodierung :D
Ich verwende einen PIC18F452 der in C programmiert wird. Ziel ist es die
Uhrzeit der RTC auf einem LCD auszugeben.
Probleme:
Die Codierung ist schrott. Sie ist in der Form "byte", zählt aber
dezimal.
Sprich:
1 | byte day=01,mth=01,year=06,dow=01,hour=00,min=00,sec=00;
|
Wenn ich mich nicht irre müsste also hour=14,min=30,sek=15 14:30 Uhr
(15sek) sein.
Das is ein ziemlich großes problem für mich, denn ich kann bei meiner
selber programmierten lcd funktion nur Strings ausgeben.
1 | void lcd_println(char x_pos, char y_pos, char *ptr)
|
2 | {
|
3 | /*** Funktion ***/
|
4 |
|
5 | lcd_move_cursor(x_pos,y_pos); /* Position im DD-RAM einstellen */
|
6 | while(*ptr != 0) /* Solange nicht Ende der Zeichenkette */
|
7 | {
|
8 | lcd_write_char(*ptr++); /* Zeichen ausgeben und nächstes adressieren */
|
9 | }
|
10 | }
|
11 |
|
12 |
|
13 | void lcd_write_char(unsigned char character)
|
14 | {
|
15 |
|
16 | output_low(RW);
|
17 | output_high(RS);
|
18 | output_high(E);
|
19 | output_b(character);
|
20 | delay_ms(2);
|
21 | output_low(E);
|
22 | delay_us(1);
|
23 | output_low(RS);
|
24 | output_high(RW);
|
25 | delay_us(2);
|
26 |
|
27 |
|
28 | }
|
29 |
|
30 |
|
31 | void lcd_move_cursor(char x_col, char y_row) /* (Spalte, Zeile) */
|
32 | {
|
33 | output_low(RW);
|
34 | output_high(E);
|
35 | output_b(scrn_loc[y_row - 1][x_col - 1]); /* Cursor-Position aus Tabelle */
|
36 | delay_ms(2);
|
37 | output_low(E);
|
38 | delay_us(1);
|
39 | output_high(RW);
|
40 | delay_us(2);
|
41 |
|
42 | }
|
Also bräuchte ich irgendwas womit ihc das umwandeln könnte. int to
string funktioniert soweit (sprintf), jedoch kommt ab einer gewissen
zeit nur noch blödsinn raus (anfangs zählt er gut, aber dann gehen die
sekunden rauf bis 90 und dann kommen erst die minuten).
Ich denke mir bleibt nicht viel mehr übrig als sich selbst den code
umzuwandeln. Leider is das nur ziemlich mühseelig da ich im prinzip mir
die variable nicht ansehen kann und somit nur vermuten kann welchen
zustand sie haben. (serielle schnittstelle vorhanden, jedoch keine
erfahrung bzw noch nicht zum laufen gebracht)
Vielleicht hat jemand von euch vorschläge.
m.f.g. Markus