[AVR C - banalne] PCF8583 konwersja BCD>BIN>DEC.

Mar 09, 2006 3 Replies

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



  1. 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


Witam ponownie,

Programik juz dziala :))) Odpowiedz dostalem na forum:

formatting link
Pozdrawiam

Fabryka napisał(a):

[...]

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

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required