Witam,
1. Mam nie lada zagwozdkę z obsługą zegara PCF8563p przez Atmege32 + wyświetlacz LCD. Sam zegar działa dobrze. Poprawnie wpisuje datę i godzinę. Problem pojawia się z odczytem. W PCF ustawiam wyjście na 1Hz, które jest połączone z Atmegą jako przerwanie INT0. Co kilka razy, przy resecie uC, gdy program startuje od nowa, to czas zaczyna się niepoprawnie wyświetlać. Tj. najpierw wyświetlana jest wartość 02 sekundy, następnie 00, później 04, 00, 06, 00,...,10, 00, 12, itd. Problem dotyczy również przejścia minut i godzin. Próbowałem opóźnić odczyt po ustawieniu wyjścia PCF, ale to nie rozwiązuje problemu, również prosty odczyt w pętli z opóźnieniem nie pomaga. Właściwie próbowałem już wszędzie opóźniać program, ale chyba nie tędy droga.
2. Zaczerpnąłem już pomocy w dziale programowanie, trochę pozmieniałem kod - wypisywanie na ekran wrzuciłem do pętli głównej, a nie jak to było wcześniej, w funkcjach. Została dodana flaga do LCD, ale nie działa tak jak powinna. Może ktoś zauważy jakiś błąd...
3. Obsługa termometrów jest w tej chwili nieistotna - wywołanie funkcji zakomentowane.
4. Mam jeszcze jeden problem. Obecnie ATmega chodzi na 8Mhz z zegara wewnętrznego. Chciałem ją popędzić, ale z kwarcem zewnętrznym powyżej 10MHz już się zawiesza. Nie wiem co jest przyczyną. Tak ustawiam fusy:
Poniżej zamieszczam kod. Proszę o jakieś sugestie.
1. Mam nie lada zagwozdkę z obsługą zegara PCF8563p przez Atmege32 + wyświetlacz LCD. Sam zegar działa dobrze. Poprawnie wpisuje datę i godzinę. Problem pojawia się z odczytem. W PCF ustawiam wyjście na 1Hz, które jest połączone z Atmegą jako przerwanie INT0. Co kilka razy, przy resecie uC, gdy program startuje od nowa, to czas zaczyna się niepoprawnie wyświetlać. Tj. najpierw wyświetlana jest wartość 02 sekundy, następnie 00, później 04, 00, 06, 00,...,10, 00, 12, itd. Problem dotyczy również przejścia minut i godzin. Próbowałem opóźnić odczyt po ustawieniu wyjścia PCF, ale to nie rozwiązuje problemu, również prosty odczyt w pętli z opóźnieniem nie pomaga. Właściwie próbowałem już wszędzie opóźniać program, ale chyba nie tędy droga.
2. Zaczerpnąłem już pomocy w dziale programowanie, trochę pozmieniałem kod - wypisywanie na ekran wrzuciłem do pętli głównej, a nie jak to było wcześniej, w funkcjach. Została dodana flaga do LCD, ale nie działa tak jak powinna. Może ktoś zauważy jakiś błąd...
3. Obsługa termometrów jest w tej chwili nieistotna - wywołanie funkcji zakomentowane.
4. Mam jeszcze jeden problem. Obecnie ATmega chodzi na 8Mhz z zegara wewnętrznego. Chciałem ją popędzić, ale z kwarcem zewnętrznym powyżej 10MHz już się zawiesza. Nie wiem co jest przyczyną. Tak ustawiam fusy:
Poniżej zamieszczam kod. Proszę o jakieś sugestie.
Kod: C / C++