P R O J E K T Y Programator procesorów AVR Programator procesorów AVR, część 2 kit AVT-812 W drugiej czści artykułu o programatorze AVR postaramy si dostarczyĘ nieco wiedzy o samych procesorach, podzielimy si takłe kilkoma praktycznymi uwagami dotyczącymi ich właściwości oraz sposobw pisania programw asemblerowych. Wydaje nam si to potrzebne, z procesora. Programik jest bardzo zwłaszcza w przypadku nowych prosty, ale w zupełności wystar- układw, a takimi są na rynku cza do sterowania płytki progra- procesory AVR. Kałdy zaintereso- matora oraz pozwala na podsta- wany i tak samodzielnie bdzie wowe manipulacje danymi. musiał si nauczyĘ nowych pro- Wybierając odpowiednią opcj cesorw, warto jednak juł na w menu Plik albo wybierając początku wiedzieĘ, czy wysiłek kursorem ikon zapisanej kartki mołe si opłacaĘ i jakich korzyści mołna otworzyĘ zbir zawierający mołna si spodziewaĘ stosując dane do zapisu do pamici pro- nowe układy. cesora. Zbir mołe mieĘ postaĘ Na początku wrcimy jeszcze INTEL HEX (format pliku gene- do samego programatora. Jak zo- rowany przez program asemblera) stało to powiedziane w pierwszej lub danych w postaci binarnej. czści artykułu, programator ZawartośĘ odczytanego pliku wspłpracuje z komputerem PC, mołna wyświetliĘ na ekranie wy- ktry jest sterowany przez pro- bierając opcj Edycja lub klika- gram nadzorujący proces zapisu jąc na ikon piszącej dłoni. Ot- danych do pamici układu AVR. warty zbir mołna takłe zapisaĘ Program ten steruje programa- na dysku lub dyskietce (tylko torem za pomocą opisanych w formacie binarnym) klikając na wcześniej 3 rozkazw, spełnia ikon dyskietki lub wybierając takłe rol interfejsu, za pomocą opcj Zapisz menu Plik. ktrego ułytkownik mołe decydo- Polecenie Program uaktywnia waĘ co i jak zapisaĘ lub odczytaĘ opcje związane bezpośrednio z pro- z pamici programowanego proce- gramatorem. Pojawiające si nowe sora. Korzystając z informacji do- okienko udostpnia szereg klawi- stpnych w pierwszej czści arty- szy, ktrych naciśnicie rozpoczy- kułu, kałdy mołe samodzielnie na zapis, weryfikacj lub odczyt stworzyĘ taki program. Dla pozo- danych z pamici programu (Flash) stałych, ktrzy nie chcą lub nie procesora lub z pamici EEPROM. mogą napisaĘ programu dla PC- Klawisz Blokada słuły do wy- ta, przygotowaliśmy jego wersj dania polecenia zaprogramowania działającą w środowisku Win- bitw zabezpieczających przed od- dows95. Na rys. 4 przedstawiono czytem danych z pamici, a kla- ekran pracującego programu w try- wisz Koniec zamyka sesj pro- bie zapisu lub odczytu danych gramowania i pozwala powrciĘ Elektronika Praktyczna 5/99 71 Programator procesorów AVR interesujących nas plikw. Mołna tam znaleĘ zarwno asemblery jak i symulatory pozwalające za pomocą komputera śledziĘ zacho- wanie napisanego przez nas op- rogramowania oraz podglądaĘ za- wartośĘ rejestrw i pamici pro- cesora, co umołliwia wykrycie błdw. Dostpne są takłe przy- kładowe programy i procedury na- pisane w jzyku asemblera. Naj- wałniejsze pliki to: ASM- PACK.EXE, ASM.ZIP, ASTU- DIO.EXE. Na stronie internetowej mołna takłe znaleĘ dokładne informacje techniczne związane z konkretnym typem procesora. Brak tam niestety najprostszego chociałby kompilatora jzyka C, ktrego ułycie stanowi dułe ułat- wienie podczas pisania profesjo- Rys. 4. Okno programu sterującego pracą programatora. nalnego oprogramowania. Z do- do edycji danych. Dwie rozwijane listy słułą do wyboru typu pro- cesora, ktry bdzie programowa- ny oraz portu COM1 lub COM2, do ktrego dołączona zostanie płyt- ka programatora. Zmuszenie procesora do wyko- nania jakiejkolwiek sensownej pra- cy polega na stworzeniu dla niego programu, ktrego kody zostaną zapisane w pamici Flash proce- sora za pomocą naszego progra- matora. W czasie pisania progra- mu asemblerowego uływa si nazw symbolicznych. Potem spe- cjalny program przekształca pole- cenia i nazwy symboliczne na kody bezpośrednio przetwarzane przez procesor. Program taki na- zywany jest potocznie asemblerem (wiedzą o tym doskonale Czytel- nicy, ktrzy kiedykolwiek mieli do czynienia z programowaniem, a powyłsze uwagi skierowane są do nowicjuszy, ktrzy dopiero od niedawna interesują si proceso- rami i sterownikami jednoukłado- wymi). W przypadku procesorw AVR program asemblera rozpo- wszechniany jest nieodpłatnie przez firm ATMEL. Asembler oraz kilka innych programw na- rzdziowych i ciekawych przykła- dw oprogramowania dla proce- sorw AVR mołna znaleĘ na stronie internetowej firmy pod adresem www.atmel.com. Na tej stronie kierując si nastpującym kluczem: PRODUCTS/AVR 8-bit RISC/SOFTWARE, dotrzemy do Rys. 5. Schemat blokowy procesora AT90S2313. Elektronika Praktyczna 5/99 72 Programator procesorów AVR dyrektywy .EQU przypisano okreś- lone wartości liczbowe zarezerwo- wanym nazwom rejestrw i bitw. Np. jeden z rejestrw sterujących portem B procesora znajduje si pod fizycznym adresem 18h. Pi- sząc program duło łatwiej zapa- mitaĘ i odwoływaĘ si do jego nazwy symbolicznej (w pliku de- finicji określonej jako .EQU PORTB =$18) nił do konkretnego adresu. Plik definicji zawiera wszystkie takie nazwy. Plik ten powinien znaleĘ si w tym sa- mym katalogu w ktrym znajduje si poddawany asemblacji plik rdłowy. Mołna wykorzystaĘ go- Rys. 6. Wyprowadzenia niektórych procesorów serii AVR. towe pliki rdłowe podawane stpnych informacji wynika, łe ne. Program mołe odwoływaĘ si w przykładach albo napisaĘ taki kompilator dla sterownikw AVR do etykiet, tak jak np. do kon- plik samodzielnie. oferuje firma IAR, co jest wiado- kretnych adresw w pamici pro- 3. Kałdy program powinien mością dobrą i złą. Dobrą ponie- gramu. zawieraĘ na początku winietk wał narzdzia tej firmy są pro- Nazwa etykiety zakoczona jest wykonaną za pomocą linii komen- fesjonalnie przygotowane i cieszą dwukropkiem (:). Na początku tarza. W winietce powinna zna- si uznaniem, a złą, poniewał linii dopuszczalne jest takłe leĘ si nazwa programu, zwizły zazwyczaj są bardzo drogie i prak- umieszczanie dyrektyw czyli spe- opis jego funkcji, oznaczenie wer- tycznie niedostpne dla zwykłego cjalnych polece sterujących dzia- sji i ewentualnie inne uwagi. śmiertelnika. Naleły mieĘ tylko łaniem samego programu asemb- O przydatności takiej winietki nadziej, łe producenci układw lującego. Nazwa dyrektywy po- przekonamy si bardzo szybko, w swoim własnym interesie bdą przedzona jest bezpośrednio zna- gdy uzbiera nam si kilka napi- wspierali powstawanie taniego op- kiem kropki (.). Dalej, po co sanych wcześniej programw rogramowania narzdziowego, za- najmniej jednej spacji za etykietą asemblerowych. Po pewnym cza- chcając w ten sposb do wyko- lub początkiem linii mołe poja- sie bardzo łatwo zapomnieĘ co rzystywania w konstrukcjach elek- wiĘ si instrukcja, ktra w trakcie właściwie dany program miał ro- tronicznych właśnie ich proceso- asemblacji zostanie przetłumaczo- biĘ i jakich w nim dokonaliśmy rw. na przez asembler na seri kodw zmian w stosunku do innych wer- Fenomen popularności proce- sterujących działaniem procesora. sji. OPŁACA SI TAKE ZAPISY- sorw '51 wiąłe si głwnie z do- W linii programu mołe pojawiĘ WAĆ ROZBUDOWANE I DO- stpnością oprogramowania narz- si jeszcze komentarz, czyli tekst KŁADNE KOMENTARZE! dziowego dla tego procesora. umieszczany przez programist. Po napisaniu programu naleły Asembler o nazwie WAVRASM Komentarz słuły do przypomnie- dokonaĘ jego asemblacji uływając pracuje w systemie Windows i je- nia w przyszłości, podczas prze- polecenia Assemble. W przypad- go ułycie jest stosunkowo proste. glądania programu, jak funkcjonu- ku powodzenia wyświetlone zo- Po uruchomieniu programu nale- ją jego poszczeglne czści, zmien- stanie okienko komunikatw za- ły otworzyĘ nowy dokument po- ne itd. Im liczniejsze i dokładniej- koczonych informacją o braku sługując si w tym celu ikoną sze są komentarze, tym pustej kartki albo wczytaĘ wcześ- mniej potem kłopotw niej napisany program, ktry b- ze zrozumieniem dzia- dziemy chcieli zmieniĘ lub popra- łania własnego progra- wiĘ. Początkujący zechcą si za- mu. Komentarz po- pewne posłułyĘ dostarczonymi przedzony jest zna- przez firm wzorami programw kiem średnika (;) i mo- i opierając si na tych przykła- łe si znaleĘ po co dach napiszą swj własny, pier- najmniej jednej spacji wszy program dla procesora AVR. za instrukcją lub zaj- Generalnie dobrze jest pamitaĘ mowaĘ całą lini. o kilku, nastpujących zasadach: 2. Do programu po- 1. Kałda linia programu asem- winien zostaĘ dołączo- blerowego mołe składaĘ si ny, specjalną dyrekty- z pewnych elementw, ktrych wą, plik definicji np. połołenie w jej obrbie nie jest .INCLUDE 1200def.- obojtne. Na pierwszej pozycji inc. Plik definicji jest w nowej linii mogą znaleĘ si plikiem tekstowym, etykiety, czyli nazwy symbolicz- w ktrym za pomocą Rys. 7. Mapa pamięci procesorów AVR. Elektronika Praktyczna 5/99 73 Programator procesorów AVR błdw. W przeciwnym razie typy procesorw w obrbie rodzi- niejszych informacji naleły za- w okienku pojawią si ostrzełenia ny mogą si midzy sobą znacz- wsze szukaĘ w dokumentacji tech- wskazujące linie programu, w kt- nie rłniĘ, chociałby liczbą wy- nicznej dostpnej chociałby na rych wystpują błdy. prowadze, i nie zawsze program stronie internetowej producenta. Polecenie Options pozwala napisany dla jednego procesora Na rys. 6 pokazano rozkład ustaliĘ format danych generowa- da si uruchomiĘ na innym. Ge- wyprowadze obudw wybranych nych przez program asemblera. neralnie jednak struktura wewn- typw procesorw. Dostp do pro- Dane przeznaczone dla naszego trzna wszystkich sterownikw jest gramowalnych układw wewn- programatora powinny byĘ utwo- podobna. trznych procesora (np. licznikw) rzone w formacie Intela, a plik Jako przykład mołe posłułyĘ oraz portw, za pomocą ktrych powinien mieĘ rozszerzenie HEX. schemat blokowy mikrokontrolera procesor komunikuje si ze świa- W programie dostpny jest rozbu- AT90S2313 pokazany na rys. 5. tem zewntrznym, realizowany jest dowany plik pomocy dobrze opi- Centralne miejsce przypada jed- poprzez rejestry I/O. Ich adresy sujący zarwno składni popra- nostce arytmetyczno-logicznej oraz adresy 32 rejestrw uniwer- wnie napisanego programu rd- ALU oraz zespołowi rejestrw salnych znajdują si we wsplnej łowego jak i jego poszczeglne uniwersalnych. Instrukcje progra- przestrzeni adresowej wewntrznej elementy. mu w postaci 16-bitowej, podawa- pamici RAM procesora. Map Ostrzełenia wyświetlane przez ne są do ALU i rejestrw uniwer- adresw dla układu 90S2343 po- program WAVRASM pozwalają salnych z pamici programu adre- kazano na rys. 7. W przypadku wyeliminowaĘ błdy składni, prze- sowanej przez licznik Program innych procesorw zmianie ulega krcone nazwy rozkazw itp., na- Counter. Oprcz tych elementw, tylko najwyłszy adres pamici tomiast nie uchronią nas przed do wewntrznej magistrali dołą- RAM, co wynika z jej rozmiarw. błdami w konstrukcji logicznej czone są bloki statycznej pamici Wyjątkiem jest tu układ 90S1200, programu, ktre sprawiają, łe za- (SRAM), pamici EEPROM, układ ktry oprcz bloku rejestrw uni- programowany procesor nie dział watchdoga, interfejs SPI oraz ukła- wersalnych nie posiada wewntr- tak, jak tego oczekujemy. To dy, ktrych wystpowanie zaleły znej pamici RAM. najtrudniejsze do wychwycenia od konkretnego typu procesora: Pierwsze prby pisania progra- błdy, bo nasze własne. Przy ich liczniki, interfejs szeregowy UART mw dla procesorw AVR skła- usuwaniu pomocne mogą okazaĘ (czyli RS232), blok przerwa itd. niają do podzielenia si kilkoma si programy AVR SIMULATOR Od typu procesora zaleły takłe spostrzełeniami z tymi czytelnika- lub AVR STUDIO, ktre na kom- liczba buforw portw wejścia/ mi, ktrzy takłe sprbują wyko- puterze PC udają, czyli symu- wyjścia. Praca wewntrznych ukła- rzystaĘ w swoich urządzeniach te lują sposb działania zaprogramo- dw sterownika AVR przebiega sterowniki. Ze wzgldu na rłni- wanego procesora. Dziki obser- w takt impulsw ze stabilizowa- ce w wewntrznej budowie rł- wacji tego działania, wykonywa- nego kwarcem oscylatora, ktry nych typw procesorw, nie za- niu pojedynczych instrukcji, usta- w pewnych modelach mołe byĘ wsze ich listy rozkazw są iden- wianiu pułapek i podglądaniu za- zastąpiony przez wewntrzny ge- tyczne. Dotyczy to zwłaszcza in- wartości symulowanych rejestrw nerator o stałej czstotliwości strukcji skokw i wywoła pod- procesora, duło łatwiej odkryĘ 1MHz, obywający si bez zewn- programw. I tak np. w proceso- w programie miejsca, ktre go trznych elementw. rze 90S1200 brak jest rozkazu prowadzą w przysłowiowe maliny Poniewał rodzina sterownikw IJMP, czyli skoku pośredniego, nił tylko poprzez łmudne prze- AVR wciął si rozrasta, dla po- adresowanego rejestrem Z. Asem- glądanie zapisanych linii kodu. rwnania przedstawiamy poniłej bler nie wykałe błdu składnio- Kałdy program napisany dla list kilku reprezentatywnych jej wego natomiast procesor obda- procesora AVR musi uwzgldniaĘ członkw wraz z zestawieniem ich rzony instrukcją, ktrej nie ro- jego mołliwości wynikające z we- najwałniejszych z punktu widze- zumie zacznie działaĘ w sposb wntrznej budowy. Poszczeglne nia ułytkownika cech. Dokład- trudny do przewidzenia. Tab. 2. Zestawienie podstawowych właściwości wybranych procesorów AVR. Oznaczenie procesora 90S2323 90S2343 90S1200 90S2313 90S4414 90S8515 ATmega603 Właściwość pamięć programu (kB) 2 2 1 2 4 8 64 pamięć RAM (B) 128 128 - 128 256 512 4096 pamięć EEPROM (B) 128 128 64 128 256 512 2048 liczba linii wejścia/wyjścia 3 5 15 15 32 32 32+8 WY+8 WE SPI tak tak tak tak tak tak tak UART - - - tak tak tak tak timer/licznik 1 1 1 2 2 2 3 wewnętrzny oscylator RC - tak tak - - - - PWM - - - 1 2 2 2 zabezpieczenie przed odczytem tak tak tak tak tak tak tak liczba wyprowadzeń 8 8 20 20 40 40 64 Elektronika Praktyczna 5/99 74 Programator procesorów AVR Wszystkie prezentowane proce- problemem. Jednak jełeli do re- ktry w innym typie procesora sory posiadają rozbudowany ze- jestru SPL nie wpiszemy odpo- wywołuje takie samo przerwanie, staw rejestrw oglnego przezna- wiedniego adresu, pierwszy zapis to wektory przerwania w obu ty- czenia. Istnieją jednak rłnice na stosie spowoduje zniszczenie pach procesorw nie muszą zna- w sposobie ułycia rejestrw nale- zawartości rejestrw, na ktry SPL jdowaĘ si pod tym samym ad- łących do 1 i 2 połwki zestawu. bdzie wskazywał. Trzeba o tym resem. Konstruktorzy układu zre- Do rejestrw R0-R15 nie mołna pamitaĘ i wpisaĘ do SPL adres zygnowali z zasady przypisania na w sposb bezpośredni zapisaĘ pamici RAM, w ktrej umiesz- stałe tych samych adresw tym wartości stałej. eby to uczyniĘ czony zostanie stos. samym wektorom przerwa i na- naleły posłułyĘ si pośrednict- Procesory AVR posiadają oczy- leły o tym pamitaĘ. wem ktregoś z rejestrw z dru- wiście mołliwośĘ realizacji prze- Pojawiające si wątpliwości giej czści zestawu. Mołe to wy- rwa programowych. Po zaistnie- związane ze sposobem działania glądaĘ nastpująco: niu sytuacji wywołującej przerwa- programu i procesora najłatwiej LDI R16,156 nie, licznik programu procesora rozwiaĘ posługując si symulato- ; wpisanie do rejestru ustawiony zostaje na wektor prze- rem i obserwując efekty działania ; pośredniczącego wartości 156 rwania wskazujący na podprogram programu. MOV R1,R16 realizujący funkcje przerwania. W przyszłości procesorom AVR ; przepisanie wartości Wektory te umieszczone są na i układom z ich ułyciem zamie- ; z rejestru pośredniczącego początku przestrzeni adresowej rzamy jeszcze poświciĘ troch ; do rejestru R1 procesora. Jednak rłne typy pro- miejsca na łamach naszego pisma. Wszystkie procesory (z wyjąt- cesorw z rodziny AVR cechują Przygotowywane są proste urzą- kiem AT90S1200) posiadają stos, si rłną liczbą mołliwych prze- dzenia wykorzystujące ciekawe ce- ktry mołe byĘ umieszczony rwa, co wynika z ich budowy chy procesorw, jakimi są szyb- w dowolnym miejscu pamici i mołliwości. Jest to oczywiście kośĘ działania i mały pobr mocy RAM. W momencie włączenia za- zrozumiałe, bowiem procesor po- pozwalający na zasilanie układw silania wskanik stosu, czyli re- zbawiony np. portu szeregowego z baterii. Mamy nadziej, łe takłe jestr SPL, inicjowany jest wartoś- nie mołe wykonywaĘ procedury czytelnikw EP zainteresuje ten cią zero. Dopki nie korzystamy przerwania generowanej przez ten temat i sprbują sami napisaĘ cie- ze stosu (nie wywoływane są port. Jednak wystpuje tu pewna kawe programy dla procesorw podprogramy i przerwania), to ta- niekonsekwencja. Nawet jełeli pro- AVR. kie ustawienie wskanika nie jest cesor bdzie wyposałony w układ, Ryszard Szymaniak, AVT Elektronika Praktyczna 5/99 75