W dniu 15.02.2013 20:22, eltomekBW pisze:
Hurrra. Udało mi się okiełznać githuba i cały kod wariometru jest już
tam dodany:
https://github.com/SP8EBC/ParaSOFT-testing_0.9.0_EAP-R2.1
Teraz powinno się o wiele przyjemniej go przeglądać. Dodam też, że
wszystko zostało stworzone w pakiecie Keil uVision 4, ale powinno się
skompilować pod w zasadzie każdym kompilatorem dla procesorów ARM.
Co do wyświetlaczy to nad graficznymi też się zastanawiałem, ale w sumie
zdecydowałem się na alfanumeryczny... Z graficznymi jest problem
znalezienia takiego który dawał by ładny obraz nawet w ostrym słońcu a
nie miałem za bardzo jakiś sampli żeby sprawdzić jak to działa. Miałem
za to dwie sztuki HD44780 także brałem co było dostępne. Te od Nokii i
Siemensa odpadały bo są po prostu za małe i za mało wyraźne.
Co do GPSa to mam już gotową bibliotekę do parsowania danych NMEA, jest
dołączona do tego projektu i można ją zobaczyć w pliku gps_navi.c .
Sprawdzałem ją wprawdzie bez odbiornika GPS, wysyłając zapisane kiedyś
ramki NMEA przez HyperTerminal ale działało bardzo dobrze, więc sądzę,
że z odbiornikiem tez da radę.
Ten Cortex-M3 się tam w zasadzie nudzi. Zdecydowana większość jego czasu
zabiera pętla opóźniająca w sterowniku wyświetlacza. Niestety, ale są
one pod tym względem ułomne i o ile dobrze pamiętam po każdej wysłanym
znaku trzeba czekać aż 2ms!! A to jest bardzo dużo biorąc pod uwagę, że
większość rozkazów w tym procku wykonuje się w czasie poniżej 1
mikrosekundy. Z drugiej jednak strony wyświetlacz pobiera szczytowo
jakieś 200uA (dwieście mikro amperów). Wziąłem najlepszy sprzęt do
którego miałem dostęp tak aby w toku dalszego rozwoju nie było problemów
z brakiem wydajności procesora. Cortexy-M4F są faktycznie ful wypas.
Oprócz jednostki zmiennoprzecinkowej mają DSP z jakimiś fajnymi
rozkazami wspomagającymi przetwarzanie sygnałów, no i jest sprzętowa
ochrona pamięci. Można bez przeszkód napisać swój własny wielozadaniowy
system operacyjny z wywłaszczaniem procesów z prawdziwego zdarzenia :).
Pobór prądu można by było zredukować jeszcze bardziej. Kilka mA biorą
rezystory podciągające do napięcia 5V. STM operuję w logice na poziomach
napięć 3.3V a wyświetlacz na 5V. Gdyby to podłączyłem bezpośrednio do
sterownik w wyświetlaczu po prostu nie rozróżniał zer od jedynek,
dlatego magistrala została przestawiona z Push-pull na otwarty dren i
podciągnięta zewnętrznie (wszystkie piny wytrzymują 5V). Kupienie
wyświetlacza natywnie pracującego przy tych poziomach co procek
zaoszczędziło by myślę około 3mA. Można by też obniżyć jeszcze bardziej
taktowanie rdzenia i powyłączać część peryferiów (np port szeregowy).
Ale wg noty aplikacyjnej producenta nie da się zejść z poborem mocy dla
uC poniżej podajże 10mA. Szczerze to i tak się zastanawiałem dlaczego to
jest aż 30mA tym bardziej, że czujnik i wyświetlacz razem wzięte to
dalej <1mA.
ML