Jak wysłać aktualny czas z RTC PCF8583 jako string przez UART w AVR C?
[AVR C - banalne] PCF8583 konwersja BCD>BIN>DEC.
From: "Fabryka" <zielsko_at_nospam_o2.pl>
Subject: [AVR C - banalne] PCF8583 konwersja BCD>BIN>DEC.
Date: Thu, 9 Mar 2006 22:40:21 +0100
Witam,
Mam dosc banalny problem, ale za nic
nie potrafie go rozwiazac.
Napisalem programik do sterowania centralką alarmową
w Codevision C AVR na ATMega128.
Na plytce centralki jest zegar RTC PCF8583.
Wszystko pieknie dziala, poza jednym z zadan programu, ktorym jest wysylanie
aktualnego czasu pobranego z zegara poprzez
UART do szyfratora z wyswietlaczem LCD.
Problem polega na tym, ze wbudowane w biblioteki
procedury pobieraja czas z RTC i konwertuja go bcd2bin.
Chcialbym wyslac aktualny czas jako string np. "time: 22:24:58"
Jak narazie uzywam putchar() i wysylam pojedynczo godziny, minuty
i sekundy, a na koncu CR,LF.
Ale na porcie szeregowym w oknie terminala na
PC pojawiaja sie znaki Ascii (#$%-+()0123 itd...) zamiast np. sekund od 0 do
59.
Probowalem uzywac roznych funkcji wbudowanych (np. atoi() -
w tym przypadku jednak nic nie jest wysylane)
ale wciaz na port szeregowy wysylane sa znaki ASCI odpowiadajace aktualnie
odczytanej z zegara liczbie (sekundzie, minucie, godzinie).
Podobno funkcja printf ma takie mozliwosci konwersji, ale w Codevision
jest ona "biedniejsza" i moze wysylac tylko stringi z pamieci programu.
Co robie nie tak ?
Co i na co powienienem przekonwertowac i w jaki sposob ?
Z gory dziekuje za jakiekolwiek podpowiedzi
Pozdrawiam
From: "Fabryka" <zielsko_at_nospam_o2.pl>
Subject: Re: [AVR C - banalne] PCF8583 konwersja BCD>BIN>DEC.
Date: Thu, 9 Mar 2006 23:17:19 +0100
Witam ponownie,
Programik juz dziala :)))
Odpowiedz dostalem na forum:
https://www.elektroda.pl/rtvforum/topic468830.html
Pozdrawiam
From: Adam Dybkowski <adybkows123_at_nospam_amwaw.edu.pl>
Subject: Re: [AVR C - banalne] PCF8583 konwersja BCD>BIN>DEC.
Date: Sat, 11 Mar 2006 23:09:52 +0100
Fabryka napisał(a):
Napisalem programik do sterowania centralką alarmową
w Codevision C AVR na ATMega128.
[...]
Podobno funkcja printf ma takie mozliwosci konwersji, ale w Codevision
jest ona "biedniejsza" i moze wysylac tylko stringi z pamieci programu.
To znaczy, że nie zadziała zwykły:
printf ("%d", counter);
ani na przykład
printf_P (PSTR ("%d"), counter); ?
W takim razie czas przejść na avr-gcc.
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.
From: "Fabryka" <zielsko_at_nospam_o2.pl>
Subject: Re: [AVR C - banalne] PCF8583 konwersja BCD>BIN>DEC.
Date: Sun, 12 Mar 2006 09:39:38 +0100
To znaczy, że nie zadziała zwykły:
printf ("%d", counter);
ani na przykład
printf_P (PSTR ("%d"), counter); ?
W takim razie czas przejść na avr-gcc.
Ponizej cycat z help'a do Codevision...
...chyba, ze ja to jakos zle rozumiem :/
"void printf(char flash *fmtstr [ , arg1, arg2, ...])
outputs formatted text, using putchar, according to the format specifiers in
the fmtstr string.
The format specifier string fmtstr is constant and must be located in FLASH
memory.
The implementation of printf is a reduced version of the standard C
function.
This was necessary due to the specific needs of an embedded system and
because
the full implementation would require a large amount of FLASH memory space."
Pozdrawiam