plik


ÿþhttp://www.easy-soft.tsnet.pl/ PBytka testowa dla mikrokontrolerów AT89S... oraz AVR. Budujc model urzdzenia z mikrokontrolerem czego tak naprawd oczekuje projektant od tzw. ukBadu uruchomieniowego? Trudno odpowiedzie na takie pytanie, poniewa| z caB pewno[ci ka|dy oczekuje czego[ innego. Mo|e spróbuj wymieni wBasne kryteria wyboru. ChciaBbym aby taki ukBad: " umo|liwiaB Batwe doBczenie urzdzeD zewntrznych, " umo|liwiaB wykorzystanie stosowanych przeze mnie mikrokontrolerów bez powa|nych zmian w konstrukcji zestawu uruchomieniowego, " pozwalaB na Batwy zapis i testowanie programów przeznaczonych dla mikrokontrolera i nie wymagaB dodatkowego ukBadu programatora, " w Batwy sposób pozwalaB integrowa si z u|ywanymi przeze mnie programami typu IDE. Najbardziej zbli|onym do tego mojego  ideaBu jest AVR Starter Kit firmy ATMEL. Ma jednak szereg wad, które obni|aj w moich oczach jego funkcjonalno[. Mam na przykBad zawsze du|e problemy z podBczeniem zasilania sondy logicznej  najcz[ciej lutuj jej wyprowadzenia wprost do ukBadu stabilizatora. Nie jest to ani funkcjonalne, ani estetyczne, ani zbyt wygodne. W zwizku z brakiem na rynku podobnego ukBadu zdecydowaBem si na zaprojektowanie wBasnego. Jest on cz[ciowo wzorowany na AVR Starter Kit firmy ATMEL i na notach aplikacyjnych tej firmy, jednak posiada pewne cechy funkcjonalne, których nie ma pierwowzór. UkBad przeznaczony jest dla mikrokontrolerów produkowanych przez ATMEL. Oczywi[cie mo|na przy jego pomocy uruchamia równie| programy napisane dla mikrokontrolerów produkowanych przez innych producentów i zgodnych pod wzgldem wyprowadzeD z popularnym 8051 czy 8052, jednak w takim wypadku zestaw traci sporo ze swej funkcjonalno[ci. Mam tu na my[li jedn z najwa|niejszych cech a mianowicie mo|liwo[ zapisu programu do pamici programu mikrokontrolera bez u|ycia dodatkowego programatora. PBytka prototypowa umo|liwia wykorzystanie lub zaprogramowanie (metod  in-circuit ) nastpujcych ukBadów mikrokontrolerów: " AT89S8252 " AT90S4434 " AT90S1200 i AT90S1200 rev.C " AT90S8515 " AT90S2313 " AT90S8535 " AT90S2323 " ATMega 103 " AT90S2333 " ATMega 161 " AT90S2343 " ATMega 163 " AT90S4414 " ATMega 603 " AT90S4433 " ATMega 83 Podana wy|ej lista w Batwy sposób mo|e by rozszerzona. I najwa|niejsze: pBytk testow bez najmniejszych problemów zintegrowa z Bascom AVR oraz AVR Studio. W innych sytuacjach wykorzystywany jest program AVRProg. Programowanie  in-circuit . Kilka lat temu firma ATMEL zaczBa wyposa|a swoje mikrokontrolery w interfejs sprztowy o nazwie SPI (Serial Peripherial Interface) a wkrótce potem w mo|liwo[ zapisu pamici FLASH i EEPROM z jego wykorzystaniem. Daje to projektantowi systemu mo|liwo[ Batwej implementacji metody zapisu programu do pamici mikrokontrolera zwanej z jzyka angielskiego  in-circuit to znaczy  w ukBadzie . Posiada ona swoje wady i zalety. Wad jest to, |e czasami trzeba nieco skomplikowa ukBad poBczeD tak, aby odseparowa obwody sterownika od szeregowego programatora w czasie zapisu czy odczytu wewntrznej pamici FLASH (EEPROM) mikrokontrolera. Do wad zaliczam równie| mo|liwo[ ustawienia tylko niektórych bitów bezpieczników i opcji przy pomocy tego rodzaju interfejsu. Zalet jest niewtpliwie umo|liwienie zapisu pamici mikrokontrolera bez konieczno[ci wylutowywania go z pBytki czy nawet wyjcia z podstawki. Jest to cecha szczególnie korzystna dla elektronika  amatora, który nie dysponuje zbyt du|ym bud|etem koniecznym na zakup emulatora. Pozwala mu na uruchamianie urzdzenia metod prób i bBdów. Do metody programowania  in-circuit sigaj równie| chtnie profesjonali[ci, poniewa| umo|liwia im ona Batw zmian programu wykonywanego przez mikrokontroler w celu dokonania poprawek czy dodania cech funkcjonalnych ju| podczas eksploatacji urzdzenia. Opisywan wy|ej cech wykorzystuje proponowany ukBad uruchomieniowy. UkBady mikrokontrolerów wyposa|one w interfejs SPI posiadaj przyporzdkowane mu 4 linie. S to MOSI, MISO, SCK i SS. Ich nazwy pochodz z jzyka angielskiego i oznaczaj: " MOSI  Master Output Slave Input  linia danych; gdy ukBad pracuje jako Master (nadrzdny  sterujcy transmisj) jest to linia wyj[ciowa, gdy jako Slave (podporzdkowany) wówczas jest to linia wej[ciowa, " MISO  Master Input Slave Output  linia danych; gdy ukBad pracuje jako Master jest to linia wej[ciowa, gdy jako Slave  wyj[ciowa, " SCK  linia sygnaBu zegarowego która jest wyj[ciow gdy ukBad pracuje jako Master i wej[ciow, gdy pracuje jako Slave, J.Bogusz  PBytka uruchomieniowa dla ... -Strona 1/1- http://www.easy-soft.tsnet.pl/ SS  Slave Select  linia sterujc przeBczaniem interfejsu z funkcji ukBadu master do funkcji slave; stan niski powoduje przeBczenie interfejsu w tryb Master. Przy programowaniu w ukBadzie nie wykorzystuje si wszystkich wyprowadzeD. Na wyprowadzeniu SS najcz[ciej wymusza si stan wysoki. PodBczenia i odpowiedniego sterowania wymagaj tylko wyprowadzenia MISO, MOSI i SCK. Programowany ukBad mikrokontrolera zawsze pracuje jako Slave, dla którego ukBadem Master jest programator. Master (programator) podaje zewntrzny sygnaB synchronizujcy przesyBanie danych SCK i steruje transmisj. SygnaB SCK powinien mie czstotliwo[: " co najmniej 40 razy mniejsz dla programowanego mikrokontrolera AT89S8252, " co najmniej 4 razy mniejsz dla programowanego mikrokontrolera z serii AVR, Oprócz sygnaBu zegarowego transmisji, programowany mikrokontroler musi by równie| zasilony sygnaBem zegarowym na wej[ciu XTAL1 sterujcym synchroniczn prac CPU. W tym wypadku wystarczy jednak podBczony na zewntrz rezonator kwarcowy czy ceramiczny bdcy najcz[ciej integraln cz[ci ukBadu sterownika. Oba rodzaje pamici (FLASH i EEPROM) mog by zapisane z u|yciem interfejsu SPI tylko wówczas, gdy mikrokontroler znajduje si w stanie reset. Mo|na to uzyska przez podanie stanu wysokiego dla AT89S8252, lub niskiego dla AVR, na wyprowadzenie RESET. To jednak nie wszystko. Aby mo|liwy byB zapis do pamici, CPU musi wykona instrukcj  Programming Enable . Polega to na wprowadzeniu przez interfejs SPI kodu wBa[ciwego rozkazu. W przypadku AT89S8252 jest to 3-bajtowy rozkaz skBadajcy si z kodów 0xAC  0x53 i np. 0x00. Konieczny do speBnienia jest jeszcze jeden warunek. Aby mo|liwy byB zapis z wykorzystaniem interfejsu SPI musi on pracowa synchronicznie z programatorem (ukBadem master). Synchronizacj bada si testujc warto[ wyprowadzan podczas zapisu trzeciego bajtu rozkazu. Je[li interfejs pracuje poprawnie, powinien on wyprowadzi liczb o warto[ci drugiego bajtu (0x53) podczas zapisu trzeciego bajtu rozkazu. Producent zaleca aby prób synchronizacji przeprowadzi 32 razy. Je[li w cigu 32 prób synchronizacji nie powiedzie si ona, oznacza to bdzie brak komunikacji z programowanym ukBadem. Je[li mikrokontroler poBczony jest poprawnie z programatorem, to przyczyn mo|e by uszkodzenie interfejsu lub ustawienie bitów opcji (bezpieczników) w sposób uniemo|liwiajcy dostp do pamici programu z wykorzystaniem SPI. Normalnie zapis pamici wykonanej w technologii FLASH nie jest mo|liwy bez wcze[niejszego ustawienia warto[ci zapisywanej komórki pamici na 0xFF. To znaczy  mo|liwa jest zmiana stanu bitu z 0 na 1, nigdy za[ odwrotnie. Zapisujc dane do pamici FLASH mikrokontrolera firmy ATMEL nie musimy zajmowa si t wBa[ciwo[ci. Tu| przed zapisem bajtu, automatycznie wykonywana jest instrukcja ustawiajca warto[ bitów programowanej komórki pamici na  1 - jest to tak zwane  Auto erase . Interfejs SPI jest typu synchronicznego. Oznacza to, |e dane przesyBane s synchronicznie z sygnaBem SCK. Linie interfejsu s dwukierunkowe i w zale|no[ci od funkcji pracuj jako wej[ciowe lub wyj[ciowe. W przypadku, gdy interfejs sBu|y do zapisu danych w pamici FLASH czy EEPROM, linie MOSI i SCK s wej[ciowymi, za[ MISO wyj[ciow. W wybranym trybie pracy, przesyBane poprzez lini MOSI bity wprowadzane s podczas narastajcego zbocza, natomiast stan MISO zmienia si podczas opadajcego zbocza sygnaBu SCK. Odrbne zagadnienie stanowi sposób adresowania komórek pamici i wymiany danych. Wszystko to skBada si na tak zwany protokóB komunikacyjny, który jest ró|nych dla ró|nych mikrokontrolerów, aczkolwiek posiada wiele cech wspólnych. Na przykBad rodzina AVR wymaga do zapisu pamici sBowa danych o dBugo[ci 16 bitów, natomiast AT89  8 bitów. Ró|nice wystpuj równie| w metodach zapisu  AT89 i AT90 zapisuje si sBowo po sBowie, natomiast ATMega strona po stronie (256 bajtów). Zainteresowanych szczegóBowym opisem protokoBu komunikacyjnego odsyBam do lektury kart katalogowych konkretnych modeli mikrokontrolerów. Aplikacja sterujca  AVRPROG. Do sterowania prac programatora wykorzystaBem darmowy, dostpny na stronie internetowej firmy ATMEL, program AVRProg. Jest to aplikacja wykonana dla [rodowiska Windows. Nie wymaga przeprowadzania |adnej instalacji. Program rozprowadzany jest w jako archiwum w formacie ZIP, które zawiera plik wykonywalny EXE. Nale|y go po prostu skopiowa na dysk twardy i utworzy skrót uBatwiajcy uruchomienie. Uwaga: program nie uruchomi si bez podBczenia urzdzenia, które wy[le identyfikator zawierajcy 3 pierwsze znaki  AVR podczas próby nawizania komunikacji. AVRProg przeznaczony jest do sterowania zarówno prac programatorów szeregowych jak i równolegBych. Ja zastosowaBem go do sterowania programatorem wbudowanym w pBytk ewaluacyjn. Komunikacja nawizywana jest przez interfejs szeregowy RS232 komputera PC (19200, n, 8, 1). Po uruchomieniu program testuje porty szeregowe sprawdzajc mo|liwo[ komunikacji i w ten sposób sam wykrywa obecno[ (bdz te| nieobecno[) podBczonego ukBadu programatora. ProtokóB komunikacyjny jest bardzo prosty, aczkolwiek jego gruntowne poznanie zajBo mi kilka dni. AVRProg przesyBa polecenie w formie pojedynczego znaku. Komendy te wyszczególnione s w tabeli 1. Niektóre z komend wymagaj potwierdzenia ze strony odbierajcego i wykonujcego je ukBadu w postaci kodu CR (0x0D). Inne podaj równie| parametry takie, jak adres czy bajt danych do zapisu. J.Bogusz  PBytka uruchomieniowa dla ... -Strona 2/2- http://www.easy-soft.tsnet.pl/ Opis komendy AVRProg zapisuje AVRProg czyta ID Dane Dane Enter Programming Mode P - - 0x0D (zaBczenie trybu programowania) Auto Increment Address Status a -  Y lub  ? (pytanie o mo|liwo[ automatycznej inkrementacji adresu) Set Address A MSB LSB 0x0D (ustawienie adresu zapisywanego lub odczytywanego bajtu) Write Program Memory Low Byte c dd 0x0D (zapis mBodszego bajtu pamici programu) Write Program Memory High Byte C dd 0x0D (zapis starszego bajtu pamici programu) Issue Page Write m 0x0D (instrukcja zapisu strony pamici) Read Lock Bits r dd (dd) (odczyt bitów blokujcych) Read Program Memory R N x dd (odczyt pamici programu  FLASH) Read Data Memory d dd (odczyt pamici danych  EEPROM) Write Data Memory D dd 0x0D (zapis pamici danych  EEPROM) Chip Erase e 0x0D (kasowanie pamici danych i pamici programu) Write Lock Bits l dd 0x0D (zapis bitów blokujcych) Write Fuse Bits f dd 0x0D (zapis bitów bezpieczników) Read Fuse Bits Low Byte F dd (odczyt mBodszego bajtu stanu bitów bezpieczników) Read Fuse Bits High Byte N dd (odczyt starszego bajtu stanu bitów bezpieczników) Leave Programming Mode L 0x0D (opuszczenie trybu programowanie, przej[cie do stanu spoczynkowego) Select Device Type T dd 0x0D (ustawienie typu programowanego mikrokontrolera) Read Signature Bytes s 3 x dd (odczyt bajtu sygnatury ukBadu) Return Supported Device Codes t N x dd 0x00 (odczyt listy obsBugiwanych przez programator ukBadów) Return Software Identifier S 7 x dd (odczyt identyfikatora programu; dla programatora szeregowego jest to AVR ICP, dla pBytki prototypowej AVR DEV itp.) Return Software Version V dd dd (odczyt wersji oprogramowania) Return Hardware Version v dd dd (odczyt wersji ukBadu programatora) Return Programmer Type p dd (odczyt rodzaju programatora; S to programator szeregowy, P równolegBy) Set LED x dd 0x0D (zaBczenie diody LED o podanym kodzie) Clear LED y dd 0x0D (wyBczenie diody LED o podanym kodzie) Tabela 1. Wykaz komend programy AVRProg. Aby zilustrowa u|ycie komend posBu| si sekwencj rozkazów przesyBanych przez AVRProg tu| po uruchomieniu. Komendy te wysyBane s w celu identyfikacji rodzaju podBczonego programatora oraz pobrania listy obsBugiwanych ukBadów: " 0x1B (ESC) - oczyszczenie bufora komunikacji programatora, "  S w  identyfikacja wersji oprogramowania, J.Bogusz  PBytka uruchomieniowa dla ... -Strona 3/3- http://www.easy-soft.tsnet.pl/ "  a  pytanie o mo|liwo[ autoinkrementacji adresu, "  t  pobranie listy obsBugiwanych ukBadów, "  T + kod  wybranie programowanego mikrokontrolera (najcz[ciej jest to ostatni zapisywany mikrokontroler). Aplikacja jest bardzo prosta w u|yciu. ObsBuguje si j identycznie jak wikszo[ programów napisanych dla [rodowiska Windows. Korzystajc z pola combo (device) umieszczonego na dole okienka, nale|y wybra programowany ukBad mikrokontrolera. Od tego wyboru zale|e bdzie faza sygnaBu RESET oraz algorytm z zastosowaniem którego zapisywana i odczytywana bdzie pami mikrokontrolera. Na górze okienka umieszczony jest przycisk  Browse (Hex file). Korzystajc z niego nale|y wskaza zbiór w formacie HEX zawierajcy dane do zapisu w FLASH lub EEPROM. W ten sam sposób wskazuje si równie| nazw zbioru, w którym zostan zapamitane odczytane dane. Teraz, po wykonaniu wy|ej opisywanych czynno[ci, mo|na przeprowadzi programowanie pamici, odczyta j lub porówna jej zawarto[ z danymi zapamitanymi na dysku. Operacje te mo|na przeprowadza niezale|nie dla obu rodzajów pamici. Uwaga: przed zapisem pamici FLASH wykonywana jest instrukcja kasujca zarówno zawarto[ pamici FLASH jak i EEPROM. W przypadku zapisu danych do EEPROM  zawarto[ FLASH nie jest usuwana. Komunikacj z programatorem mo|emy przetestowa wykorzystujc przycisk  Advanced . Po jego wybraniu uka|e si okienko dialogowe, które w cz[ci informacyjnej powinno zawiera identyfikator podBczonego ukBadu programatora (dla opisywanej pBytki jest to  AVR DEV ), wersj oprogramowania (tu powinno si znalez  7.0 ) oraz sygnatur ukBadu umieszczonego w podstawce. Jedynym wyjtkiem jest tu AT89S8252, którego sygnatura nie jest odczytywana (uka|e si nastpujca informacja  ?? ?? ?? ) Zdjcie 1. Wygld okna programu AVRProg po uruchomieniu. Opis ukBadu. UkBad zmontowany zostaB na pBytce dwustronnej z metalizacj otworów. Umo|liwia podBczenie mikrokontrolerów w obudowie DIL40 oraz DIL20. Inne  mimo i| mog si znajdowa na li[cie programowanych ukBadów  wymagaj zastosowania adaptera. Rol programatora speBnia tani i popularny mikrokontroler AT89C2051, w którym zaimplementowaBem programowy interfejs SPI, pracujcy z zewntrznym rezonatorem kwarcowym 11,0592 MHz. Mikrokontroler ten komunikuje si z aplikacj sterujc AVRProg przez interfejs szeregowy RS232. Konwersji poziomów napi dokonuje ukBad drivera MAX232. Wykorzystane s tylko 2 bramki: odpowiednio jedna nadajnika i jedna odbiornika. PozostaBe dwie podBczone s do wyprowadzeD UART programowanego mikrokontrolera. Umo|liwia to jego podBczenie i prac na przykBad jako terminal, bez stosowania dodatkowego ukBadu dopasowujcego. Wyprowadzenia UART mo|na odBczy od drivera MAX232. Wystarczy wyj zworki J1 i J2. AT89C2051 peBni jednocze[nie rol ukBadu sterujcego wyprowadzeniem reset programowanego mikrokontrolera. Faza sygnaBu reset jest dobierana w dwojaki sposób. Tu| po wBczeniu ukBad  nie wie jaka faza sygnaBu jest wymagana, poniewa| nie zostaB jeszcze przesBany przez AVRProg bajt dokonujcy wyboru typu mikrokontrolera. Mo|na to co prawda okre[li na podstawie odczytu sygnatury ukBadu, jednak ta metoda nie zostaBa zaimplementowana. Aby okre[li faz reset po wBczeniu zasilania ukBad odczytuje stan zwory J3. I tak AT89S8252 wymaga aby zworka znalazBa si w poBo|eniu 1-2, natomiast ukBady z serii AVR 2-3. Nastawa ta ma znaczenie tylko do momentu przesBania bajtu identyfikatora wybranego ukBadu. Pózniej nastawa zwory jest ignorowana. Do wyprowadzenia INT0 mikrokontrolera programatora podBczony jest przycisk, lub tak jak w modelu, goldpiny zwierane w razie potrzeby na przykBad przy pomocy [rubokrta, czy psety. Zwarcie wyprowadzeD J.Bogusz  PBytka uruchomieniowa dla ... -Strona 4/4- http://www.easy-soft.tsnet.pl/ (lub naci[nicie przycisku) wymusza krótki sygnaB reset programowanego mikrokontrolera. Przycisk nie dziaBa w czasie, gdy programator zapisuje lub odczytuje dane. Stan programatora sygnalizowany jest przez trzy diody [wiecce o kolorach |óBtym, zielonym i czerwonym: " dioda zielona oznaczona jako  OK za[wieca si, gdy rezultat operacji jest poprawny oraz po nawizaniu poBczenia z aplikacj AVRProg, tu| po jej uruchomieniu, " dioda |óBta oznaczona jako  praca [wieci si, gdy programator zapisuje lub odczytuje dane, " dioda czerwona sygnalizuje bBd zapisu, odczytu lub weryfikacji danych i za[wieca si po wy[wietleniu komunikatu o bBdzie przez aplikacj AVRProg. Poza ukBadem drivera MAX232 i dwoma stabilizatorami napicia, na pBytce nie ma innych ukBadów scalonych. Ci, którzy lubi eksperymentowa z rozmaitymi znajdujcymi si na pBytce testowej ukBadami, nie znajd tu nic dla siebie. PBytka ma wszystkie porty mikrokontrolera wyprowadzone na zewntrz bdz to przy pomocy zBcz terminatorów, bdz to przy pomocy goldpinów. Te ostatnie przeznaczone s do podBczenia wy[wietlacza pracujcego z interfejsem 4 lub 8 bitowym oraz do wyprowadzenia sygnaBów z ukBadu programatora w celu zapisu danych w innym, zewntrznym ukBadzie. Wszystkie linie portów mikrokontrolera testowego za wyjtkiem P1 s podBczone do zewntrznych rezystorów pull-up o warto[ci 47k. Rol oscylatora speBnia rezonator kwarcowy. Ja stosuj dla wikszo[ci AVR rezonator o czstotliwo[ci 7,3728 MHz a dla AT89S8252 11,0592 MHz lub 22,1184 MHz. Oscylator trzeba bdzie prawdopodobnie wymienia w zale|no[ci od aktualnych potrzeb. Mo|na wic w otwory na pBytce drukowanej wlutowa 2 wyprowadzenia wyjte z podstawki precyzyjnej tak, aby mo|liwa byBa wymiana rezonatora bez konieczno[ci u|ycia lutownicy. Mo|na te| w razie potrzeby wymieni rezonator na inny wylutowujc go. Jak wspomniaBem wcze[niej, na pBytce znajduj si 2 ukBady stabilizatorów napicia. Ten pierwszy, oznaczony jako U1, sBu|y do zasilania ukBadów znajdujcych si na pBytce. Ten drugi, oznaczony jako U2, mimo i| korzysta ze wspólnego napicia wej[ciowego podawanego przez G1, sBu|y do zasilania ukBadów znajdujcych si poza pBytk i mo|e stabilizowa napicie o innej warto[ci ni| U1. W ukBadzie modelowym u|ywaBem stabilizatora z serii 7812. Oba napicia wyprowadzone s na zewntrz przez zBcza G2 (5V) i G3 (inne napicie, w modelu byBo to 12V). Ich stan sygnalizowany jest przez diody LED  odpowiednio D6 i D8. Diody maj za zadanie [wieci przy obecno[ci napicia wyj[ciowego. Ich dodatkow funkcj jest to, |e zgasn w przypadku zwarcia. Jest to jedynie bardzo prosty sposób sygnalizacji. Zabezpieczenie nadprdowe jest jednym z elementów, w które wyposa|ony jest stabilizator. Uwaga: obwody stabilizatorów nie posiadaj separacji galwanicznej. Ich wyj[ nie mo|na Bczy szeregowo w celu uzyskania wy|szego napicia. Napicie wej[ciowe zale|y od rodzaju zastosowanych stabilizatorów. Jego warto[ powinna by co najmniej o 2V wy|sza od napicia wyj[ciowego stabilizatora. I tak, je[li konieczne jest wyBcznie zasilenie ukBadów pBytki testowej, wystarczy doprowadzenie do G1 napicia staBego lub przemiennego o warto[ci okoBo 8V. Za zBczem G1 znajduje si mostek prostowniczy i kondensator elektrolityczny, tote| polaryzacja doprowadzonego napicia nie ma znaczenia: zamiana  + z  - nie jest dla ukBadu grozna. Tabela 2 zawiera opisy zBcz  wyprowadzeD pBytki. ZBcza oznaczone jako X to wyprowadzenia sygnaBów mikrokontrolera. Funkcje G1, G2 i G3 omówili[my ju| wcze[niej. G4 to wyprowadzenie przez które sygnaBy interfejsu SPI programatora szeregowego mog by podawane na zewntrz. Mo|na sobie wyobrazi zasilenie nimi pBytki  przej[ciówki z podstawk, w której znajduje si mikrokontroler do zapisu czy odczytu lub podBczenie programatora do urzdzenia zewntrznego. ZBcza X1 i X2 to wyprowadzenia przeznaczone dla podBczenia wy[wietlacza LCD. ZBcze X1 umo|liwia podBczenie LCD z interfejsem 8-bitowym, natomiast zBcze X2 z interfejsem 4-bitowym. Potencjometr wieloobrotowy PR1 sBu|y do regulacji kontrastu. Dla wikszo[ci wy[wietlaczy LCD mo|na z niego zrezygnowa, Bczc wyprowadzenia 2 i 3 potencjometru, podajc potencjaB masy zamiast napicia regulacji. ZBcza X3 do X16 to wyprowadzenia portów mikrokontrolera. Pewnego wyja[nienia wymaga rola zwory J4 podBczonej do nó|ki 31 mikrokontrolera. Wyprowadzenie 31 w przypadku AT89S8252 oznaczane jest jako VPP/Prog i sBu|y do wyboru rodzaju pamici programu podBczonej do mikrokontrolera. Praca z wewntrzn pamici programu FLASH wymaga podania stanu wysokiego. Nie jest ono u|ywane z innym przeznaczeniem ni| tylko wybór pamici programu. Inaczej jest w rodzinie ukBadów AVR. Tutaj, na przykBad dla AT90S8515, to samo wyprowadzenie peBni funkcj Capture Input (ICP) i mo|e sBu|y do pomiaru czasu trwania impulsu. Zwora J4 umo|liwia wybór podBczenia nó|ki 31 mikrokontrolera do  1 logicznej w poBo|eniu 1-2 oraz doBczenie jej do wyprowadzenia zBcza X16 w poBo|eniu 2-3. Pamitajmy o jej roli zmieniajc rodzaj mikrokontrolera. Bez podania logicznej  1 AT90S8252 nie bdzie pracowaB poprawnie z wewntrzn pamici programu! ZBcza DSUB9 oznaczone jako X17 i X18 to wyprowadzenia interfejsu RS232. X17 to wej[cie / wyj[cie programatora, X18 to dodatkowe zBcze umo|liwiajce wykorzystanie interfejsu UART testowanego mikrokontrolera. SygnaBy tego interfejsu obecne s równie|, bez dodatkowych ukBadów buforów, na wyprowadzeniach zBcza X11. Tabele 2 i 3 zawieraj opisy zBcz oraz opis funkcji i poBo|eD elementów regulacyjnych i zworek. Programator  opis programu. Programator szeregowy wykonaBem w oparciu o mikrokontroler AT89C2051 pracujcy z rezonatorem kwarcowym 11,0592 MHz. CaBy program napisany jest w jzyku C z niewielkimi fragmentami w jzyku asembler. Po skompilowaniu zajmuje on okoBo 1,6kB przy wBczonej opcji optymalizacji kodu wynikowego pod ktem szybko[ci jego dziaBania. Do napisania programu posBu|yB mi kompilator firmy RAISONANCE. Ka|dy, kto bdzie chciaB wykona modyfikacje mo|e si posBu|y darmow wersj demonstracyjn tego pakietu dostpn na stronie producenta http://www.raisonance.com/ umo|liwiajc kompilacj i uruchamianie programów do 4kB kodu. J.Bogusz  PBytka uruchomieniowa dla ... -Strona 5/5- http://www.easy-soft.tsnet.pl/ ZBcze Uwagi Oznaczenie Numer Opis wyprowadzenia sygnaBu X1 1 masa (wy[w. LCD w 2 +5V trybie 4 bity) 3 kontrast z potencjometru PR1, mo|na zewrze z GND 4 PB0 (P1.0) RS (LCD Register Select) 5 PB1 (P1.1) RD (LCD Read) 6 PB2 (P1.2) EN (LCD Enable) 7 PB4 (P1.4) DB4 (LCD Data Bus 4) 8 PB5 (P1.5) DB5 (LCD Data Bus 5) 9 PB6 (P1.6) DB6 (LCD Data Bus 6) 10 PB7 (P1.7) DB7 (LCD Data Bus 7) X2 1 masa (wy[w. LCD w 2 +5V trybie 8 bitów) 3 kontrast z potencjometru PR1, mo|na zewrze z GND 4 PD4 (P1.0) RS (LCD Register Select) 5 PD5 (P1.1) RD (LCD Read) 6 PD6 (P1.2) EN (LCD Enable) 7 PB0 (P1.4) DB0 (LCD Data Bus 0) 8 PB1 (P1.5) DB1 (LCD Data Bus 1) 9 PB2 (P1.6) DB2 (LCD Data Bus 2) 10 PB3 (P1.7) DB3 (LCD Data Bus 3) 11 PB4 (P1.7) DB4 (LCD Data Bus 4) 12 PB5 (P1.7) DB5 (LCD Data Bus 5) 13 PB6 (P1.7) DB6 (LCD Data Bus 6) 14 PB7 (P1.7) DB7 (LCD Data Bus 7) 15 +pod[w. napicie zasilania pod[wietlania tBa: 4,3V DC 16 masa masa napicia pod[wietlania tBa X3 1 PA0 (P0.0) Opis wyprowadzeD dla AT89S8252 i AT90S8515 2 PA1 (P0.1) X4 1 PA2 (P0.2) AT89S8252 i AT90S8515 2 PA3 (P0.3) X5 1 PA4 (P0.4) AT89S8252 i AT90S8515 2 PA5 (P0.5) X6 1 PA6 (P0.6) AT89S8252 i AT90S8515 2 PA7 (P0.7) X7 1 PC0 (P2.0) AT89S8252 i AT90S8515 2 PC1 (P2.1) X8 1 PC2 (P2.2) AT89S8252 i AT90S8515 2 PC3 (P2.3) X9 1 PC4 (P2.4) AT89S8252 i AT90S8515 2 PC5 (P2.5) X10 1 PC6 (P2.6) AT89S8252 i AT90S8515 2 PC7 (P2.7) X11 1 PD0 (P3.0) AT89S8252 i AT90S8515 2 PC1 (P3.1) X12 1 PD2 (P3.2) AT89S8252 i AT90S8515 2 PD3 (P3.3) X13 1 PD4 (P3.4) AT89S8252 i AT90S8515 2 PD5 (P4.5) X14 1 PD6 (P3.6) AT89S8252 i AT90S8515 2 PD7 (P3.7) X15 1 RESET AT89S8252 i AT90S8515 2 ALE X16 1 ICP-1 (Vpp) AT89S8252 i AT90S8515 2 OC1 (PSEN) X17 RS232 zBcze programatora; X17 podBczone jest do AT89C2051 X18 RS232 zBcze interfejsu UART testowanego mikrokontrolera; odBczane przy pomocy J1 i J2 G1 1, 2 napicie zasilania napicie zasilajce ukBadu, staBe lub przemienne, o warto[ci wy|szej o co najmniej 2V od napicia wyj[ciowego G2 1 +5V wyprowadzenia napi zasilajcych mikrokontroler 2 masa G3 1 np.+12V wyprowadzenie napicia odseparowanego od zasilania mikrokontrolera 2 masa G4 1 +5V wyprowadzenia programatora przeznaczone do podBczenia zewntrznego, 2 PB7 programowanego ukBadu 3 - 4 PB6 5 - 6 PB5 8 RESET 7, 9, 10 masa Tabela 2. Opis wyprowadzeD pBytki testowej J.Bogusz  PBytka uruchomieniowa dla ... -Strona 6/6- http://www.easy-soft.tsnet.pl/ Zworka / element regulacyjny Opis funkcji Oznaczenie PoBo|enie J1 1-2 linia RXD podBczona do drivera MAX232 (i zBcza X18) 0 RXD odBczone J2 1-2 linia TXD podBczona do drivera MAX232 (i zBcza X18) 0 TXD odBczone J3 1-2 wybór fazy sygnaBu reset, aktywna jest  1 (AT89) 2-3 aktywne jest  0 (AT90 i ATMega) J4 1-2 logiczna  1 (Vcc) doBczona do wyprowadzenia 31 mikrokontrolera (AT89S8252) wyprowadzenie 31 podBczone do zBcza X16 (ICP-1) 2-3 PR1 - regulacja kontrastu dla wy[wietlacza SW1 - zwarcie powoduje reset programowanego mikrokontrolera, funkcja blokowana podczas odczytu / zapisu danych SW2 1-2 zwora - wyBcznik zasilania 0 Tabela 3. Opis elementów regulacyjnych oraz nastaw zworek CaBy program to rodzaj terminala doBczanego do komputera PC i realizujcego polecenia przesyBane przez AVRProg. Z maBym wyjtkiem, do komunikacji u|ywane s funkcje wej[cia / wyj[cia, z biblioteki producenta. Ten  maBy wyjtek to funkcja przesyBajca znaki do komputera PC, która wymagaBa odrbnej implementacji. Standardowo bowiem putchar() po napotkaniu kodu 0x0A przesyBa dodatkowo 0x0D tworzc typow sekwencj koDca linii znaków (powrót karetki i nowa linia). Nie jest to po|dane przy przesyBaniu danych w postaci binarnej zawartych w pamici mikrokontrolera. Najprostszym rozwizaniem byBa wBasna implementacja funkcji putchar(), co uczyniono na pocztku programu. Jak wida, nie nale|y ona do zbyt skomplikowanych. Nie wykorzystuje mechanizmu przerwaD, zeruje flag TI oraz zapisuje dane do bufora UART i oczekuje na ustawienie TI bdce sygnaBem zakoDczenia transmisji bajtu. Funkcja korzysta z nastaw predefiniowanych przez producenta pakietu. Szybko[ transmisji okre[lana jest przez polecenie #pragma DEFJ(TIM1_INIT=0xFD) zawierajce warto[ inicjujc Timer 1 sterujcy prac UART. //wBasna funkcja putchar (dla ka|dego 0x0A oryginalny putchar dodaje 0x0D) int putchar (const int c) //nagBówek zgodny z bibliotek producenta { SBUF = c; //zapis bufora UART TI = 0; //zerowanie flagi TI, pocztek transmisji while (!TI); //oczekiwanie na przesBanie bajtu } Listing 1. Implementacja funkcji putchar() Funkcje zapisu (wrser) i odczytu (rdser) interfejsu SPI napisane zostaBy w jzyku asembler. S to niewielkie procedury, zaledwie po kilka bajtów ka|da. Ich implementacja w C, aczkolwiek mo|liwa, zajmowaBaby wicej miejsca w pamici programu oraz byBa nieco bardziej skomplikowana. Dziki asemblerowi Batwo jest zapanowa nad funkcj i stanem flagi przeniesienia  C mikrokontrolera a tak|e nad czasem wykonywania instrukcji. Z tego samego powodu równie| funkcja - ptla absorbujca CPU na czas okoBo 1ms wykonana jest w asemblerze (delayms). Deklaracji bitów wyprowadzeD programowego interfejsu SPI (MISO, MOSI i SCK) dokonaBem w module napisanym w jzyku asembler. Reszta programu to bardzo rozbudowany warunek switch rozpatrujcy odebrane znaki i podejmujcy akcj w zale|no[ci od przesBanych przez AVRProg poleceD. ProtokoBy komunikacyjne AT89 i AT90 ró|ni si znacznie pomidzy sob. Z tego te| powodu, w wielu miejscach programu, konieczny jest rozdziaB funkcji na te realizowane przez AVR i te realizowane przez AT89 mimo, i| przesyBane polecenia maj identyczn posta. Podstawowa ró|nica w protokole polega na tym, |e AT89 wymaga 3 bajtów dla ka|dego z poleceD, natomiast AT90 i ATMega wymagaj 4. Szczególn uwag nale|y zwróci na poprawn implementacj funkcji spiinit() i polecenie  P  byBa ju| o nim mowa wcze[niej. Funkcja ta wprowadza kod rozkazu  Programming Enable umo|liwiajc zapis pamici FLASH i EEPROM. UkBady z serii AVR wymagaj, aby dokonana zostaBa synchronizacja interfejsów Master (programator) i Slave (mikrokontroler). Dodatkowo funkcja ta wywoBywana jest na koniec cyklu zapisu, przed przeBczeniem do cyklu odczytu. Uwaga: bez poprawnej pracy funkcji spiiinit() nie jest mo|liwy zapis i odczyt danych z wykorzystaniem interfejsu SPI. Poszczególne funkcje i wymagane formaty danych byBy omawiane wcze[niej przy okazji opisu protokoBu komunikacyjnego. DokBadna lektura programu zródBowego pozwoli na zrozumienie szczegóBów implementacji oraz ewentualne wBasne przeróbki. Pomocne mog by zwBaszcza noty aplikacyjne dostpne na stronie internetowej firmy ATMEL (dla przykBadu AVR109 i AVR910) oraz karty katalogowe poszczególnych mikrokontrolerów. Wykonanie i u|ytkowanie ukBadu. CaBo[ zmontowana jest na pBytce dwustronnej z metalizacj otworów. Wszystkie kondensatory za wyjtkiem elektrolitycznych i rezystory to elementy SMD w obudowie 1206. Ich monta| nie powinien nastrcza |adnych J.Bogusz  PBytka uruchomieniowa dla ... -Strona 7/7- http://www.easy-soft.tsnet.pl/ trudno[ci. Równie| z zakupem raczej nie powinno by problemów. Osobi[cie przy tego rodzaju zamówieniach posiBkuj si ofert firm sprzedajcych elementy przez Internet, w formie sprzeda|y wysyBkowej. PBytk mo|na naby z oferty AVT, raczej nie polecam jej samodzielnego wykonywania aczkolwiek jest to oczywi[cie mo|liwe. UkBady stabilizatorów napicia zamontowane s poziomo. PBytka stanowi jednocze[nie radiator i zwiksza powierzchni, dziki której stabilizator traci ciepBo. UkBad U1 musi podawa napicie o warto[ci 5V (7805), ukBad U2 mo|na dobra w zale|no[ci od indywidualnych potrzeb. Mo|e to by drugi egzemplarz 7805, mo|e by równie| 7809 czy 7812. Mo|na stosowa równie| ukBady dla wy|szych napi (7815 czy 7824), jednak w takim przypadku prawdopodobnie wymagane bdzie zaBo|enie dodatkowego radiatora odprowadzajcego nadmiar ciepBa z ukBadu U1. UkBady mikrokontrolerów montowane s w podstawkach. U4, to znaczy AT89C2051 w celu Batwego demonta|u i ewentualnej zmiany programu, ukBady testowe wykorzystuj JP1 i JP2 w celu Batwej ich wymiany. Raczej proponuj nie stosowa tak zwanych podstawek precyzyjnych lecz te zwykBe.  Du|a podstawka, DIL40, ma wewntrz poprzeczne wzmocnienie, które nale|y odci przy pomocy piBki lub ostrego no|a.  MaBa podstawka, DIL20, jest bowiem montowana wewntrz du|ej a wzmocnienie to uniemo|liwia. Ze wzgldu na ten sposób monta|u, podstawka DIL20 mo|e wymaga równie| nieznacznego zeszlifowania na przykBad przy pomocy papieru [ciernego tak, aby pasowaBa do wntrza DIL40. SzczegóBy ich monta|u pokazane s na fotografii 2. Zdjcie 2. Sposób monta|u podstawek JP1 i JP2 przeznaczonych dla testowanych mikrokontrolerów. ZBcza X1, X2 i G4 to dwurzdowe listwy z goldpinami. S one przycinane do potrzebnej dBugo[ci i wlutowywane w pBytk. Wyprowadzenia portów mikrokontrolera to zBcza  pod [rubk , tak zwane terminatory, o rastrze 3,81mm. ZostaBy one zastosowane dla wygody poBczeD i monta|u. Mo|na ich nie stosowa a w ich miejsce na przykBad przylutowa zwykBe przewody. Obni|y to znacznie koszt wykonania ukBadu. Wszystkie zwory to pozostaBo[ci po demonta|u starej pByty gBównej komputera PC. S one stosowane zarówno do wyboru opcji czy przeBczania sygnaBów, jak i znajduj zastosowanie jako wyBcznik napicia zasilania czy  przycisk reset. Uruchomienie ukBadu. Poprawnie zmontowany ukBad nie powinien nastrcza |adnych trudno[ci przy uruchomieniu. Najgrozniejsza dla niego mo|e by jedynie zamiana ukBadu U1 z U2, tote| przed wlutowaniem czy wBo|eniem w podstawki mikrokontrolerów i ukBadu MAX232, nale|y podBczy ukBad do zasilania i sprawdzi warto[ napicia zasilajcego ukBady. Powinno ono by równe 5V. Pózniej napicie zasilania nale|y odBczy i zamontowa U3 (MAX232) oraz zaprogramowany ukBad U4 (AT89C2051). CaBo[ podBczamy typowym kablem do transmisji szeregowej do komputera PC i wBczamy zasilanie. Diody LED sygnalizujce stan programatora powinny za[wieci si a nastpnie kolejno zgasn. Diody sygnalizujce obecno[ napi wyj[ciowych powinny zosta za[wiecone. Teraz nale|y przystpi do próby komunikacji z aplikacj AVRProg. Tu| po jej uruchomieniu próbuje ona zidentyfikowa typ podBczonego programatora oraz list programowanych ukBadów. WysBanie komendy  t powoduje za[wiecenie si diody zielonej ( OK ), co jest sygnaBem poprawnej wymiany danych programatora z aplikacj sterujc. Po krótkiej chwili od nawizania poBczenia, na ekranie PC powinno si ukaza okno robocze programu AVRProg. Teraz wybierzmy przycisk  Advanced . Na ekranie powinna ukaza si informacja jak na zdjciu 3. Zdjcie 3. Identyfikacja rodzaju programatora po wybraniu opcji  Advanced . Teraz zamykamy okienka AVRProg, wyBczamy zasilanie i umieszczamy ukBad testowy w podstawce. Na pocztek wybraBem AT90S8515, jednak mo|e to by dowolny z listy obsBugiwanych mikrokontrolerów, w J.Bogusz  PBytka uruchomieniowa dla ... -Strona 8/8- http://www.easy-soft.tsnet.pl/ obudowie DIL40 lub DIL20. Ustawiamy poBo|enia zworek J3 i J4 w zale|no[ci od rodzaju u|ytego mikrokontrolera. WBczamy zasilanie i uruchamiamy aplikacj AVRProg. Ponowny wybór  Advanced powinien pokaza nam odczytan sygnatur ukBadu (nie dziaBa dla AT89S8252!). Pole  Calibration byte pozostaje puste. Po zamkniciu okienka  Advanced , najlepszym testem jest próba zapisu pamici FLASH i EEPROM. Pamitajmy o wyborze wBa[ciwego typu mikrokontrolera z listy programowanych ukBadów. Uwagi na temat eksploatacji. Protoplasty opisywanego ukBadu u|ywam od okoBo 3 lat. CigBe rozszerzanie listy dostpnych ukBadów zmusiBo mnie do napisania wBasnego programu do obsBugi programatora, który teraz, na podstawie algorytmów opisywanych w kartach katalogowych mikrokontrolerów, w Batwy sposób mog modyfikowa. PoBczenia z ukBadami zewntrznymi wykonuje si przy pomocy przewodów. PBytka to w zasadzie jdro systemu umo|liwiajce doBczenie pewnych funkcji, nie ma wbudowanych |adnych ukBadów dodatkowych  pamici, zegara, podtrzymania bateryjnego itp. Wyprowadzenia wy[wietlacza LCD s wspólne z liniami interfejsu SPI. Czasami nie jest mo|liwe zaprogramowanie mikrokontrolera przy podBczonym LCD. Zale|y to jednak od konkretnego modelu wy[wietlacza. Niektóre z nich, przy braku sygnaBu wyboru EN, ustawiaj swoje szyny jako wej[ciowe i nie powoduj zakBóceD w pracy programatora. Inne wymuszaj stan niski na przykBad linii MOSI (PB5) uniemo|liwiajc zapis programu. Tak wic, je[li przy podBczonym wy[wietlaczu LCD nie jest mo|liwa poprawna weryfikacja zawarto[ci pamici, nale|y go na czas programowania odBczy. Typ programowanego ukBadu przechowywany jest w pamici RAM programatora. Czasami przy wyBczeniach pBytki uruchomieniowej, mimo i| ka|dorazowo sekwencja programowania zaczyna si od przesBania kodu wyboru programowanego ukBadu, mo|e si zdarzy, |e przy pierwszej próbie zapisu lub odczytu danych otrzymamy komunikat  Cannot enter programming mode . Nale|y wówczas ponowi prób operacji a je[li nie da to rezultatu, zamkn aplikacj AVRProg i uruchomi j ponownie. Operacja taka przywraca wszystkie nastawy programatora, ponownie ustawiajc poprawny tryb jego pracy. Jacek Bogusz jacek.bogusz@easy-soft.tsnet.pl Wykaz elementów: C1, C2, C3, C4 22p/1206 C5 1000u/25V C6, C7 10u/25V C8, C9, C10, C11, C12, C13,C14 0,1u/1206 C15, C16, C17, C18 1u/50V D1, D2, D3, D4, D5 1N4007 D6, D7 LED zielony 2,5mm D8, D9 LED |óBty 2,5mm D10 LED czerwony 2,5mm G1, G2, G3 zBcza terminatory o rastrze 5,08mm JP1 podstawka DIL-40 JP2 podstawka DIL-20 PR1 10k R1 1,5k/1206 R2, R3 680R/1206 R4, R5, R6 10k/1206 SR1, SR2, SR3 sieci rezystorowe 8x47k ze wspólnym  + Q1* 8MHz Q2 11,0592 MHz U1 7805/TO-220 U2* 7812/TO-220 U3 MAX232/DIL16 lub odpowiednik U4 AT89C2051/DIL20 X4 .. X16 zBcza terminatory o rastrze 3,81mm X17, X18 DSUBB-9/F *elementy dobierane w zale|no[ci od potrzeb J.Bogusz  PBytka uruchomieniowa dla ... -Strona 9/9- -Strona 10/10- Rozmieszczenie elementów: góra pBytki Rozmieszczenie elementów: dóB pBytki -Strona 11/11-

Wyszukiwarka

Podobne podstrony:
PÅ‚ytka testowa dla BASCOM College
AVT2500 PÅ‚ytka Testowa Dla Bascom
AVR GCC kompilator C dla mikrokontrolerów AVR, część 12
AVR GCC kompilator C dla mikrokontrolerów AVR, część 11
AVR GCC kompilator C dla mikrokontrolerów AVR, część 4
AVR GCC kompilator C dla mikrokontrolerów AVR, część 3

więcej podobnych podstron