Prosty programator mikrokontrolerów AT89Cx051-AT89C5x.pdf
(
278 KB
)
Pobierz
Prosty programator mikrokontrolerów AT89Cx051/AT89C5x
P R O J E K T Y C Z Y T E L N I K Ó W
Dzia³ Projekty Czytelników zawiera opisy projektów nades³anych do redakcji EP przez Czytelników. Redakcja nie bierze
odpowiedzialnoci za prawid³owe dzia³anie opisywanych uk³adów, gdy¿ nie testujemy ich laboratoryjnie, chocia¿
sprawdzamy poprawnoæ konstrukcji.
Prosimy o nadsy³anie w³asnych projektów z modelami (do zwrotu). Do artyku³u nale¿y do³¹czyæ podpisane
owiadczenie,
¿e artyku³ jest w³asnym opracowaniem autora i nie by³ dotychczas nigdzie publikowany
. Honorarium za publikacjê
w tym dziale wynosi 250,- z³ (brutto) za 1 stronê w EP. Przysy³anych tekstów nie zwracamy. Redakcja zastrzega sobie
prawo do dokonywania skrótów.
Prosty programator mikrokontrolerów
AT89Cx051/AT89C5x
Projekt
107
Na rynku dostêpnych
jest wiele programatorów
uniwersalnych (drogich)
i specjalizowanych dla
danej grupy uk³adów
(tañszych). Taki w³anie
tani, lecz funkcjonalny
programator przedstawiamy
w artykule.
dla nich jest
cena narzêdzi sprzêto-
wych (uk³ady PCF8574A s¹
stosunkowo drogie). S³uszn¹
alternatyw¹ w takim wypadku
jest zbudowanie w³asnego pro-
gramatora, którego koszt wy-
konania bêdzie ograniczony do
minimum. Od takiego progra-
matora wymagana jest tylko
jedna cecha - ma kasowaæ i za-
pisywaæ pamiêæ Flash uk³adu.
Nie musi on ustawiaæ ¿adnych
dodatkowych opcji w progra-
mowanym uk³adzie, gdy¿ ma
s³u¿yæ on do celów laborato-
ryjnych, a nie komercyjnych
(choæ mo¿na go stosowaæ i tu-
taj). Okazuje siê, ¿e w Inter-
necie opisów takich progra-
matorów jest wiele. Jednak al-
bo ich oprogramowanie pozo-
stawia wiele do ¿yczenia albo
moj¹ drobne, acz istotne b³ê-
dy w schemacie.
Niew¹tpliw¹ zalet¹ mik-
rokontrolerów zgodnych pro-
gramowo z 8051, jest mno-
goæ dostêpnego kodu ród³o-
wego. Stwarza to mo¿liwoæ
³atwego wypróbowania
swoich si³ m.in. w asemble-
rze. Zapewne wielu elektro-
ników pragnê³oby tak¿e do³¹-
czyæ do grona u¿ytkowników
Bascoma 8051, jednak barier¹
Budowa i dzia³anie
Postanowi³em wiêc zapro-
jektowaæ w³asny programator,
który bêdzie domylnie pro-
gramowa³ uk³ady AT89Cx051,
a po zastosowaniu dodatko-
wej p³ytki, tak¿e AT89C5x.
Zak³adam, ¿e rozpoczynaj¹cy
przygodê z mikrokontrolerami
dysponuj¹ zazwyczaj kompu-
terem, wiêc sterowanie prac¹
Rys. 1
Elektronika Praktyczna 2/2003
93
P R O J E K T Y C Z Y T E L N I K Ó W
Rys. 2
programatora zosta³o przerzu-
cone na PC-ta. Program do
jego obs³ugi zosta³ napisany
w Turbo Pascalu i jest dostêp-
ny na p³ycie CD-EP2/2003.
Schemat elektryczny pro-
gramatora pokazano na
rys. 1
.
Programator jest wykrywany
automatycznie przez oprogra-
mowania za spraw¹ po³¹cze-
nia wyprowadzeñ 13 i 14 z³¹-
cza drukarkowego. Owo
z³¹cze ma tê zaletê, ¿e nie
potrzeba nam dodatkowego
kabla do portu równoleg³ego
- wystarczy od³¹czyæ go od
drukarki. Program sprawdza
równie¿, czy programowany
uk³ad jest w³o¿ony do progra-
matora (linia ACK), a w przy-
padku braku odpowiedniego
napiêcia programuj¹cego rów-
nie¿ informuje o b³êdzie.
Tranzystor T1, sterowany
sygna³em DSL ustala, czy uk³ad
bêdzie kasowany czy progra-
mowany. Tranzystor T2, stero-
wany sygna³em ALF w³¹cza
napiêcie programuj¹ce. Dioda
D1 zabezpiecza programowany
uk³ad przed uszkodzeniem
w przypadku, gdy pod³¹czymy
odwrotnie spolaryzowane na-
piêcie zasilania. Wówczas co
najwy¿ej wzronie temperatura
stabilizatora U2.
Rezystor R1 wraz z kon-
densatorem C1 stanowi uk³ad
ca³kuj¹cy dla sygna³u zega-
rowego. Jest on niezbêdny
gdy stosujemy d³ugi przewód
po³¹czeniowy. W praktyce
okaza³o siê jednak, ¿e R1
w wiêkszoci przypadków po-
winien byæ zwarty.
Zworka JP1 pozwala wy-
braæ ród³o sygna³u zegaro-
wego. Kiedy programujemy
powinnimy wybraæ pozycjê
1-2, za jeli chcemy na szy-
bko sprawdziæ poprawnoæ
naszego prostego programu
(np. generatora) po zaprogra-
mowaniu uk³adu, nale¿y wy-
braæ pozycjê 2-3. Kiedy chce-
my programowaæ uk³ad
AT89Cx51 za pomoc¹ omó-
wionego dalej adaptera dla
du¿ych '51 (drugiej p³ytki)
powinnimy ustawiæ dwie
zworki na pozycjach 1-2 oraz
3-4.
W adapterze dla uk³adów
AT89C5x (schemat elektrycz-
ny na
rys. 2
) wewnêtrzny licz-
nik adresu uk³adów
AT89x051 zosta³ zast¹piony
przez liczniki U9 i U10, co
pozwala adresowaæ pamiêæ
o 16-bitowym adresie (mo¿na
go w razie potrzeby wykorzys-
taæ do programowania innych
uk³adów, np. pamiêci EP-
ROM). Uk³ady te s¹ zerowane
poprzez tranzystor T3 w cza-
sie, gdy nie ma ¿adnego na-
piêcia programuj¹cego. Naj-
lepszym rozwi¹zaniem jest
umieszczenie w miejsce T3
tranzystora MOSFET (z kana-
³em typu N) i usuniêcie re-
zystora R7. Wtedy uk³ad ze-
ruj¹cy nie bêdzie obni¿a³ na-
piêcia programuj¹cego.
cu wlutowujemy goldpiny (do
jumperów - JP2 k¹towe - i za-
silania) oraz z³¹cze drukarko-
we, od którego nale¿y wcze-
niej odkrêciæ plastikow¹ czêæ
lub zwiêkszyæ w niej odleg³oæ
nó¿ek pomiêdzy rzêdami.
Uruchomienie rozpoczyna-
my od pod³¹czenia napiêcia
zasilania (12 V, stabilizowane)
i sprawdzenia poprawnoci
napiêæ w podstawce do pro-
gramowania uk³adu. Nastêpnie
mo¿emy zabraæ siê do pierw-
szego programowania.
Druga p³ytka - adaptera
dla AT89C5x - pomimo wszel-
kich prób minimalizacji, zo-
sta³a zaprojektowana jako
dwustronna. Wybra³em kom-
promis w liczbie przelotek dla
tych osób, które bêd¹ wyko-
nywa³y j¹ jako dwuwarstwo-
w¹ oraz dla osób, które wy-
konaj¹ j¹ jako jednostronn¹,
a resztê po³¹czeñ wykonaj¹
przewodami (np. kynarem
cie¿ki sygna³owe i jakim
grubszym cie¿ki zasilania).
Monta¿ tej p³ytki rozpoczyna-
my od podstawek uk³adów,
poza U3. Nastêpnie wlutowu-
jemy elementy dyskretne. Te-
raz zabieramy siê za U3 i wlu-
towujemy od spodu p³ytki
dwa rzêdy 10-nó¿kowych gol-
dpinów (dla druku jedno-
stronnego wpuszczamy je
w p³ytkê tylko w niewielkim
stopniu).
Po tej operacji osoby wy-
konuj¹ce p³ytkê jednostronn¹
powinny zabraæ siê za po³¹-
czenia przewodowe (z górnej
warstwy druku dwustronne-
go). Goldpiny nie bêd¹ nam
Monta¿ i uruchomienie
Podstawowa p³ytka pro-
gramatora zosta³a zaprojekto-
wana jako jednowarstwowa.
Jej wzór zamieszczamy wraz
z oprogramowaniem na CD-
EP3/2003.
Monta¿ programatora nale-
¿y rozpocz¹æ od omiu zwor.
Najlepiej od razu równie¿ ze-
wrzeæ tak¿e wyprowadzenia
rezystora R1. Nastêpnie wlu-
towujemy kolejno podstawki
pod uk³adu scalone, stabiliza-
tor, rezonator kwarcowy. Obu-
dowê tego ostatniego, w celu
ograniczenia liczby harmo-
nicznych, warto po³¹czyæ
z mas¹, co jest mo¿liwe, gdy
zamontujemy go na le¿¹co. Je-
li wykonalimy te czynnoci,
zabieramy siê do monta¿u ele-
mentów dyskretnych. Na koñ-
Zworka JP2 pozwala wy-
braæ napiêcie programuj¹ce
dla wiêkszych '51, a tak¿e
sterowaæ sygna³em zeruj¹cym
mikrokontrolera. W pozycji 1-
2 ustalamy napiêcie 12 V, za
2-3 5 V. Gdy zdejmiemy zwor-
kê (ustawimy j¹ prostopadle)
napiêcie wyniesie 0. Procedu-
rê programowania omówiê da-
lej. Dane 8-bitowe s¹ przesy-
³ane do uk³adu bezporednio
z portu (D0...D7) podobnie jak
sygna³ programuj¹cy (INI).
W celu programowania AT89C55 nale¿y dodaæ dwie cie¿-
ki dla linii A14 oraz A15. W tym celu nale¿y po³¹czyæ:
- 8 wyprowadzenie 74LS93 (U10) z 10 wyprowadzeniem
AT89C5x (U4),
- 11 wyprowadzenie 74LS93 (U10) z 11 wyprowadzeniem
AT89C5x (U4).
94
Elektronika Praktyczna 2/2003
Elektronika Praktyczna 2/98
P R O J E K T Y C Z Y T E L N I K Ó W
szym programatorze, musimy
je przekonwertowaæ do pliku
bin
. Mo¿emy to uczyniæ z ³at-
woci¹ stosuj¹c np. program
hex2bin
(zamieszczamy go na
CD-EP2/2003) i podaj¹c jako
parametr nazwê pliku
hex
.
Pliki tego formatu generu-
je tak¿e Bascom 8051, ale na-
le¿y je najpierw od niego
wykraæ. Na pocz¹tku wy-
bieramy z menu
Op-
tions>Compiler>Output
i za-
znaczamy pola
Binary File
i
HEX File
(w razie potrzeby
Old Intel HEX File
). Nastêp-
nie przechodzimy do
Op-
tions>Programmer>Other
.
W polu
Programmer
wybiera-
my
External Programmer
, od-
znaczamy opcje
Auto Flash
i
Auto Verify
, a w
Program
wskazujemy program edycyj-
ny
notepad
i zaznaczamy
Use
HEX File
. W okno
Parameter
wpisujemy {file}, a w
Mode
wybieramy
Go to application
directory and run
. Jeli po-
trzebujemy danych w forma-
cie
bin
to odznaczamy opcjê
Use HEX File
. Po skompilo-
waniu programu wybieramy
Run Programmer
i mo¿emy
z poziomu notatnika zapisaæ
plik
bin
, a nastêpnie przejæ
do DOS-u i zaprogramowaæ
nasz uk³ad.
DOS-em nie musimy siê
jednak w Bascomie przejmo-
waæ. Gdy nie chcemy stoso-
waæ powy¿szej, doæ d³ugiej
metody, wystarczy wybraæ ja-
ko programator urz¹dzenie
o nazwie
BlowIT Programmer
(dostêpny na pewno w wersji
Bascom 8051 2.0.2.0 i 2.0.6.0)
- prezentowany programator
jest z nim kompatybilny. Na-
stêpnie wybieramy odpowied-
ni port LPT (
LPT-address
)
w zak³adce
Parallel
(progra-
mator nie zostanie wykryty
automatycznie), ustawiamy
Port Delay
np. na 5 i odzna-
czamy pozosta³e pola. Od tej
pory mo¿emy programowaæ
z poziomu Bascom-a uk³ady
do 4 kB pamiêci Flash. Pozo-
staje jeszcze dodaæ, ¿e trzeba
prawid³owo wybraæ ustawie-
nie zworek: JP1 w pozycji 1-
2 (dla AT89C5x dodatkowo
w 3-4), JP2 dla AT89Cx051
w pozycji 1-2, a dla AT89C5x
w zale¿noci od wersji (5/
12 V).
Przypominam o mo¿liwo-
ci sprawdzenia dzia³ania
prostego programu w progra-
matorze (po od³¹czeniu kabla
LPT). Nale¿y tylko ustawiæ
odpowiednio zworki. Jako
przyk³adowy program testowy
proponujê (Bascom):
WYKAZ ELEMENTÓW
Rezystory
R1: 1k
W
lub zwora (patrz
opis)
R2...R4, R6: 10k
W
W
R7: 10k
W
lub zwora (patrz
opis)
R8: 5,1k
W
Kondensatory
C1: 1nF
C2, C3: 20...40pF
C4, C9: 100nF
C5, C6, C7: 10
Rys. 3
niestety pasowa³y do pod-
stawki precyzyjnej w p³ytce
bazowej. Musimy wykonaæ
prost¹ przejciówkê - czyli
u¿yæ dwóch jednorzêdowych
podstawek precyzyjnych. One
bêd¹ ju¿ nam pasowa³y.
Ewentualnie, zamiast tego ca-
³ego zamieszania wokó³ U3,
mo¿emy u¿yæ kabla (tamy)
z wtykiem emulacyjnym.
Uruchomienie drugiej p³yt-
ki polega na prawid³owym
wpiêciu U3 do podstawki U1,
a nastêpnie zmierzeniu w pod-
stawkach napiêæ zasilaj¹cych
(uwaga na licznik U10, który
ma napiêcie zasilania na
nó¿kach 5 i 10). Jeli s¹ po-
prawne, to mo¿emy umieciæ
w nich uk³ady scalone. Jeli
nie, nale¿y dok³adnie przea-
nalizowaæ po³¹czenia. Teraz
wystarczy uruchomiæ program
i w³o¿yæ w podstawkê uk³ad
do zaprogramowania.
matora wymagane zasilanie,
ale bez przewodu od drukarki.
2. Ustawiamy jumper JP1
na pozycji 2-3 (
xtal
), a JP2 2-
3 (5 V -
reset on
).
3. Wk³adamy uk³ad
AT89Cx051 do podstawki.
4. Zdejmujemy JP2 (
reset
off
) - od tej pory nasz pro-
gram jest wykonywany.
5. Program restartujemy
zak³adaj¹c ponownie JP2 na
pozycjê 2-3 (5 V).
6. Od³¹czamy zasilanie
i wyjmujemy zaprogramowa-
ny uk³ad.
Programowanie mikrokon-
trolerów AT89C5x przeprowa-
dza siê nastêpuj¹co:
1. Ustawiamy dwie zwor-
ki JP1 na pozycjach 1-2
(
clock
) i 3-4 (
xtal
), a JP2 na
pozycjê 2-3 (5V).
2. Wpinamy (poprawnie!)
adapter AT89C5x do p³ytki
bazowej.
3. Pod³¹czamy do progra-
matora wymagane zasilanie
oraz przewód od drukarki.
4. Uruchamiamy program
My_x051
z nazw¹ pliku binar-
nego, którego zawartoæ chce-
my umieciæ w programowa-
nym uk³adzie, jako parametr.
5. Wk³adamy programowa-
ny uk³ad do podstawki.
6. Jeli mamy wersjê wy-
sokonapiêciow¹ uk³adu
(12 V zamiast 5 V), przesta-
wiamy jumper JP2 na pozycjê
1-2 (12 V).
7. Wykonujemy punkty 6,
7 i 8 dla AT89Cx051.
Oprogramowanie steruj¹ce
programatora bêdzie wci¹¿
rozwijane tak, aby nie wyma-
ga³o szybkiego CPU (w tej
chwili czas mierzony jest bar-
dzo dok³adnie, zajmuj¹c przy
tym znaczny czas procesora).
Dostêpna jest tak¿e wersja
przystosowana do pracy pod
opiek¹ systemem Windows
(
rys. 3
). Nowe wersje pojawi¹
siê na stronie autora:
http://
nopsoft.republika.pl
.
m
F/10V
Pó³przewodniki
U2: 7805
U9: CMOS 4040
U10: 74LS93
D1: 1N4148
T1, T2: BC547B
T3: BC547B lub MOSFET-N
BS170, BS109 (patrz opis)
Ró¿ne
U1: podstawka precyzyjna
DIP20
U3: dwa goldpin-y oraz
dwie podstawki precyzyjne
jednorzêdowe
U4: podstawka precyzyjna
DIP40
U9: podstawka DIL16
U10: podstawka DIL14
Q1: rezonator kwarcowy
4...12MHz
JP1: goldpin z dwoma
jumperami
JP2: goldpin z jumperem
J1: 36-nó¿kowe z³¹cze
drukarkowe (¿eñskie)
J2: goldpin
Obs³uga programatora
Programowanie uk³adu nie
jest zbyt skomplikowane. Naj-
pierw przedstawiê procedurê
programowania mikrokontro-
lerów AT89Cx051:
1. Pod³¹czamy do progra-
matora wymagane zasilanie
oraz przewód od drukarki.
2. Ustawiamy jumper JP1
na pozycji 1-2 (
clock
), a JP2
2-3 (5 V).
3. Uruchamiamy program
My_x051
z nazw¹ pliku binar-
nego, którego zawartoæ chce-
my umieciæ w programowa-
nym uk³adzie, jako parametr.
4. Wk³adamy uk³ad do
podstawki.
5. Przestawiamy jumper
JP2 na pozycjê 1-2 (12 V).
6. Wciskamy ENTER.
7. Po zakoñczeniu progra-
mu przestawiamy jumper JP2
z powrotem na pozycjê 2-3
(5 V).
8. Od³¹czamy zasilanie
(niekoniecznie) i (starannie)
wyjmujemy zaprogramowany
uk³ad.
P³ytkê bazow¹ mo¿emy
wykorzystaæ tak¿e jako prost¹
p³ytkê uruchomieniow¹:
1. Pod³¹czamy do progra-
Do
cpl p1.7
Wait 1
cpl p1.6
Loop
a dla assemblera:
loop1:
CPL P1.7
MOV A,#5
;zale¿nie od czêstotli-
;woci rezonatora
;kwarcowego
loop2:
PUSH ACC
CLR A
loop3:
MOV B,#0
DJNZ B,$
DJNZ ACC,loop3
POP ACC
DJNZ ACC,loop2
CPL P1.6
SJMP loop1
Pozostaje ju¿ tylko urucho-
miæ i sprawdziæ woltomierzem
lub sond¹ logiczn¹ czy zmie-
niaj¹ siê stany wyprowadzeñ
18 i 19 uk³adu AT89Cx051.
Janusz U¿ycki
nopsoft@skrzynka.pl
Uwagi koñcowe
Wiêkszoæ kompilatorów
generuje jedynie pliki
hex
.
Aby móc je wykorzystaæ w na-
Elektronika Praktyczna 2/2003
95
R5: 2k
Plik z chomika:
TOMZI5
Inne pliki z tego folderu:
SPIS PSMIECI.pdf
(302 KB)
jtak.rar
(42 KB)
jtag_scheme.jpg
(47 KB)
pr-jotak.jpg
(54 KB)
1 jtag(2).png
(27 KB)
Inne foldery tego chomika:
Naprawa Zasilaczy Komputerowych
N-box ITI-5800s PRZERÓBKA
Pomoce serwis
prywatne pliki elektroniki
tv schematy serwisowe
Zgłoś jeśli
naruszono regulamin