Programowanie DS3231.

  Nadszedł czas porządków. Trochę uciążliwe było ustawianie czasu w module RTC. Ponieważ moduł bootloadera działa bez zarzutu, wystarczy dopisać trochę kodu.

DS3231 setting.
Ustawianie czasu w CA80 za pomocą DS3231.


Pętla główna programu dla ATmega32 służy do obsługi wirtualnej klawiatury i MikSida. Możemy używać dowolną klawiaturę, ale wtedy Miksid nie będzie działał. Nie przeszkadza to w komunikacji między procesorami. Nie musimy podłączać terminala, żeby zaprogramować RTC. Oczywiście w czasie pisania programu korzystałem z tego dobrodziejstwa. 😎


Zasada działania jest prosta: w czasie rozruchu zawartość plików z karty SD jest ładowana do RAM CA80, a następnie czas z modułu RTC do zmiennych monitora. Dopisałem krótki program, który prześle siedem bajtów od SEK do ROK. Żeby dane zostały rozpoznane przez bootloader, należy paczkę poprzedzić literą T (tak przyjąłem, ale nie jest wykluczone, że to się zmieni, bo w oryginalnym MikSidzie T włącza wykonanie zadanej liczby rozkazów). Po odebraniu danych zostają one wyświetlone w postaci cyfr oddzielonych ukośnikiem (dodałem to na czas debugowania), po czym następuje transmisja I2C do DS3231. Pierwsze ustawienie czasu musimy zrobić ręcznie w CA80 (zlecenie 1 i 2), co widać na załączonym zrzucie ekranu. Dniem tygodnia nie musimy się przejmować, bo bootloader i tak go wylicza  na podstawie daty.

DS3231-CA80
Procedury transmisji danych widziane przez MikSid.


Na obrazie widzimy przebieg rozruchu, zakończony transmisją czasu. Nowy moduł ma przypadkowe wartości: "00/01/08/02/09/20/31/". Dalej mamy "0" czyli wyświetlenie czasu w CA80, "M" - przejście do monitora, "1" - ustawienie godziny ("119.33.0="), "2" - ustawienie daty ("223.6.29.4="). Na koniec uruchamiamy program transmisji do bootloadera: "G3E10="), który powoduje wyświetlenie odebranych danych: "23/06/29/04/19/33/32/" i przesłanie ich do DS3231. Jak widać, zajęło mi to 32 sekundy. 😀


Po całej operacji zrestartowałem bootloader i na koniec pojawił się świeżo ustawiony czas: "23/06/29/04/19/33/50/" . Rozruch trwa 18 sekund a może mniej, bo nie pamiętam, czy od razu nacisnąłem reset. 😉


Myślę, że dodam nowe repozytorium, bo nie sprawdziłem, czy nowy program będzie działał na starych płytkach... Ostatnio wprowadziłem sporo poprawek i nie wszystko jeszcze przetestowałem. Czeka mnie jeszcze dużo pracy.💪

Komentarze

Popularne posty z tego bloga

Uruchamiamy CA80 na RCbus.

Magnetofon CA80.