Na początku chciałem się serdecznie przywitać, to mój pierwszy post...
Jestem bardzo początkującym programistą avr'ów i natrafiłem pewnie na bardzo prosty do rozwiązania problem, lecz samemu chyba sobie nie poradzę:
Robię klasyczny zegarek na atmedze + pcf8583, schemat poniżej:
Korzystam z gotowych bibliotek rklibavr. Symulacja w programie proteus.
Moje pytanie brzmi, jak po prostu wyświetlić czas pobrany z rtc na wyświetlaczu? Oraz czy mój sposób ustawiania godziny jest poprawny? Gdyż na przykład chcę wpisać 10 minut to wyświetlacz pokazuje za każdym razem coś innego.
Przy odczycie mam następny problem.
-odlicza mi 10 sekund a później brak zmiany. RTC zdaje się nie liczyć dalej.
Oto mój plik main, wszystko ładnie się kompiluje, biblioteki podpięte.
Bardzo proszę o pomoc, lub chociaż naprowadzenie co jest nie tak...
A może PROTEUS nie potrafi zasymulować poprawnie PCF8583??

Jestem bardzo początkującym programistą avr'ów i natrafiłem pewnie na bardzo prosty do rozwiązania problem, lecz samemu chyba sobie nie poradzę:
Robię klasyczny zegarek na atmedze + pcf8583, schemat poniżej:
Korzystam z gotowych bibliotek rklibavr. Symulacja w programie proteus.
Moje pytanie brzmi, jak po prostu wyświetlić czas pobrany z rtc na wyświetlaczu? Oraz czy mój sposób ustawiania godziny jest poprawny? Gdyż na przykład chcę wpisać 10 minut to wyświetlacz pokazuje za każdym razem coś innego.
Przy odczycie mam następny problem.
-odlicza mi 10 sekund a później brak zmiany. RTC zdaje się nie liczyć dalej.
Oto mój plik main, wszystko ładnie się kompiluje, biblioteki podpięte.
Bardzo proszę o pomoc, lub chociaż naprowadzenie co jest nie tak...
A może PROTEUS nie potrafi zasymulować poprawnie PCF8583??
int main(void)
{
typedef unsigned char u08;
u08 godz,min,sek,setne,i;
LCD_init(); // inicjalizacja LCD
PCF8583_init(); // inicjalizacja rtc
delayms1000();
LCD_cursor_on();
delayms1000();
LCD_clear();
delayms1000();
PCF8583_set_time(20,10,0,0); // chce ustawic godzine 20:10
while(1)
{
LCD_xy(0,0);
PCF8583_get_time(&godz,&min,&sek,&setne);
delayms(1000);
LCD_putU08(godz);
LCD_putU08(min); // wyswietl
LCD_putU08(sek);
}
}