Programowanie
Rys. 35 Konfiguracja procesora
Dzisiejszy odcinek będzie dość nietypowy. Znacznie bardziej związany ze sprzętem niż z samym C. Zobaczysz dziś, jak przenieść napisane do tej pory programy na nową platformę sprzętową Poznamy także część możliwości nowego procesora oraz zasadę jego konfiguracji.
Jeśli do tej pory zajmowałeś się jedynie, przestarzałym juz, procesorem AT90S2313 - nie miałeś do czynienia z wieloma możliwościami konfiguracji, jakie oferują nowsze modele AVRów. Bardzo ważne jest poznanie bitów konfiguracyjnych dostępnych w naszym układzie - zwanych żartobliwie fusami (fuse -ang. bezpiecznik). Okazuje się bowiem, że przy pozostawieniu ustawień fabrycznych możemy zostać nieprzyjemnie zaskoczeni działaniem naszego procesora.
Ustawianie dostępnych bitów konfiguracji omówię nu przykładzie programatora BAS-COM (wersja 1.11.7.9). Program ten pozwala na ustawienie konfiguracji w bardzo intuicyjny sposób Jednocześnie zdobyte w ten sposób informacje pozostają aktualne niezależnie od programu sterującego programatorem. Niestety autor środowiska BASCOM nadał bitom konfiguracyjnym własne nazwy, w większości niezgodne z nazwami proponowanymi przez ATMEL-a. Może wprowadzić to nieco zamieszania, tak więc dalej podam
oryginalne oznaczenia i przy opisie właśnie ich będę się trzymał.
Uruchom środowisko BASCOM. Podłącz płytkę do programatora i wybierz komendę Program->Send to chip. Aby komenda była aktywna, konieczne jest otwarcie dowolnego pliku w edytorze. Nie przejmuj się pojawiającymi się ostrzeżeniami, chyha że pojawi się informacja o niemożności identyfikacji układu wtedy konieczne może okazać się sprawdzenie połączeń oraz skontrolowanie ustawienia zworki LCDE. Po iinichomicniu programatora przejdź do ostatniej z dostępnych zakładek: Lock and Fuse Bits Okienko programatora powinno wyglądać podobnie do tego z rysunku 35. Dla wygody, omawiane bajty konfiguracyjne zostały oznaczone kolorami wraz z przypisanymi im przyciskami wysyłającymi nastawy do procesora. Dodatkowo na rysunku wprowadziłem oznaczenia stosowane przez firmę ATM EL.
Uwaga: Bezpiecznik w stanie „ 0 ” to bezpiecznik zaprogramowany. Bezpiecznik ustawiony nu „1” to bezpiecznik niezupro-gramowany.
Nie będziemy zajmować się teraz hitami zabezpieczającymi program. Wymagałoby to omówienia możliwości procesora z zakresu samoprogramowama, co wykracza poza lamy aktualnego odcinka. Tak więc sekcję zieloną możemy spokojnie odłożyć do czasu zajęcia się pisaniem własnego bootloadera
Sekcja oznaczona na niebiesko grupuje bity dotyczące wszystkiego co związane z taktowaniem układu. CKDIV8 - zaprogramowanie tego bitu powoduje podział częstotliwości taktującej procesor przez 8 - W tym miejscu opis BASCOM-owy jest nieprawidłowy. Co dość ważne, nie jest lo ustawienie ,.sztywne”. Polega ono jedynie na wpisaniu odpowiedniej wartości do rejestru CLKPR przy zerowaniu układu. Wartość tę można zmienić programowo. Bil ma znaczenie jeśli procesor nie może działać z pełną częstotliwością zegara w warunkach, jakie zapewnia mu otoczenie (na przykład za niskie napięcie zasilania). Domyślnie zaprogramowany. CKOUT - zaprogramowanie tego bitu spowoduje wyprowadzenie na
PortB.O zegara systemowego. Przydatne, jeśli w układzie posiadamy zewnętrzne peryferia, które będą taktowane tym samym zegarem co mikrokontroler. Domyślnie niezaprogramo-wany.
SUT1..0- ustala czas „podnoszenia się” układu po zerowniu oraz z trybów obniżonego poboru mocy. Opóźnienie jest konieczne ze względu na konieczność stabilizacji drgań po włączeniu generatora. Dokumentacja przedstawia dość złożony opis konfiguracji, co jest związane z tym, że znaczenie tych bitów zależne jest od wybranego oscylatora. W większości wypadków bezpieczniki te nie mają dla nas znaczenia. Domyślnie ustawione na najbardziej bezpieczną opcję.
CKSEL4..0 - wybór źródła sygnału zegaro wego. Domyślnie praca z wewnętrznym generatorem RC o częstotliwości 8MHz. Doku mentacja stwierdza dość dobrą stabilność jego częstotliwości w dziedzinie napięcia zasila nia. Gorzej sprawa ma się w dziedzinie zmian temperatury. W praktyce jednak udało mi się uzyskać stabilną transmisję z komputerem poprzez port RS232 przy prędkości 38,4kbps, przesyłając blok 32kB danych. Sprawdź inne dostępne opcje w BASCOM-ie są one op. sane dość intuicyjnie.
Z doświadczenia wiem. że wiele osób przesiadając się z prostszych AVR-ów na
większych członków' rodziny zapomina, że aby procesor pracował z podłączonym z zewnątrz oscylatorem, konieczne jest jego włączenie w tym właśnie miejscu.
OCD i JTAG - w naszym przypadku intere sujemy się tymi bitami na tyle. aby wyłączyć, domyślnie włączony, interfejs JTAG. Element ten zajmuje górne linie adresowe magistrali danych, uniemożliwiając nam prawidłową współpracę z pamięcią danych Oba bity związane są z debugowamcm aplikacji w sys ternie za pomocą interfejsu JTAG.
SPIEŃ - bit ten umożliwia programowanie w trybie, z którego najprawdopodobniej właśnie korzystasz. Nie ma możliwości jego zmiany z tego poziomu. Domyślnie, oczywiście, zaprogramowany.
WDTON - włączenie na stałe zegara WDT. Opcja przydatna tam, gdzie konieczna jest duża niezawodność działania systemu. Domyślnie niezaprograniowany.
EESAVE-jego zaprogramowanie umożliwia zachowanie danych pamięci EEPROM podczas czyszczenia pamięci układu przed programowaniem. Domyślnie dane są tracone.
Elektronika dla Wszystkich Styczeń 2006 39