plik


ÿþProgramator procesorów AVR P R O J E K T Y Programator procesorów AVR, cz[ 1 kit AVT-812 Procesory jednouk³adowe zrobi³y prawdziw¹ karierÍ w úwiecie elektroniki. Sukces ten wi¹øe siÍ z rozwojem elektronicznego sprzÍtu powszechnego uøytku. Im urz¹dzenia stawa³y siÍ ³atwiejsze w uøyciu, bardziej sprawne i niezawodne, tym bardziej ros³o zapotrzebowanie na elementy steruj¹ce ich prac¹, czyli mikrokontrolery. Dotyczy to takøe uk³adÛw automatyki przemys³owej. Dziú trudno spotkaÊ urz¹dzenie elektroniczne bez inteligentnego sterownika, RozwÛj elekreonicznego sprzÍtu cesory te znalaz³y na nim swoje bÍd¹cego dalekim krewnym powszechnego uøytku i moøliwoúÊ miejsce. Od ponad dwÛch lat duøych komputerÛw. ulokowania w nim swoich wyro- Atmel promuje now¹ rodzinÍ pro- bÛw stanowi³a silny bodziec dla cesorÛw ochrzczonych wspÛlnym wielu firm zajmuj¹cych siÍ pro- mianem AVR. dukcj¹ uk³adÛw wielkiej skali in- Procesory wchodz¹ce w sk³ad tegracji. rodziny rÛøni¹ siÍ wielkoúci¹ Pocz¹tkowo na rynku domino- i moøliwoúciami, jednak kilka wa³y uk³ady z grupy 8049, nastÍp- cech pozostaje wspÛlnych. Naj- nie s³ynny 8051 produkowany waøniejsz¹ z nich jest oparcie we- najpierw przez Intela oraz mikro- wnÍtrznej budowy sterownikÛw sterowniki firmy Motorola. W la- na architekturze RISC, bazuj¹cej tach 90. pojawi³y siÍ nowe rodza- na uproszczonej liúcie rozkazÛw je procesorÛw, nierzadko bardzo wykonywanych najczÍúciej pod- wyspecjalizowanych i zminiatury- czas jednego cyklu zegarowego. zowanych. Powoduje to znaczne przyúpiesze- Firma Atmel zaistnia³a na ryn- nie pracy uk³adu, w ktÛrym jeden ku najpierw ze swoj¹ odmian¹ cykl zegara taktuj¹cego odpowiada sterownika '51, w ktÛrym zast¹- jednemu cyklowi rozkazowemu. piono niewygodn¹, kasowan¹ ul- Okreúlenie ìuproszczona lista roz- trafioletem pamiÍÊ EPROM, elek- kazÛwî wcale nie oznacza, øe jest trycznie programowan¹ pamiÍci¹ ona krÛtka, poniewaø wzbogacono FLASH EEPROM. Taki sposÛb j¹ o ca³y zestaw skokÛw warun- zapisu kodu programu do pamiÍci kowych i trybÛw adresowania. sterownika jest bardzo wygodny, W zwi¹zku z tym wszystkie pro- zw³aszcza na etapie pracy nad cesory wyposaøone s¹ w rozbudo- programem i w produkcji ma³ose- wany zestaw rejestrÛw uniwersal- ryjnej. W przypadku polskiego nych bezpoúrednio wspÛ³pracuj¹- rynku moøna stwierdziÊ, øe pro- cych z akumulatorem, co dodatko- Elektronika Praktyczna 4/99 60 Programator procesorów AVR Rys. 1. Schemat elektryczny urzdzenia. Elektronika Praktyczna 4/99 61 Programator procesorów AVR wo zwiÍksza szybkoúÊ dzia³ania uk³adÛw. Producent okreúla moc oblicze- niow¹ sterownikÛw na rÛwn¹ 1MIPS przy czÍstotliwoúci zegara 1MHz. Maksymalna czÍstotliwoúÊ zegara dla wiÍkszoúci typÛw pro- cesorÛw AVR zawiera siÍ w prze- Rys. 2. Przebieg sygnaBów w czasie transmisji. dziale 10..24MHz. Kolejn¹ cech¹ wspÛln¹ jest wyposaøenie prawie wszystkich typÛw sterownikÛw Wszystkie sterowniki z rodziny procesor wysy³a w ten sam spo- w wewnÍtrzne pamiÍci RAM AVR mog¹ byÊ programowane na sÛb lini¹ MISO, z najstarszym bi- i EEPROM oraz sprzÍtowy zegar dwa sposoby. Pierwszy z nich, tem jako pierwszym. watchdoga. Wszystkie procesory ktÛry moøna okreúliÊ jako trady- Kody steruj¹ce wpisywane s¹ posiadaj¹ szeregowy interfejs SPI cyjny, wykorzystuje do wymiany do procesora podczas narastaj¹ce- umoøliwiaj¹cy w prosty sposÛb danych pomiÍdzy programatorem, go zbocza zegara SCK, natomiast ich programowanie oraz zapisy- a programowanym procesorem je- dane pojawiaj¹ce siÍ na linii wanie i odczytywanie danych do den z jego portÛw, a kilka dodat- MISO mog¹ byÊ odczytane pod- i z wewnÍtrznej pamiÍci EEPROM. kowych sygna³Ûw podawanych na czas opadaj¹cego zbocza impulsu Linie portÛw wyjúciowych proce- linie pozosta³ych portÛw steruje zegarowego. Sygna³y na liniach sorÛw pozwalaj¹ na bezpoúrednie ca³ym procesem. SposÛb ten wy- MOSI i MISO mog¹ siÍ zmieniaÊ sterowanie rÛønych uk³adÛw zew- maga zaangaøowania wielu linii jedynie podczas stanu niskiego na nÍtrznych, np. diod LED, ponie- danych. Jeøeli programator ma linii zegarowej SCK. waø w stanie niskim potrafi¹ przy- obs³uøyÊ procesory w rÛønych Procesory AVR wyposaøone j¹Ê pr¹d o wartoúci nawet 20mA. obudowach i o rÛønej liczbie wy- w interfejs SPI reaguj¹ na kilka Konstruktorzy duøo uwagi po- prowadzeÒ, trzeba siÍ liczyÊ z ko- kodÛw steruj¹cych. Ich format úwiÍcili redukcji mocy pobieranej niecznoúci¹ stosowania adapterÛw w przypadku procesora 90S2313 przez sterowniki, co umoøliwia lub multipleksowaniem wyprowa- pokazano w tab. 1. ich stosowanie w sprzÍcie zasila- dzeÒ programatora, w zaleønoúci W celu rozpoczÍcia korzystania nym bateryjnie. od typu aktualnie programowane- z interfejsu SPI naleøy spe³niÊ PobÛr pr¹du w czasie normal- go procesora. kilka prostych warunkÛw. Przed nej pracy wynosi przeciÍtnie kilka Drugi sposÛb wi¹øe siÍ z wyko- podaniem napiÍcia zasilaj¹cego miliamperÛw, natomiast w czasie rzystaniem w kaødym typie pro- trzeba podaÊ na wyprowadzenia uúpienia, gdy podtrzymywana jest cesora specjalnego szeregowego in- procesora RESET i SCK stan niski zawartoúÊ wewnÍtrznych rejest- terfejsu o zredukowanej liczbie oraz do³¹czyÊ do wyprowadzeÒ rÛw i aktywny jest tylko wewnÍ- wyprowadzeÒ, w tym przypadku XTAL rezonator kwarcowy o no- trzny zegar watchdoga, pobÛr pr¹- trzech. Zastosowanie do progra- minalnej czÍstotliwoúci lub podaÊ du wynosi jedynie 50µA. mowania jedynie trzech ìdrutÛwî sygna³ taktuj¹cy na wyprowadze- Kolejn¹ interesuj¹c¹ cech¹ - SPI (tak naprawdÍ dochodzi nie XTAL1. Po w³¹czeniu zasila- wszystkich procesorÛw jest moø- jeszcze zasilanie, linia RESET oraz nia naleøy odczekaÊ 20ms, a na- liwoúÊ zakoÒczenia trybu uúpienia doprowadzenia zegara) bardzo stÍpnie wys³aÊ cztery bajty roz- poprzez podanie odpowiedniego upraszcza procedurÍ programowa- kazu Programing enable. Od tego poziomu napiÍcia na linii portu nia, a w pewnych warunkach momentu procesor znajduje siÍ P3 i wygenerowanie przerwania. umoøliwia przeprogramowanie w trybie programowania. Zapisa- Mamy nadziejÍ, øe ten krÛtki procesora nawet wtedy, gdy znaj- nie do pamiÍci procesora nowego wstÍp zachÍci Was do bliøszego duje siÍ w systemie, w ktÛrym kodu programu wymaga wczeú- poznania procesorÛw AVR. Aby pracuje. niejszego wykasowania zawartoúci u³atwiÊ Wam nieco to zadanie, Interfejs SPI sk³ada siÍ z nastÍ- pamiÍci FLASH, co nast¹pi po w drugiej czÍúci artyku³u omÛwimy puj¹cych linii sygna³owych: linii wys³aniu rozkazu Chip erase, nieco bardziej szczegÛ³owo moøli- zegara synchronizuj¹cego transfer a nastÍpnie odczekaniu 10ms na woúci poszczegÛlnych uk³adÛw tej informacji SCK, linii danych wej- zakoÒczenie operacji kasowania rodziny, a teraz przejdziemy do úciowych MOSI i linii danych pamiÍci. prezentacji konstrukcji progra- wyjúciowych MISO. Przebieg syg- Jednoczeúnie z pamiÍci¹ matora, opisywanego w artykule. na³Ûw na tych trzech liniach FLASH wykasowane zostan¹ w czasie transmisji pokazano na wszystkie dane zapisane w pamiÍ- Opis uk³adu rys. 2. ci EEPROM procesora. Zapis da- Schemat elektryczny programa- Programowanie polega na wy- nych do pamiÍci programu wyko- tora pokazano na rys. 1. Jego s³aniu lini¹ MOSI kodÛw steru- nuje siÍ za pomoc¹ rozkazu Write budowa jest bardzo prosta, ale j¹cych i ewentualnie danych, ktÛ- Program Memory. Litery a, b moøna za jego pomoc¹ zaprogra- re okreúl¹ sposÛb w jaki ma siÍ oznaczaj¹ wyraøony binarnie ad- mowaÊ praktycznie kaødy rodzaj zachowaÊ programowany uk³ad. res komÛrki pamiÍci, do ktÛrej procesora AVR. Wynika to z faktu Kody s¹ to 3 lub 4 bajty wysy³ane zostanie dokonany zapis. Liczba zastosowania w nim szeregowego bit po bicie, z najstarszym bitem znacz¹cych bitÛw w przypadku interfejsu SPI. jako pierwszym. Odczytane dane procesorÛw o wiÍkszej pojemnoúci Elektronika Praktyczna 4/99 62 Programator procesorów AVR macie ASCII) okreúlaj¹cy rodzaj rozkazu, nastÍpnie jego paramet- ry, dane, a na koÒcu bajt sumy kontrolnej. Bajt ten powstaje po- przez wykonanie operacji XOR na wszystkich kolejnych bajtach roz- kazu z wy³¹czeniem oczywiúcie samego bajtu sumy kontrolnej. Po prawid³owym wykonaniu kaødej operacji programator potwierdza ten fakt wysy³aj¹c w odpowiedzi literÍ ìAî. Wys³anie jakiegokol- wiek innego znaku lub brak od- powiedzi powinien byÊ interpre- towany przez komputer steruj¹cy jako b³¹d. Rozkazy steruj¹ce i opis po- szczegÛlnych bajtÛw: 1.Rozkaz ustawienia parametrÛw Rys. 3. Rozmieszczenie elementów na pBytce drukowanej. programatora: pamiÍci FLASH bÍdzie oczywiúcie 0. Bity mog¹ byÊ skasowane je- ìSîabk0c wiÍksza niø w przyk³adzie odno- dynie w wyniku dzia³ania rozkazu ìSî - kod ASCII (53h) iden- sz¹cym siÍ do procesora 90S2313. Chip erase. Rozkaz Read Device tyfikatora rozkazu Poniewaø format rozkazÛw proce- Code odczytuje kod typu proce- ab - dwa bajty okreúlaj¹ce sorÛw AVR jest 16-bitowy, a prze- sora. ZakoÒczenie sesji programo- adres pocz¹tkowy, od ktÛrego pro- sy³ane bajty danych s¹ 8-bitowe wania wymaga wy³¹czenia zasila- gramator rozpocznie odczytywanie (4 bajt rozkazu oznaczony literami nia oraz pozostawienia wyprowa- lub zapisywanie danych do pro- ìiî), identyfikator ìHî okreúla, dzenia RESET na poziomie wy- cesora ktÛra po³Ûwka kodu jest aktualnie sokim, gdy zasilanie zostanie w³¹- k - parametr okreúlaj¹cy sposÛb transmitowana. Starsza i m³odsza czone ponownie. pracy programatora. Bajt ten moøe po³Ûwka kodu rozkazu zapisywa- DziÍki temu, øe programator przyjmowaÊ nastÍpuj¹ce wartoúci: ne s¹ pod jednakowym adresem wykorzystuje w swoim dzia³aniu 0 - nastÍpne rozkazy odczy- a, b. interfejs SPI, jego budowa moøe tu lub zapisu bÍd¹ dotyczy³y W czasie odczytu pamiÍci pro- byÊ stosunkowo prosta. Zasadni- pamiÍci programu procesora cesora adresowanie z wykorzysty- czym elementem urz¹dzenia jest 1 - nastÍpne rozkazy bÍd¹ waniem bitu ìHî jest identyczne procesor 89C2051, ktÛry kontrolu- dotyczy³y pamiÍci EEPROM pro- jak podczas zapisu. RÛønica po- je przep³yw danych liniami inter- cesora lega na tym, øe po wys³aniu fejsu oraz w³¹cza i wy³¹cza prze- 2 - programator powinien 3 bajtÛw lini¹ MOSI, odczytywany kaünik PK1 do³¹czaj¹cy napiÍcie uaktywniÊ bity zabezpieczaj¹ce bajt danych pojawi siÍ na linii zasilania do programowanego pro- programowanego procesora MISO. cesora. Prac¹ programatora steruje FFh - programator powinien Do zapisu i odczytu danych do komputer poprzez standardow¹ li- siÍ zresetowaÊ i z pamiÍci EEPROM procesora niÍ RS do³¹czan¹ do gniazda P1. 0 - bajt o sta³ej wartoúci s³uø¹ rozkazy Write EEPROM Me- Parametry transmisji portem RS rÛwny zero mory i Read EEPROM Memory, to: szybkoúÊ 9600 bodÛw, 8 bitÛw c - bajt sumy kontrolnej a ca³a wymiana danych przebiega danych, brak bitu parzystoúci oraz podobnie jak w przypadku pamiÍ- 1 bit stopu. Uk³ad scalony U2 2.Rozkaz odczytu danych: ci programu. RÛønica polega na dokonuje konwersji poziomÛw lo- ìRîxc tym, øe przed nowym zapisem nie gicznych sygna³Ûw do standardu ìRî - kod ASCII (52h) iden- ma koniecznoúci czyszczenia pa- TTL. tyfikatora rozkazu miÍci rozkazem Chip erase. W za³oøeniu programator mia³ x - liczba bajtÛw danych, ktÛre Zaadresowana komÛrka EEP- byÊ jak najprostszym urz¹dzeniem maj¹ byÊ odczytane z pamiÍci ROM jest automatycznie czyszczo- wspÛ³pracuj¹cym z zewnÍtrznym procesora na przed zapisem nowych da- komputerem klasy PC. Z tego po- c - bajt sumy kontrolnej nych. NastÍpnie trzeba odczekaÊ wodu oprogramowanie procesora 4ms przed wys³aniem kolejnego U1 potrafi jedynie obs³ugiwaÊ 3.Rozkaz zapisu danych do pa- kodu interfejsem SPI. interfejs SPI oraz rozrÛønia 3 roz- miÍci procesora: Rozkaz Write Lock Bits pozwa- kazy steruj¹ce, co zupe³nie wy- ìWîxd...dc la zaprogramowaÊ bity zabez- starczy, aby prawid³owo zapisaÊ ìWî - kod ASCII (57h) iden- pieczeÒ chroni¹ce obie pamiÍci i odczytaÊ dane z wszystkich pro- tyfikatora rozkazu przed moøliwoúci¹ doprogramo- cesorÛw AVR. x - liczba bajtÛw danych d, wania nowych danych, a takøe Kaødy z rozkazÛw sk³ada siÍ ktÛre maj¹ byÊ zapisane do pa- przed ich odczytaniem. Bity s¹ z kilku bajtÛw danych. Najpierw miÍci procesora (FLASH lub aktywne, gdy przyjmuj¹ wartoúÊ wysy³any jest znak litery (w for- EEPROM, co zaleøy od paramet- Elektronika Praktyczna 4/99 63 Programator procesorów AVR ru k wys³anego we wczeúniej- z podstawki. Wys³anie polecenia WYKAZ ELEMENTÓW szym rozkazie ustawienia para- resetu programatora powoduje na- Rezystory metrÛw) tychmiastowe roz³¹czenie stykÛw R1, R2: 470&! d - bajty danych, ktÛrych liczba i przejúcie programatora w stan Kondensatory zosta³a okreúlona parametrem x. oczekiwania na kolejny rozkaz. Liczba danych moøe byÊ dowolna Przyk³adowa sekwencja rozka- C1, C5, C6, C7, C10: 47µF/16V lecz nie wiÍksza niø 32 zÛw, dotycz¹ca zapisania do pa- C2, C3, C11, C12: 27pF c - bajt sumy kontrolnej miÍci FLASH nowego programu C8, C4: 100nF dla sterownika AVR, a potem C10: 2,2µF Programator po odebraniu roz- sprawdzenia czy zapis zosta³ do- C13: 100µF/25V kazu ustawienia parametrÛw, prze- konany poprawnie, moøe wygl¹- PóBprzewodniki de wszystkim ustawia swÛj we- daÊ nastÍpuj¹co: D1, D2: LED czerwona i zielona wnÍtrzny licznik danych zgodnie S, 0, 0, 0, 0, c (ustawienie D3: 1N4004 z wartoúci¹ przekazan¹ parametra- pocz¹tkowego adresu zapisu na U1: 89C2051 zaprogramowany mi ab. Licznik ten po kaødym 00h i typu pamiÍci na FLASH) U2: MAX232 zapisie lub odczycie pamiÍci pro- W,20h,d,...,d,c (zapis bloku 32 U3: 78L05 cesora AVR jest zwiÍkszany o je- bajtÛw)... (zapis kolejnych blokÛw Ró|ne den. Z tego powodu ustawienie danych) PK1: przekaznik miniaturowy 5V pocz¹tkowego adresu, np. podczas W,32,d,...,d,c typu OMRON odczytu ca³ej dostÍpnej pamiÍci S,0,0,FFh,c (reset programato- P1: zBcze DB9 |eDskie do druku FLASH procesora, moøna przepro- ra) X1: 11,059MHz wadziÊ tylko raz, wysy³aj¹c na S,0,0,0,0,c X2: 4MHz pocz¹tku rozkaz Sabk0c. Progra- R,20h,c (odczyt danych z pa- U4: precyzyjna podstawka DIP20 mator zapamiÍtuje takøe parametr miÍci programowanego procesora U5: precyzyjna podstawka DIP40 k i do czasu jego zmiany wszelkie w celu weryfikacji) odczyty lub zapisy bÍd¹ dotyczyÊ R,20h,c U6: precyzyjna podstawka DIP8 wybranego typu pamiÍci. S,0,0,FFh,c (reset programato- Potwierdzenie wykonania roz- ra) kazu przez programator w przy- Podany opis powinien okazaÊ rÛw AVR na czas programowania. padku rozkazu odczytu jest nieco siÍ wystarczaj¹cy do napisania Zastosowanie 3 typÛw podstawek zmodyfikowane. Po wys³aniu ko- w³asnego programu steruj¹cego pozwala programowaÊ niemal du litery ìAî (41h) programator prac¹ programatora. Wszystkim, wszystkie typy uk³adÛw. Dodatko- wysy³a takøe odczytane dane ktÛrzy nie maj¹ ochoty tworzyÊ go wo sygna³y interfejsu SPI wypro- w liczbie okreúlonej w rozkazie samodzielnie proponujemy jego wadzone s¹ na gniazdo JP2. Pro- odczytu parametrem x, do³¹czaj¹c funkcjonaln¹, prost¹ wersjÍ pracu- cesor przed rozpoczÍciem progra- na koÒcu bajt sumy kontrolnej c. j¹c¹ w úrodowisku Windows95 mowania lub czytania naleøy Po wykonaniu kaødego rozkazu (wchodzi w sk³ad kitu). umieúciÊ w podstawce z odpowia- odczytu danych lub zapisu, pro- daj¹c¹ mu liczb¹ stykÛw (na fo- gramator przez ok. 0,6s podtrzy- Montaø i uruchomienie tografii pokazana jest starsza wer- muje w stanie za³¹czenia przekaü- Konstrukcja mechaniczna pro- sja programatora, jedynie z dwoma nik PK1. Jeøeli w tym czasie nie gramatora jest bardzo prosta. Na typami podstawek). Wczeúniej p³yt- zostanie odebrany kolejny rozkaz, p³ytce drukowanej (rozmieszczenie kÍ programatora naleøy po³¹czyÊ styki przekaünika zostan¹ roz³¹- elementÛw na rys. 3) oprÛcz in- z odpowiednim gniazdem portu RS czone i programowany procesor nych czÍúci znajduj¹ siÍ takøe komputera standardowym kablem AVR bez obaw moøna wyj¹Ê podstawki do osadzania proceso- oraz zasiliÊ napiÍciem sta³ym o wartoúci 8..12V do³¹czanym do gniazda JP1. Tab. 1. Po uruchomieniu na kompute- Kod sterujcy Bajt1 Bajt2 Bajt3 Bajt4 rze programu steruj¹cego i rozpo- Programing enable 1010 1100 0101 0011 xxxx xxxx xxxx xxxx czÍciu czytania lub zapisu proce- Chip erase 1010 1100 100x xxxx xxxx xxxx xxxx xxxx sora AVR, przekaünik na p³ytce Read Program Memory 0010 H000 xxxx xxaa bbbb bbbb oooo oooo zostanie za³¹czony, co sygnalizuje Write Program Memory 0100 H000 xxxx xxaa bbbb bbbb iiii iiii zapalenie siÍ diody D2. Po zakoÒ- Read EEPROM Memory 1010 0000 xxxx xxxx xbbb bbbb oooo oooo czeniu programowania dioda zgaú- Write EEPROM Memory 1100 0000 xxxx xxxx xbbb bbbb iiii iiii nie i procesor moøe byÊ wyjÍty Write Lock Bits 1010 1100 111x x21x xxxx xxxx xxxx xxxx z podstawki. Jednoczeúnie moøe Read Device Code 0011 0000 xxxx xxxx xxxx xxbb oooo oooo byÊ programowany tylko jeden procesor. W programatorze najle- gdzie: piej uøyÊ podstawek ze z³¹czami a, b binarnie okre[lony adres pamici z 'a' oznaczajcymi starsze bity H bit okre[lajcy czy chodzi o mBodszy [0] czy starszy [1] bajt kodu programu (dane zapisywane s precyzyjnymi, ktÛre nie ulegn¹ do pamici programu jako bajty, natomiast w ALU przetwarzane jako 16-bitowe sBowa), zniszczeniu na skutek czÍstego o dana odczytywana z wyj[cia MISO wk³adania i wyjmowania progra- i dana zapisywana do pamici mowanych procesorÛw. 1, 2 bity zabezpieczenia przed odczytem x ustawienie tak oznaczonego bitu nie jest istotne Ryszard Szymaniak, AVT Elektronika Praktyczna 4/99 64 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 sposobÛw pisania programÛw asemblerowych. Wydaje nam siÍ to potrzebne, z procesora. Programik jest bardzo zw³aszcza w przypadku nowych prosty, ale w zupe³noúci wystar- uk³adÛw, 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 bÍdzie wowe manipulacje danymi. musia³ siÍ nauczyÊ nowych pro- Wybieraj¹c odpowiedni¹ opcjÍ cesorÛw, 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Ê zbiÛr zawieraj¹cy moøna siÍ spodziewaÊ stosuj¹c dane do zapisu do pamiÍci pro- nowe uk³ady. cesora. ZbiÛr moøe mieÊ postaÊ Na pocz¹tku wrÛcimy 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- ktÛry 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 pamiÍci uk³adu AVR. warty zbiÛr 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 rozkazÛw, spe³nia ikonÍ dyskietki lub wybieraj¹c takøe rolÍ interfejsu, za pomoc¹ opcjÍ ìZapiszî menu ìPlikî. ktÛrego uøytkownik moøe decydo- Polecenie ìProgramî uaktywnia waÊ co i jak zapisaÊ lub odczytaÊ opcje zwi¹zane bezpoúrednio z pro- z pamiÍci programowanego proce- gramatorem. Pojawiaj¹ce siÍ nowe sora. Korzystaj¹c z informacji do- okienko udostÍpnia szereg klawi- stÍpnych w pierwszej czÍúci arty- szy, ktÛrych naciúniÍcie rozpoczy- ku³u, kaødy moøe samodzielnie na zapis, weryfikacjÍ lub odczyt stworzyÊ taki program. Dla pozo- danych z pamiÍci programu (Flash) sta³ych, ktÛrzy nie chc¹ lub nie procesora lub z pamiÍci 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- bitÛw zabezpieczaj¹cych przed od- dows95. Na rys. 4 przedstawiono czytem danych z pamiÍci, a kla- ekran pracuj¹cego programu w try- wisz ìKoniecî zamyka sesjÍ pro- bie zapisu lub odczytu danych gramowania i pozwala powrÛciÊ Elektronika Praktyczna 5/99 71 Programator procesorów AVR interesuj¹cych nas plikÛw. Moøna tam znaleüÊ zarÛwno asemblery jak i symulatory pozwalaj¹ce za pomoc¹ komputera úledziÊ zacho- wanie napisanego przez nas op- rogramowania oraz podgl¹daÊ za- wartoúÊ rejestrÛw i pamiÍci pro- cesora, co umoøliwia wykrycie b³ÍdÛw. DostÍpne s¹ takøe przy- k³adowe programy i procedury na- pisane w jÍzyku 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 jÍzyka C, ktÛrego uøycie stanowi duøe u³at- wienie podczas pisania profesjo- Rys. 4. Okno programu sterujcego prac programatora. nalnego oprogramowania. Z do- do edycji danych. Dwie rozwijane listy s³uø¹ do wyboru typu pro- cesora, ktÛry bÍdzie programowa- ny oraz portu COM1 lub COM2, do ktÛrego do³¹czona zostanie p³yt- ka programatora. Zmuszenie procesora do wyko- nania jakiejkolwiek sensownej pra- cy polega na stworzeniu dla niego programu, ktÛrego kody zostan¹ zapisane w pamiÍci 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, ktÛrzy kiedykolwiek mieli do czynienia z programowaniem, a powyøsze uwagi skierowane s¹ do nowicjuszy, ktÛrzy dopiero od niedawna interesuj¹ siÍ proceso- rami i sterownikami jednouk³ado- wymi). W przypadku procesorÛw AVR program asemblera rozpo- wszechniany jest nieodp³atnie przez firmÍ ATMEL. Asembler oraz kilka innych programÛw na- rzÍdziowych i ciekawych przyk³a- dÛw oprogramowania dla proce- sorÛw AVR moøna znaleüÊ na stronie internetowej firmy pod adresem www.atmel.com. Na tej stronie kieruj¹c siÍ nastÍpuj¹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 rejestrÛw i bitÛw. Np. jeden z rejestrÛw steruj¹cych portem B procesora znajduje siÍ pod fizycznym adresem 18h. Pi- sz¹c program duøo ³atwiej zapa- miÍtaÊ 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 ktÛrym znajduje siÍ poddawany asemblacji plik ürÛd³owy. Moøna wykorzystaÊ go- Rys. 6. Wyprowadzenia niektórych procesorów serii AVR. towe pliki ürÛd³owe podawane stÍpnych informacji wynika, øe ne. Program moøe odwo³ywaÊ siÍ w przyk³adach albo napisaÊ taki kompilator dla sterownikÛw AVR do etykiet, tak jak np. do kon- plik samodzielnie. oferuje firma IAR, co jest wiado- kretnych adresÛw w pamiÍci pro- 3. Kaødy program powinien moúci¹ dobr¹ i z³¹. Dobr¹ ponie- gramu. zawieraÊ na pocz¹tku winietkÍ waø narzÍdzia tej firmy s¹ pro- Nazwa etykiety zakoÒczona 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, zwiÍz³y zazwyczaj s¹ bardzo drogie i prak- umieszczanie dyrektyw czyli spe- opis jego funkcji, oznaczenie wer- tycznie niedostÍpne 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³adÛw luj¹cego. Nazwa dyrektywy po- przekonamy siÍ bardzo szybko, w swoim w³asnym interesie bÍd¹ przedzona jest bezpoúrednio zna- gdy uzbiera nam siÍ kilka napi- wspierali powstawanie taniego op- kiem kropki (.). Dalej, po co sanych wczeúniej programÛw rogramowania narzÍdziowego, za- najmniej jednej spacji za etykiet¹ asemblerowych. Po pewnym cza- chÍcaj¹c w ten sposÛb do wyko- lub pocz¹tkiem linii moøe poja- sie bardzo ³atwo zapomnieÊ co rzystywania w konstrukcjach elek- wiÊ siÍ instrukcja, ktÛra 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 rÛw. na przez asembler na seriÍ kodÛw zmian w stosunku do innych wer- Fenomen popularnoúci proce- steruj¹cych dzia³aniem procesora. sji. OP£ACA SI TAKØE ZAPISY- sorÛw '51 wi¹øe siÍ g³Ûwnie z do- W linii programu moøe pojawiÊ WAÆ ROZBUDOWANE I DO- stÍpnoú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 poszczegÛlne czÍúci, zmien- stanie okienko komunikatÛw za- øy otworzyÊ nowy dokument po- ne itd. Im liczniejsze i dok³adniej- koÒczonych informacj¹ o braku s³uguj¹c siÍ w tym celu ikon¹ sze s¹ komentarze, tym pustej kartki albo wczytaÊ wczeú- mniej potem k³opotÛw niej napisany program, ktÛry 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 programÛw kiem úrednika (;) i mo- i opieraj¹c siÍ na tych przyk³a- øe siÍ znaleüÊ po co dach napisz¹ swÛj w³asny, pier- najmniej jednej spacji wszy program dla procesora AVR. za instrukcj¹ lub zaj- Generalnie dobrze jest pamiÍtaÊ mowaÊ ca³¹ liniÍ. o kilku, nastÍpuj¹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 elementÛw, ktÛrych w¹, plik definicji np. po³oøenie w jej obrÍbie nie jest .INCLUDE ì1200def.- obojÍtne. Na pierwszej pozycji incî. Plik definicji jest w nowej linii mog¹ znaleüÊ siÍ plikiem tekstowym, etykiety, czyli nazwy symbolicz- w ktÛrym za pomoc¹ Rys. 7. Mapa pamici procesorów AVR. Elektronika Praktyczna 5/99 73 Programator procesorów AVR b³ÍdÛw. W przeciwnym razie typy procesorÛw w obrÍbie rodzi- niejszych informacji naleøy za- w okienku pojawi¹ siÍ ostrzeøenia ny mog¹ siÍ miÍdzy sob¹ znacz- wsze szukaÊ w dokumentacji tech- wskazuj¹ce linie programu, w ktÛ- nie rÛøniÊ, chociaøby liczb¹ wy- nicznej dostÍpnej chociaøby na rych wystÍpuj¹ 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Ò obudÛw wybranych nych przez program asemblera. neralnie jednak struktura wewnÍ- typÛw procesorÛw. DostÍp do pro- Dane przeznaczone dla naszego trzna wszystkich sterownikÛw jest gramowalnych uk³adÛw wewnÍ- programatora powinny byÊ utwo- podobna. trznych procesora (np. licznikÛw) rzone w formacie Intela, a plik Jako przyk³ad moøe pos³uøyÊ oraz portÛw, za pomoc¹ ktÛrych powinien mieÊ rozszerzenie HEX. schemat blokowy mikrokontrolera procesor komunikuje siÍ ze úwia- W programie dostÍpny jest rozbu- AT90S2313 pokazany na rys. 5. tem zewnÍtrznym, realizowany jest dowany plik pomocy dobrze opi- Centralne miejsce przypada jed- poprzez rejestry I/O. Ich adresy suj¹cy zarÛwno sk³adniÍ popra- nostce arytmetyczno-logicznej oraz adresy 32 rejestrÛw uniwer- wnie napisanego programu ürÛd- ALU oraz zespo³owi rejestrÛw salnych znajduj¹ siÍ we wspÛlnej ³owego jak i jego poszczegÛlne uniwersalnych. Instrukcje progra- przestrzeni adresowej wewnÍtrznej elementy. mu w postaci 16-bitowej, podawa- pamiÍci RAM procesora. MapÍ Ostrzeøenia wyúwietlane przez ne s¹ do ALU i rejestrÛw uniwer- adresÛw dla uk³adu 90S2343 po- program WAVRASM pozwalaj¹ salnych z pamiÍci programu adre- kazano na rys. 7. W przypadku wyeliminowaÊ b³Ídy sk³adni, prze- sowanej przez licznik Program innych procesorÛw zmianie ulega krÍcone nazwy rozkazÛw itp., na- Counter. OprÛcz tych elementÛw, tylko najwyøszy adres pamiÍci tomiast nie uchroni¹ nas przed do wewnÍtrznej magistrali do³¹- RAM, co wynika z jej rozmiarÛw. b³Ídami w konstrukcji logicznej czone s¹ bloki statycznej pamiÍci Wyj¹tkiem jest tu uk³ad 90S1200, programu, ktÛre sprawiaj¹, øe za- (SRAM), pamiÍci EEPROM, uk³ad ktÛry oprÛcz bloku rejestrÛw uni- programowany procesor nie dzia³ watchdoga, interfejs SPI oraz uk³a- wersalnych nie posiada wewnÍtr- tak, jak tego oczekujemy. To dy, ktÛrych wystÍpowanie zaleøy znej pamiÍci RAM. najtrudniejsze do wychwycenia od konkretnego typu procesora: Pierwsze prÛby pisania progra- b³Ídy, bo nasze w³asne. Przy ich liczniki, interfejs szeregowy UART mÛw dla procesorÛw 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, ktÛre na kom- liczba buforÛw portÛw wejúcia/ mi, ktÛrzy takøe sprÛbuj¹ wyko- puterze PC ìudaj¹î, czyli symu- wyjúcia. Praca wewnÍtrznych uk³a- rzystaÊ w swoich urz¹dzeniach te luj¹ sposÛb dzia³ania zaprogramo- dÛw sterownika AVR przebiega sterowniki. Ze wzglÍdu na rÛøni- wanego procesora. DziÍki obser- w takt impulsÛw ze stabilizowa- ce w wewnÍtrznej budowie rÛø- wacji tego dzia³ania, wykonywa- nego kwarcem oscylatora, ktÛry nych typÛw procesorÛw, nie za- niu pojedynczych instrukcji, usta- w pewnych modelach moøe byÊ wsze ich listy rozkazÛw s¹ iden- wianiu pu³apek i podgl¹daniu za- zast¹piony przez wewnÍtrzny ge- tyczne. Dotyczy to zw³aszcza in- wartoúci symulowanych rejestrÛw nerator o sta³ej czÍstotliwoúci strukcji skokÛw i wywo³aÒ pod- procesora, duøo ³atwiej odkryÊ 1MHz, obywaj¹cy siÍ bez zewnÍ- programÛw. I tak np. w proceso- w programie miejsca, ktÛre go trznych elementÛw. rze 90S1200 brak jest rozkazu prowadz¹ w przys³owiowe maliny Poniewaø rodzina sterownikÛw 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. rÛwnania 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 uwzglÍdniaÊ cz³onkÛw wraz z zestawieniem ich rzonyî instrukcj¹, ktÛrej nie ro- jego moøliwoúci wynikaj¹ce z we- najwaøniejszych z punktu widze- zumie zacznie dzia³aÊ w sposÛb wnÍtrznej budowy. PoszczegÛlne nia uøytkownika cech. Dok³ad- trudny do przewidzenia. Tab. 2. Zestawienie podstawowych wBa[ciwo[ci wybranych procesorów AVR. Oznaczenie procesora 90S2323 90S2343 90S1200 90S2313 90S4414 90S8515 ATmega603 WBa[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 wewntrzny oscylator RC - tak tak - - - - PWM - - - 1 2 2 2 zabezpieczenie przed odczytem tak tak tak tak tak tak tak liczba wyprowadzeD 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- ktÛry w innym typie procesora sory posiadaj¹ rozbudowany ze- jestru SPL nie wpiszemy odpo- wywo³uje takie samo przerwanie, staw rejestrÛw ogÛlnego przezna- wiedniego adresu, pierwszy zapis to wektory przerwania w obu ty- czenia. Istniej¹ jednak rÛønice na stosie spowoduje zniszczenie pach procesorÛw nie musz¹ zna- w sposobie uøycia rejestrÛw nale- zawartoúci rejestrÛw, na ktÛry SPL jdowaÊ siÍ pod tym samym ad- ø¹cych do 1 i 2 po³Ûwki zestawu. bÍdzie wskazywa³. Trzeba o tym resem. Konstruktorzy uk³adu zre- Do rejestrÛw R0-R15 nie moøna pamiÍtaÊ i wpisaÊ do SPL adres zygnowali z zasady przypisania na w sposÛb bezpoúredni zapisaÊ pamiÍci RAM, w ktÛrej umiesz- sta³e tych samych adresÛw 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 pamiÍtaÊ. wem ktÛregoú z rejestrÛw 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Ê nastÍpuj¹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[redniczcego 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[redniczcego pocz¹tku przestrzeni adresowej rzamy jeszcze poúwiÍciÊ trochÍ ; do rejestru R1 procesora. Jednak rÛøne typy pro- miejsca na ³amach naszego pisma. Wszystkie procesory (z wyj¹t- cesorÛw z rodziny AVR cechuj¹ Przygotowywane s¹ proste urz¹- kiem AT90S1200) posiadaj¹ stos, siÍ rÛøn¹ liczb¹ moøliwych prze- dzenia wykorzystuj¹ce ciekawe ce- ktÛry moøe byÊ umieszczony rwaÒ, co wynika z ich budowy chy procesorÛw, jakimi s¹ szyb- w dowolnym miejscu pamiÍci i moøliwoúci. Jest to oczywiúcie koúÊ dzia³ania i ma³y pobÛr mocy RAM. W momencie w³¹czenia za- zrozumia³e, bowiem procesor po- pozwalaj¹cy na zasilanie uk³adÛw silania wskaünik stosu, czyli re- zbawiony np. portu szeregowego z baterii. Mamy nadziejÍ, øe takøe jestr SPL, inicjowany jest wartoú- nie moøe wykonywaÊ procedury czytelnikÛw EP zainteresuje ten ci¹ zero. DopÛki nie korzystamy przerwania generowanej przez ten temat i sprÛbuj¹ sami napisaÊ cie- ze stosu (nie wywo³ywane s¹ port. Jednak wystÍpuje tu pewna kawe programy dla procesorÛw podprogramy i przerwania), to ta- niekonsekwencja. Nawet jeøeli pro- AVR. kie ustawienie wskaünika nie jest cesor bÍdzie wyposaøony w uk³ad, Ryszard Szymaniak, AVT Elektronika Praktyczna 5/99 75

Wyszukiwarka

Podobne podstrony:
Ster Proc Dyskret 6 [tryb zgodności]
group avr errno
Using the EEPROM memory in AVR GCC
function proc open
AVR GCC w Linuksie przykład instalacji ze źródeł
FP proc wzory 09
AVR Syntax
Warsztaty AVR Programowanie uC
Term proc i tech WYKLAD I 2
AVR2dRegs
warunki proc
klawiatrura do avr
zestaw uruchominiowy dla procesorów 89Cx051 i AVR
avt 515 Programator mikrokontrolerów AVR i AT89S8252
AVR?d I v10 instr
AVR Instruction Set
ATMEL AVR start programming in C

więcej podobnych podstron