avt 515 Programator mikrokontrolerów AVR i AT89S8252


Programator mikrokontrolerów AVR i AT89S8252
P R O J E K T Y
Programator
mikrokontrolerów
AVR i AT89S8252
AVT-515
Kilka dni wytÍÅ‚onej pracy
zajÍÅ‚o mi opracowanie
programatora ISP dla
mikrokontrolerÛw firmy
ATMEL z rodziny AT90,
ATmega i AT89S8252. Dla
Zapewne wiÍkszośĘ Czytelni- czony do wejÅ›cia XTAL1. Oczy-
mnie to przykład kolejnego
kÛw zajmujÄ…cych siÍ mikrokont- wiÅ›cie wystarczy, jeÅ›li ma podÅ‚Ä…-
urzÄ…dzenia, o ktÛrego wartoÅ›ci
rolerami zna wiele rÛÅ‚nych typÛw czony rezonator ceramiczny lub
stanowi nie tyle liczba
prostych programatorÛw. Opisy kwarcowy.
i nowoczesnośĘ zastosowanych
wielu z nich byÅ‚y rÛwnieÅ‚ pub- SygnaÅ‚ interfejsu szeregowego
podzespoÅ‚Ûw, a program likowane na Å‚amach EP. WiÍk- z komputera PC doprowadzany
szośĘ z nich jest sterowana syg- jest na bramkÍ tranzystora T1
wykonywany przez
naÅ‚ami portu rÛwnolegÅ‚ego. Ma to (BS170). PeÅ‚ni on rolÍ ukÅ‚adu
mikrokontroler.
swoje wady i zalety, nie chcÍ ich translacji poziomÛw napiÍĘ RS232
Rekomendacje: nie ma
tutaj omawiaĘ. OsobiÅ›cie mam (logiczna ì1î: -12...-5V, logiczne
wÅ›rÛd naszych CzytelnikÛw
jednak pewne obawy przed pod- ì0î: +5...+12V) na poziomy TTL.
takich, ktÛrzy nie wiedzÄ…, co
łączaniem czegoś do portu dru- Dalej sygnał podawany jest na
to jest mikrokontroler. Dlatego
karkowego. Raz, łe nie jest to wejście RxD interfejsu UART mik-
właśnie projekt prezentowany
zbyt wygodne, jeśli juł jest tam rokontrolera. Drugie wyprowadze-
w artykule mołe
podłączona drukarka. Dwa, łe nie UART - TxD - jest podłączone
zainteresowaĘ praktycznie
czasami drobna awaria programa- do bramki tranzystora BS250 pra-
kałdego, kto korzysta lub
tora prowadzi do uszkodzenia cujÄ…cego jako driver dokonujÄ…cy
zamierza korzystaĘ portu, a to juÅ‚ jest duÅ‚y kÅ‚opot. translacji poziomu napiÍĘ TTL na
ZdecydowaÅ‚em siÍ na skonstruo- wymagane przez RS232. Uwaga:
z niezwykle popularnych
wanie programatora podÅ‚Ä…czanego proszÍ nie zmieniaĘ wartoÅ›ci re-
AVR-Ûw.
do portu szeregowego komputera
PC. Istnieje co prawda nota ap-
likacyjna firmy ATMEL (AVR910)
Programator opisany w artykule
opisujÄ…ca taki programator, jednak
można wykorzystać do programowa-
wydaÅ‚ mi siÍ on zbyt skompliko- nia nastÄ™pujÄ…cych mikrokontrolerów:
wany. Dodatkową trudnością było
· AT89S8252
zdobycie i zaprogramowanie mik- · AT90S1200 i AT90S1200 rev.C
· AT90S2313
rokontrolera AT90S1200.
· AT90S2323
· AT90S2333
Opis działania
· AT90S2343
Schemat elektryczny programa-
· AT90S4414
· AT90S4433
tora pokazano na rys. 1. Nie
· AT90S4434
posiada on własnego stabilizatora
· AT90S8515
napiÍcia zasilania, poniewaÅ‚ za-
· AT90S8535
silanie jest pobierane z programo-
· ATMega 103
wanego ukÅ‚adu. ZaÅ‚oÅ‚yÅ‚em rÛw- · ATMega 161
· ATMega 163
nieł, łe zapisywany lub odczyty-
· ATMega 603
wany mikrokontroler posiada
· ATMega 83
własny generator zegarowy podłą-
Elektronika Praktyczna 9/2003
21
Programator mikrokontrolerów AVR i AT89S8252
Rys. 1. Schemat elektryczny programatora
zystancji doÅ‚Ä…czonych do tranzys- diody zielonej (D2) oznacza po- bÍdzie chciaÅ‚ wykonaĘ modyfika-
torÛw! WartoÅ›ci rezystorÛw R3, prawne nawiÄ…zanie komunikacji cje, moÅ‚e siÍ posÅ‚uÅ‚yĘ darmowÄ…
R4 i R5 powinny byĘ sobie rÛwne z komputerem PC oraz pozytywny wersjÄ… demonstracyjnÄ… tego pakie-
i zawieraĘ siÍ w granicach 1,8...2,4 rezultat przeprowadzanej operacji. tu dostÍpnÄ… na stronie producenta
k&!. Tranzystor T2 zasilany jest åwiecenie diody Å‚ÛÅ‚tej (D1) ozna- (http://www.raisonance.com),
napiÍciem dodatnim pochodzÄ…cym cza, Å‚e programator przesyÅ‚a dane umoÅ‚liwiajÄ…cÄ… kompilacjÍ i uru-
z pÅ‚ytki programatora oraz napiÍ- - jest zajÍty. Dioda czerwona (D3) chamianie programÛw do 4 kB
ciem ujemnym pochodzÄ…cym z Å›wieci siÍ w sytuacji, gdy wystÄ…pi kodu.
linii sygnaÅ‚owej interfejsu RS232. bÅ‚Ä…d - operacja zostaÅ‚a zakoÒczo- Program realizuje funkcjÍ ter-
Zakres napiÍĘ wyjÅ›ciowych waha na niepowodzeniem. minala doÅ‚Ä…czanego do komputera
siÍ od -5...+5V. Niestety, interfejs Zwarcie przycisku SW1 powo- PC z wbudowanym interpreterem
RS232 starszych komputerÛw PC duje wystawienie sygnaÅ‚u zerujÄ…- poleceÒ, wykonujÄ…cego polecenia
(386, 486 i byĘ moÅ‚e niektÛre cego dla programowanego mikro- przesyÅ‚ane przez program AVR
Pentium I) mołe nie akceptowaĘ kontrolera. Aktywny poziom syg- Prog. Z małym wyjątkiem, do ko-
takich poziomÛw napiÍĘ. Nie ma- naÅ‚u zerujÄ…cego (0 lub 1) jest munikacji uÅ‚ywane sÄ… funkcje
ją z nim ładnego problemu now- wybierany zworką JP1. wejścia/wyjścia z biblioteki pro-
sze modele PC, majÄ…ce interfejs ducenta. Ten ìmaÅ‚y wyjÄ…tekî to
szeregowy zgodny ze specyfikacją Opis programu dla funkcja przesyłająca znaki do
EIA232. mikrokontrolera komputera PC, ktÛra wymagaÅ‚a
Zastosowany w programatorze AT89C2051 odrÍbnej implementacji. Standar-
mikrokontroler AT89C2051 speł- Program dla mikrokontrolera dowo bowiem putchar() po napo-
nia rolÍ terminala realizujÄ…cego U1 zostaÅ‚ napisany w jÍzyku C tkaniu kodu 0x0A przesyÅ‚a dodat-
polecenia aplikacji sterujÄ…cej. Za- z niewielkimi wstawkami w jÍzy- kowo 0x0D, tworzÄ…c typowÄ… sek-
implementowaÅ‚em w nim funkcje ku asembler. Po skompilowaniu wencjÍ koÒca linii znakÛw (po-
programowego interfejsu SPI. Pro- zajmuje on okoÅ‚o 1,6 kB przy wrÛt karetki i nowa linia). Nie
gramowanie docelowego układu włączonej opcji optymalizacji ko- jest to połądane przy przesyłaniu
odbywa siÍ z jego wykorzysta- du wynikowego pod kÄ…tem szyb- danych w postaci binarnej zawar-
niem. Diody LED (D1, D2 i D3) koÅ›ci jego dziaÅ‚ania. Do napisania tych w pamiÍci mikrokontrolera.
słułą do sygnalizacji stanu pro- programu posłułył mi kompilator Najprostszym rozwiązaniem była
gramatora. Ich kolory dobrane są firmy Raisonance. Program kom- własna implementacja funkcji put-
ìintuicyjnieî, zgodnie z ludzkimi pilowany byÅ‚ przy wÅ‚Ä…czonym char(). Jak widaĘ na list. 1, nie
przyzwyczajeniami. åwiecenie modelu pamiÍci TINY. KaÅ‚dy, kto naleÅ‚y ona do zbyt skomplikowa-
Elektronika Praktyczna 9/2003
22
Programator mikrokontrolerów AVR i AT89S8252
napisana w asemblerze (delayms).
List. 1. Implementacja funkcji
Deklaracji bitÛw wyprowadzeÒ
putchar()
programowego interfejsu SPI (MI-
//własna funkcja putchar (dla każdego 0x0A
//oryginalny putchar dodaje 0x0D)
SO, MOSI i SCK) dokonałem
int putchar (const int c) //nagłówek zgodny
//z bibliotekÄ… producenta
w module napisanym w jÍzyku
{
SBUF = c; //zapis bufora UART
asembler tak, aby były one do-
TI = 0; //zerowanie flagi TI,
stÍpne zarÛwno z poziomu aplika- //poczÄ…tek transmisji
while (!TI); //oczekiwanie na przesłanie
cji w jÍzyku C, jak i z poziomu
//bajtu
}
aplikacji w asemblerze.
Reszta programu to bardzo roz-
budowany warunek switch rozpat- jest jako archiwum w formacie
rujÄ…cy odebrane znaki i podejmu- ZIP, ktÛre zawiera plik wykony-
jÄ…cy akcjÍ w zaleÅ‚noÅ›ci od pole- walny EXE. NaleÅ‚y go po prostu
ceÒ przesÅ‚anych przez AVRProg. skopiowaĘ na dysk twardy i utwo-
ProtokoÅ‚y komunikacyjne AT89 rzyĘ skrÛt uÅ‚atwiajÄ…cy uruchomie-
i AT90 rÛÅ‚niÄ… siÍ znacznie pomiÍ- nie.
Rys. 2. WyglÄ…d okna programu
dzy sobą. Z tego teł powodu, Uwaga: program nie uruchomi
AVR Prog
w wielu miejscach programu ko- siÍ bez podÅ‚Ä…czonego urzÄ…dzenia,
nieczny jest rozdziaÅ‚ funkcji na ktÛre wyÅ›le identyfikator zawiera-
nych. Nie wykorzystuje mechaniz- realizowane przez AVR i realizo- jÄ…cy 3 pierwsze znaki ìAVRî pod-
mu przerwaÒ, zeruje flagÍ TI oraz wane przez AT89, mimo iÅ‚ prze- czas prÛby nawiÄ…zania komunika-
zapisuje dane do bufora UART syłane polecenia mają identyczną cji.
i oczekuje na ustawienie TI bÍdÄ…- postaĘ. Podstawowa rÛÅ‚nica Po uruchomieniu program tes-
ce sygnaÅ‚em zakoÒczenia transmi- w protokole polega na tym, Å‚e tuje porty szeregowe, sprawdzajÄ…c
sji bajtu. AT89 wymaga 3 bajtÛw dla kaÅ‚- moÅ‚liwośĘ komunikacji i w ten
Funkcja korzysta z nastaw pre- dego z poleceÒ, natomiast AT90 sposÛb sam wykrywa obecnośĘ
definiowanych przez producenta i ATMega wymagajÄ… 4. (bÄ…dü teÅ‚ nieobecnośĘ) podÅ‚Ä…czo-
pakietu. SzybkośĘ transmisji SzczegÛlnÄ… uwagÍ naleÅ‚y zwrÛ- nego programatora. Aplikacja jest
okreÅ›lana jest przez polecenie ciĘ na poprawnÄ… implementacjÍ bardzo prosta w uÅ‚yciu. ObsÅ‚ugu-
#pragma DEFJ(TIM1_INIT=0xFD) funkcji spiinit(). Funkcja ta wpro- je siÍ jÄ… identycznie jak wiÍkszośĘ
zawierajÄ…ce wartośĘ inicjujÄ…cÄ… Ti- wadza kod rozkazu Programming programÛw napisanych dla Å›rodo-
mer 1 sterujący pracą UART. Enable, umołliwiając zapis pa- wiska Windows. Korzystając z po-
Funkcja getchar() nie na- la Device umieszczonego
daje siÍ do zastosowania na dole okienka, naleÅ‚y
Programator uniwersalny
w naszej aplikacji, ponie- wybraĘ typ programowa-
Programator można bez najmniejszych
wał zwraca ona echo ode- nego mikrokontrolera. Od
problemów zintegrować z Bascom AVR oraz
branego znaku, co zgodne tego wyboru zaleÅ‚eĘ bÍ-
AVR Studio. Alternatywnie do obsługi
jest ze specyfikacjÄ… standar- dzie algorytm zapisu i od-
programatora można wykorzystać program
du ANSI C i przydatne czytu pamiÍci mikrokont-
AVR Prog.
w przypadku terminala zna- rolera. W gÛrnej czÍÅ›ci
kowego, jednak zupełnie okienka jest umieszczony
niepotrzebne w przypadku progra- miÍci Flash i EEPROM. UkÅ‚ady przycisk Browse (Hex file). Ko-
matora. Na szczÍÅ›cie producent z serii AVR wymagajÄ…, aby doko- rzystajÄ…c z niego, naleÅ‚y wskazaĘ
zdefiniowaÅ‚ rÛwnieÅ‚ innÄ… funkcjÍ, nana zostaÅ‚a synchronizacja inter- zbiÛr w formacie HEX zawierajÄ…cy
znacznie bardziej przydatnÄ… dla fejsÛw Master (programator) i Sla- dane do zapisu do pamiÍci Flash
naszych celÛw. Jest to funkcja ve (mikrokontroler). Dodatkowo lub EEPROM. W ten sam sposÛb
o nazwie getkey() zwracajÄ…ca war- funkcja ta wywoÅ‚ywana jest na wskazuje siÍ rÛwnieÅ‚ nazwÍ zbio-
tośĘ bajtu odczytanego z UART. koniec cyklu zapisu, przed prze- ru, w ktÛrym zostanÄ… zapamiÍtane
Funkcje zapisu (wrser) i odczy- Å‚Ä…czeniem do cyklu odczytu. odczytane dane. Teraz, po wyko-
tu (rdser) interfejsu SPI napisane Uwaga: bez poprawnej pracy naniu wyłej opisywanych czyn-
zostaÅ‚y w jÍzyku asembler. SÄ… to funkcji spiiinit() nie jest moÅ‚liwy noÅ›ci, moÅ‚na przeprowadziĘ pro-
niewielkie procedury, zaledwie po zapis i odczyt danych z wykorzys- gramowanie pamiÍci, odczytaĘ jÄ…
kilka bajtÛw kaÅ‚da. Ich implemen- taniem interfejsu SPI. lub porÛwnaĘ jej zawartośĘ z da-
tacja w C, aczkolwiek moÅ‚liwa, nymi zapamiÍtanymi na dysku.
zajmowaÅ‚aby wiÍcej miejsca w pa- Aplikacja sterujÄ…ca - Operacje te moÅ‚na przeprowadzaĘ
miÍci programu oraz byÅ‚aby nieco AVR Prog niezaleÅ‚nie dla obu rodzajÛw pa-
bardziej skomplikowana. DziÍki Do sterowania pracÄ… programa- miÍci.
asemblerowi Å‚atwo jest zapanowaĘ tora wykorzystaÅ‚em bezpÅ‚atny pro- Uwaga: przed zapisem pamiÍci
nad funkcjÄ… i stanem flagi prze- gram AVR Prog (rys. 2), dostÍpny Flash wykonywana jest instrukcja
niesienia C mikrokontrolera, a tak- na stronie internetowej firmy At- kasujÄ…ca zarÛwno zawartośĘ pa-
Å‚e nad czasem wykonywania in- mel. Jest to aplikacja wykonana miÍci Flash, jak i EEPROM.
strukcji. Z tego samego powodu dla środowiska Windows. Nie W przypadku zapisu danych do
rÛwnieÅ‚ funkcja (pÍtla) absorbu- wymaga przeprowadzania Å‚adnej EEPROM - zawartośĘ Flash nie
jąca CPU na czas około 1 ms jest instalacji. Program rozprowadzany jest usuwana.
Elektronika Praktyczna 9/2003
23
Programator mikrokontrolerów AVR i AT89S8252
WYKAZ ELEMENTÓW
Rezystory
R1: 680&!
R2, R3, R4, R5: 2,2k&!
Kondensatory
C1: 0,1µF
C2, C3: 22pF
Półprzewodniki
U1: AT89C2051 (zaprogramowany)
T1: BS170
T2: BS250
D1: LED żółta
D2: LED zielona
D3: LED czerwona
Różne
X1: DB9
JP1: jumper 3x1
SW1: SW-PB
Rys. 3. Schemat montażowy płytki G2: złącze 5x2
programatora
Q1: 11,0592MHz
Uruchomienie układu gramatora z aplikacją sterującą. Po
Schemat montaÅ‚owy programa- krÛtkiej chwili od nawiÄ…zania po-
tora pokazano na rys. 3. Popra- Å‚Ä…czenia, na ekranie PC powinno
wnie zmontowany ukÅ‚ad nie po- siÍ ukazaĘ okno robocze programu
winien nastrÍczaĘ Å‚adnych trud- AVR Prog. Teraz wybierzmy przy-
ności przy uruchomieniu. Aby cisk Advanced. Na ekranie powin-
przetestowaĘ jego dziaÅ‚anie, nale- na ukazaĘ siÍ informacja jak na
Å‚y podÅ‚Ä…czyĘ go do programowa- rys. 4. Po zamkniÍciu okienka
nego układu i typowym kablem Advanced, najlepszym testem jest
do transmisji szeregowej do kom- prÛba zapisu pamiÍci Flash i EEP-
putera PC. PamiÍtajmy o tym, Å‚e ROM. PamiÍtajmy o wyborze wÅ‚aÅ›-
programator pobiera zasilanie ciwego typu mikrokontrolera z lis-
z programowanej pÅ‚ytki! Diody ty programowanych ukÅ‚adÛw.
LED sygnalizujące stan programa- Typ programowanego układu
tora powinny zaÅ›wieciĘ siÍ, a na- przechowywany jest w pamiÍci
stÍpnie kolejno zgasnąĘ. RAM programatora. Czasami przy
Teraz naleły przystąpiĘ do wyłączeniach płytki uruchomie-
prÛby komunikacji z aplikacjÄ… niowej, mimo iÅ‚ kaÅ‚dorazowo sek-
AVR Prog. Tuł po jej uruchomie- wencja programowania zaczyna
niu prÛbuje ona zidentyfikowaĘ siÍ od przesÅ‚ania kodu wyboru
typ podÅ‚Ä…czonego programatora programowanego ukÅ‚adu, moÅ‚e siÍ
oraz listÍ programowanych ukÅ‚a- zdarzyĘ, Å‚e przy pierwszej prÛbie
dÛw. WysÅ‚anie komendy ìtî po- zapisu lub odczytu danych otrzy-
woduje zaÅ›wiecenie siÍ diody zie- mamy komunikat Cannot enter
lonej (ìOKî), co jest sygnaÅ‚em programming mode. NaleÅ‚y wÛw-
poprawnej wymiany danych pro- czas ponowiĘ prÛbÍ operacji, a jeÅ›-
li nie da to rezultatu, zamknąĘ
aplikacjÍ AVR Prog i uruchomiĘ
jÄ… ponownie. Operacja taka przy-
wraca wszystkie nastawy progra-
matora, ponownie ustawiajÄ…c po-
prawny tryb jego pracy.
Jacek Bogusz, AVT
jacek.bogusz@ep.com.pl
Wzory płytek drukowanych w for-
macie PDF sÄ… dostÍpne w Internecie
Rys. 4. Identyfikacja rodzaju
pod adresem: http://www.ep.com.pl/
programatora po wybraniu opcji
?pdf/wrzesien03.htm.
Advanced
Elektronika Praktyczna 9/2003
24


Wyszukiwarka

Podobne podstrony:
avt 515 Programator mikrokontro Nieznany
avt 871 Programator procesorów AVR przez BASCOM
Podstawy programowania mikrokontrolerów AVR8 w środowisku AVR Studio 4
Mikrokontrolery AVR Techniczne aspekty programowania Andrzej Pawluczuk
avt 524 Programator USB mikrokontrolerów ATmega ISP
avt 1307 Programatorek AVR
AVR i ARM7 Programowanie mikrokontrolerow dla kazdego avrar7
programowanie mikrokontrolerów
prezentacja mikrokontr AVR
programator procesorów AVR 1

więcej podobnych podstron