Witam,
Zacząłem używać MMxmega128 f-my Propox Link. Z RTC nie było problemu, ale umoczyłem w temacie podtrzymania bateryjnego. Nie wiem jakie i jak ustawić rejestry w Battery Backup. Szukam także dwóch plików: vbat.c i vbat.h o których wspomina nota Atmela. Czy ktoś coś pomoże w temacie? Oczywiście bateria jest na swoim miejscu.
Układ podtrzymywania RTC ma własny układ BOD, niezależny od procesora. Więc tych fusebitów nie musisz ruszać. O działaniu i stanie podtrzymania dla RTC dowiesz się z jego rejestru VBAT.Status. Co do RTC32, to jaki konkretnie masz problem? To zwykły licznik, po prostu go odblokowujesz w rejestrze RTC32.CTRL. Te pliki, których szukasz są w ASF, możesz je dodać dodając w AS6 moduł RTC, ale zdecydowanie odradzam ci takie działanie. Prościej po prostu napisać parę linii kodu w czystym c.
RTC32 w Xmega nie jest takim zwykłym licznikiem. Po pierwsze jest licznikiem asynchronicznym, więc odczytanie zawartości rejestrów wymaga najpierw wymuszenia synchronizacji (co trwa dość długo w skali czasu uC). Później można odczytać wartość zachowując kolejność odczytów od najmniej znaczącego bajty do najbardziej znaczącego.
Uruchomienie licznika też wymaga uwagi, ponieważ są ograniczenia dotyczące rejestrów PERIOD i COMPARE i konieczne jest oczekiwanie na zakończenie synchronizacji jeżeli chcesz włączyć licznik.
Korzystanie z przerwań jest już znacznie łatwiejsze.
Biblioteka dla RTC32 w ASF nie bez powodu jest tak rozbudowana. Jeżeli z niej skorzystasz, to na 100% wszystko działa od pierwszego włączenia, w przeciwnym przypadku możesz stracić sporo czasu i nerwów.
Zastanawia mnie tylko jedno, jakim cudem masz RTC32 i podtrzymanie bateryjne w Xmega128A3, jeżeli tylko wersje XmegaxxxA3B(U) mają pin VBAT i 32-bitowy zegar czasu rzeczywistego? Chyba, że mówisz o 16-bitowym RTC, pędzonym z generatora 32kHz?
Zastanawia mnie tylko jedno, jakim cudem masz RTC32 i podtrzymanie bateryjne w Xmega128A3, jeżeli tylko wersje XmegaxxxA3B(U) mają pin VBAT i 32-bitowy zegar czasu rzeczywistego? Chyba, że mówisz o 16-bitowym RTC, pędzonym z generatora 32kHz?
Dzięki za wyjaśnienie - cenne uwagi.
Po kolei:
1. Nabyłem w PROPOXIE płytkę jak w linku w pierwszym poście, gdzie fabryka pisze o bateryjnym podtrzymaniu - jest nawet stosowna podstawka pod baterię. Rozumiem zatem, że jest to wersja "U", bo odczytać się nie da, ze względu na wspomnianą podstawkę.
2. W pierwszej kolejności uruchomiłem RTC 16-bitowe - no problem.
3. Po uwadze Kolegi tmf o podtrzymaniu bateryjnym tylko RTC32, postanowiłem przenieść się do RTC32 i poćwiczyć.
4. Mam nadzieję co do wersji "U" - jak to sprawdzić bez rujnowania podstawki pod baterię?
Pozdrawiam
Staszek
Edit: Jeśli to nie jest wersja "U" to do czego ma być bateria litowa?
Bo ja wiem, konfiguracja RTC32 z VBAT to jakieś 10 linii kodu, łącznie ze sprawdzaniem statusu VBAT po restarcie. Nie ma sensu wrzucać ASF, które wymusi sto kolejnych rzeczy. Z ASF jedyne co warto w kontekście RTC wykorzystać, to calendar.h, który ma Atmelowskie wersje funkcji konwersji czasu, podobnych do tych z biblioteki standardowej - time.h. Co fajne, nie są one zależne od innych komponentów ASF.
Co do kolejności operacji - wystarczy nie traktować tych rejestrów jako 8-bitowych kawałków, tylko od razu odnosić się do RTC32.CNT, czy RTC32.PER i kompilator sam zadba o właściwą kolejność. Cała synchronizacja to ustawienie bitu RTC32_SYNCCNT_bm w rejestrze RTC32.SYNCCTRL i ewentualne czekanie na koniec synchro przez sprawdzenie czy flaga ta została wyzerowana, co sygnalizuje koniec synchronizacji. IMHO żadna filozofia.
Dodano po 2 [minuty]:
sbruski napisał:
Marek_Skalski napisał:
Zastanawia mnie tylko jedno, jakim cudem masz RTC32 i podtrzymanie bateryjne w Xmega128A3, jeżeli tylko wersje XmegaxxxA3B(U) mają pin VBAT i 32-bitowy zegar czasu rzeczywistego? Chyba, że mówisz o 16-bitowym RTC, pędzonym z generatora 32kHz?
Dzięki za wyjaśnienie - cenne uwagi.
Po kolei:
1. Nabyłem w PROPOXIE płytkę jak w linku w pierwszym poście, gdzie fabryka pisze o bateryjnym podtrzymaniu - jest nawet stosowna podstawka pod baterię. Rozumiem zatem, że jest to wersja "U", bo odczytać się nie da, ze względu na wspomnianą podstawkę.
2. W pierwszej kolejności uruchomiłem RTC 16-bitowe - no problem.
3. Po uwadze Kolegi tmf o podtrzymaniu bateryjnym tylko RTC32, postanowiłem przenieść się do RTC32 i poćwiczyć.
4. Mam nadzieję co do wersji "U" - jak to sprawdzić bez rujnowania podstawki pod baterię?
Pozdrawiam
Staszek
Sprawdzić sygnaturę procka, po niej można go zidentyfikować. Z drugiej strony jeśli masz RTC16 to nie masz RTC32, czyli nie jest to wersja BU.
Dodano po 7 [minuty]:
Rzuć też okiem na schemat dostępny na stronie propoxa. Masz tam typ MCU, niestety nie jest to wersja BU, a bateria jest myląca. Nie jest nigdzie podłączona, tylko wyprowadzona na złącze. Możesz sobie z niej zrobić awaryjne zasilanie we własnym zakresie, lub dodać ją jako obciążnik do modułu
Dodano po 1 [minuty]:
Trochę sobie Propox w kulki pojechał, dziwne bo to bardzo dobra firma. W podobnej cenie masz moduł z XMEGA256A3BU, pasujący do stykówki, z wgranym bootloaderem z modułowa - http://modulowo.com.pl/pl/p/MOD-11.Z-Xmega-eXplore-z-ATXmega256A3BUzmontowany/196 Mogę polecić, sam używam. Wersja z 64 lub 128 kB FLASH byłaby tańsza.
Edit: NA PEWNO 128A3....
PROPOX zarobił u mnie negatywa...
Dodano po 49 [minuty]:
tmf napisał:
Trochę sobie Propox w kulki pojechał, dziwne bo to bardzo dobra firma. W podobnej cenie masz moduł z XMEGA256A3BU, pasujący do stykówki, z wgranym bootloaderem z modułowa - http://modulowo.com.pl/pl/p/MOD-11.Z-Xmega-eXplore-z-ATXmega256A3BUzmontowany/196 Mogę polecić, sam używam. Wersja z 64 lub 128 kB FLASH byłaby tańsza.
Moduł zachęcający... korzystasz z bootloadera? Jeśli tak, to czym wstrzykujesz?