Programator USB mikrokontrolerów.pdf

(379 KB) Pobierz
Programator USB mikrokontrolerów ATmega - ISP, część 1. AVT-524
Programator USB mikrokontrolerów ATmega − ISP
P R O J E K T Y
Programator USB
mikrokontrolerów
ATmega − ISP, część 1
AVT−524
Programatory ISP dla
mikrokontrolerÛw AVR to
temat od dawna znany
i†obfituj¹cy w†rozmaite
rozwi¹zania - zarÛwno
komercyjne jak i†amatorskie
(jedno z†moøliwych rozwi¹zaÒ
przedstawiamy
w†Miniprojektach). Pojawia
siÍ wiÍc pytanie, czy warto
od podstaw opracowywaÊ coú
nowego? Na pewno nie ma
sensu powielanie typowego
projektu opartego np. na
porcie rÛwnoleg³ym LPT. Co
w†zamian? Oczywiúcie USB!
Rekomendacje : programator
dla wymagaj¹cych
konstruktorÛw, przede
wszystkim tych, ktÛrzy
korzystaj¹ z†mikrokontrolerÛw
ATmega.
Podczas konstruowania progra-
matora prezentowanego w†artyku-
le nie koncentrowa³em siÍ na
zapewnieniu jego maksymalnej
prostoty i†obniøeniu ceny, waø-
niejsze by³y jego cechy uøytkowe.
Dlatego teø:
- komunikacja z†komputerem ste-
ruj¹cym jest zrealizowana za
pomoc¹ ³¹cza USB, co czÍsto
jest jedynym dostÍpnym sposo-
bem dla posiadaczy laptopÛw,
- w³asne oprogramowanie steruj¹-
ce pozwala na dowolne mody-
fikacje, poprawki i†rozszerzenia
a†takøe na stosunkowo ³atw¹
integracjÍ z†rozmaitymi úrodo-
wiskami,
- p³ytka programatora posiada op-
rÛcz buforowanego interfejsu ISP
wyprowadzone takøe inne inter-
fejsy (I2C, SPI) oraz linie prze-
twornika A/C, PWM itd. co
pozwala na jej wykorzystanie na
rozmaite sposoby,
- mikrokontroler programatora
moøna wyposaøyÊ w†bootloader,
co pozwoli na szybkie i†spraw-
ne wymiany wersji oprogramo-
wania za poúrednictwem tego
samego ³¹cza USB.
Konstrukcja programatora
Schemat elektryczny urz¹dze-
nia przedstawiono na rys. 1 .
Moøna na nim wyrÛøniÊ trzy
podstawowe bloki funkcyjne:
interfejs USB, mikrokontroler
steruj¹cy oraz buforowany in-
terfejs ISP.
Po³¹czenie z†magistral¹ USB
jest zrealizowane z†pomoc¹ uk³a-
du U1 - FT8U232BM - w†typo-
wej aplikacji proponowanej
przez FTDI. PamiÍÊ U2 pozwala
na wprowadzenie w³asnych
identyfikatorÛw programatora.
Tranzystor Q3 zapewnia - zgod-
nie z†wymaganym standardem
USB - wy³¹czanie zasilania pro-
Programator prezentowany w artykule współpracuje ze
środowiskiem projektowym dla AVR−GCC − AVRSide (dostępne
bezpłatnie na stronie http://www.avrside.fr.pl oraz na
CD−EP8/2003B). Możliwości jego wczesnej wersji opisaliśmy
w EP1/2003).
Elektronika Praktyczna 8/2003
25
8754390.029.png 8754390.030.png
Programator USB mikrokontrolerów ATmega − ISP
Rys. 1. Schemat elektryczny programatora
26
Elektronika Praktyczna 8/2003
8754390.031.png 8754390.032.png 8754390.001.png 8754390.002.png 8754390.003.png 8754390.004.png 8754390.005.png 8754390.006.png 8754390.007.png 8754390.008.png 8754390.009.png 8754390.010.png 8754390.011.png 8754390.012.png 8754390.013.png 8754390.014.png 8754390.015.png 8754390.016.png 8754390.017.png
Programator USB mikrokontrolerów ATmega − ISP
gramatora podczas enumeracji
oraz w†stanie uúpienia kompu-
tera - hosta.
Mikrokontroler U3 steruje in-
terfejsem ISP zgodnie z†komenda-
mi i†danymi otrzymywanymi
z†dzia³aj¹cego na komputerze -
hoúcie oprogramowania. Zwraca
teø informacje o†prawid³owym za-
koÒczeniu kolejnych operacji lub
o†zaistnia³ych b³Ídach. DziÍki za-
stosowaniu mikrokontrolera AT-
mega 8†nie ma koniecznoúci do-
dawania praktycznie øadnych do-
datkowych peryferiÛw. Mikrokon-
troler pracuje z†wewnÍtrznym os-
cylatorem 8†MHz i†ma wbudowa-
ny uk³ad zeruj¹cy oraz watchdog.
Jednoczeúnie dysponuje ca³¹ gam¹
dodatkowych sprzÍtowych inter-
fejsÛw: I2C, SPI, wielokana³owym
przetwornikiem analogowo-
cyfrowym, wyjúciami PWM. Od-
powiednie styki wyprowadzono
na p³ytce, co pozwoli na ewen-
tualne wykorzystanie programato-
ra do rÛønych innych celÛw (kon-
wertery USB<->I2C, USB<->SPI,
programatory pamiÍci szerego-
wych, przetwornik A/C do kom-
putera itd.). ObwÛd filtruj¹cy L2,
C7 zasila obwody A/C, natomiast
kondensator C10 dodatkowo filt-
ruje wewnÍtrzne napiÍcie odnie-
sienia 2,56 V, ktÛre zosta³o prze-
widziane do wykorzystania
w†uk³adzie.
Wyprowadzenia interfejsu SPI
tworz¹ zarazem wejúcie magistrali
ISP pozwalaj¹cej na szeregowe
wpisanie do mikrokontrolera pro-
gramu wykonawczego oraz usta-
wieÒ konfiguracyjnych.
Interfejs ISP ³¹czy linie I/O
mikrokontrolera steruj¹cego z†wej-
úciami ISP docelowego uk³adu.
Musi on spe³niÊ nastÍpuj¹ce wy-
magania:
- ca³kowicie uniezaleøniÊ zespÛ³
urz¹dzeÒ od kolejnoúci w³¹cza-
nia zasilania,
- umoøliwiÊ do³¹czanie uk³adu
docelowego zasilanego innym
napiÍciem,
- uaktywniaÊ linie steruj¹ce ISP
tylko i†wy³¹cznie w†trakcie pro-
gramowania - normalnie powin-
ny pozostawaÊ w†stanie wyso-
kiej impedancji nie wp³ywaj¹c
w†øaden sposÛb na dzia³anie
docelowego uk³adu bez koniecz-
noúci od³¹czania.
Zadania te zosta³y zrealizowa-
ne przy pomocy inwertera z†wyj-
úciem OC (U4) oraz trÛjstanowego
bufora HC244 (U5). Bufor U5 oraz
pull-up y jego linii wejúciowych
s¹ zasilane napiÍciem docelowego
systemu - zawsze wiÍc uzyskamy
potrzebn¹ zgodnoúÊ poziomÛw lo-
gicznych. Inwerter U4 jest zasi-
lany dwustronnie poprzez diody
Schottky ego D1 i†D2. Kostka
pozostaje wiÍc ìpod napiÍciemî
niezaleønie od chwilowego pod-
³¹czenia zasilania - eliminuje to
moøliwoúÊ wysterowania wejúÊ
przy braku zasilania U4 (co uk³a-
dy cyfrowe niezbyt lubi¹). Wyj-
úcia typu otwarty kolektor pozwa-
laj¹ na odpowiednie dopasowanie
poziomÛw logicznych (dla pozio-
mu niskiego 0†V, a†dla poziomu
wysokiego Vcc - niezaleønie od
jego wartoúci - oczywiúcie w†ra-
mach moøliwoúci uk³adu, czyli do
6†V). Nie ma to wiÍkszego zna-
czenia przy zasilaniu obu uk³a-
dÛw jednakowym napiÍciem (czy-
li +5 V†- tyle programator otrzy-
muje z†magistrali USB). Natomiast
przy np. 3,3 V†systemu docelowe-
go mamy nastÍpuj¹c¹ sytuacjÍ:
- zasilanie U5 = 3,3 V,
- wysokie poziomy logiczne na
wejúciach i†wyjúciach U5 = ok.
3,3 V,
- zasilanie U4 = ok. 4,7...4,8 V
(ok. +5 V†z†USB pomniejszone
o†spadek na diodzie Schottky
ego),
- wysokie poziomy logiczne na
wejúciach U4 od strony progra-
matora - ok. 5†V†(co jest dopusz-
czalne - nie przekraczamy na-
piÍcia zadzia³ania wejúciowych
wewnÍtrznych diod ochronnych
kostki),
- wysoki poziom logiczny na wej-
úciu U4 od strony bufora (wy-
prowadzenia 12, 13) = ok. 3,3
V. Jest to jedyna linia wyma-
gaj¹ca dok³adniejszego spraw-
dzenia: z†danych serii HC wy-
nika, øe przy takiej wartoúci
napiÍcia zasilaj¹cego minimalne
napiÍcie rozpoznawane jako po-
ziom wysoki wynosi nieco mniej
niø 3,3 V, mieúcimy siÍ wiÍc
w†wymaganym zakresie.
Wynika z†tego, øe uk³ady z†za-
silaniem poniøej 3,3 V†mog¹ spra-
wiaÊ problemy. Jak nisko moøna
zejúÊ - pozostaje do praktycznego
sprawdzenia (zazwyczaj rzeczy-
wiste w³aúciwoúci uk³adÛw s¹
lepsze niø gwarantowane wartoúci
podawane w†katalogach).
ZwrÛcmy teø uwagÍ na sposÛb
w³¹czania linii RST interfejsu.
Sekwencja przebiega nastÍpuj¹co:
- ustawiamy programowo niski
poziom SCK - bufor jest jeszcze
w†stanie wysokiej impedancji
i†na wyjúciu nic siÍ nie dzieje,
- ustawiamy programowo niski
poziom RST - bufor 244 zostaje
w³¹czony podaj¹c na wyjúcie
SCK poziom niski, ale linia RST
zostaje przestawiona z†poziomu
wysokiego na niski dopiero po
krÛtkiej chwili wynikaj¹cej ze
sta³ej czasowej obwodu R17,
C12. W†ten sposÛb gwarantuje-
my stabilny stan niski SCK
w†chwili zakoÒczenia zerowa-
nia, zgodnie z†zaleceniami At-
mela dotycz¹cymi wchodzenia
w†tryb programowania szerego-
wego.
Montaø uk³adu
Ca³oúÊ uk³adu zosta³a zmonto-
wana na dwuwarstwowej p³ytce
drukowanej, ktÛrej schemat mon-
taøowy pokazano na rys. 2 . Uøyto
g³Ûwnie elementÛw SMD, co po-
zwoli³o na zachowanie niewiel-
kich wymiarÛw. Wyprowadzenia
interfejsÛw moøemy wyposaøyÊ
w†listwy goldpin albo pozostawiÊ
do pod³¹czeÒ przewodami - w†za-
leønoúci od potrzeb. Do poluto-
wania najlepiej uøyÊ grota mini
wave , ale poniewaø rastry kostek
nie naleø¹ do najmniejszych -
tradycyjne techniki teø bÍd¹ zu-
pe³nie wystarczaj¹ce.
Po zlutowaniu sprawdümy do-
k³adnie, czy nie ma zwarÊ ani
przerw. Wskazane jest teø prze-
mycie p³ytki jednym z†dostÍpnych
preparatÛw chemicznych (np.
PCC). Pod³¹czenie do ISP proto-
typowego docelowego uk³adu wy-
konamy wed³ug w³asnych potrzeb
niezbyt d³ugim (najwyøej kilkana-
úcie centymetrÛw) przewodem taú-
mowym.
Uruchamianie
programatora
Sam sprzÍtowy uk³ad bez skon-
figurowania i†zaprogramowania
nie przyda siÍ nam do niczego.
ìOøywianieî p³ytki przebiega
w†kilku etapach. Wszystkie przed-
stawione opisy i†programy doty-
cz¹ systemu Windows. AdaptacjÍ
uk³adu do innych systemÛw ope-
racyjnych pozostawiam inwencji
CzytelnikÛw.
Elektronika Praktyczna 8/2003
27
 
Programator USB mikrokontrolerów ATmega − ISP
Niezbędne programy (łącznie ze środowiskiem AVRSide) oraz
pliki pomocnicze publikujemy na płycie CD−EP8/2003B.
WYKAZ ELEMENTÓW
Rezystory
R1, R4, R7, R10...R12: 3,3k
1206
Etap 1†- konfiguracja
uk³adu interfejsu USB
Najpierw musimy wyposaøyÊ
siÍ w†narzÍdzia ze strony produ-
centa ( www.ftdichip.com ) - bÍ-
dzie nam potrzebny sterownik
tzw. bezpoúredni ( direct driver )
D2xx (najnowsza wersja z†obs³u-
g¹ uk³adÛw w†wersji BM) oraz
program Ftd2xxst.exe do obs³ugi
szeregowej pamiÍci EEPROM
93C46. Rozpakowane pliki
umieszczamy na dysku i†zapa-
miÍtujemy lokalizacjÍ.
wtedy dla firmowych VID oraz
PID zainstalowany inny zestaw
sterownikÛw (VCP), co wyklucza
jednoczesne uøycie D2xx. Jedy-
nym wyjúciem bÍdzie wtedy skon-
figurowanie kostki FT8U232 na
innym komputerze i†zmiana np.
PID. Taki sam zmieniony PID
musimy rÍcznie wpisaÊ do pliku
*.inf sterownika D2xx, aby system
umia³ przypisaÊ p³ytce z†nowym
PID w³aúnie ten sterownik. Ope-
racje ze zmian¹ PID (VID) musz¹
byÊ przeprowadzone z†naleøyt¹
starannoúci¹ - jeúli siÍ pomylimy
system w†ogÛle nie bÍdzie w†sta-
nie obs³uøyÊ p³ytki (zg³aszaj¹c
tylko obecnoúÊ nieznanego urz¹-
dzenia).
R2, R3: 27
0805
R5: 1,5k
0805
R6: 470
1206
R8: 2,2k
1206
0805
R13...16: 100k
1206
F/16V 6032 tantal
C2: 33nF 0805
C3...C5, C13: 100nF 1206
C6, C12: 10nF 0805
C7...C9: 100nF 1206
C10: 1
µ
F/16V 3216 tantal
Półprzewodniki
U1: FT8U232BM TQFP32
U2: 93C46 SO8
U3: Atmega 8 TQFP32
U4: 74HC03 SO14
U5: 74HC244 SO20
Q3: tranzystor P−MOS MMBF 2202
PT1 SOT23
D1, D2: dioda uniwersalna
Schottky Minimelf
Różne
Y1: rezonator ceramiczny 6,00
MHz CSTCC6.00MG − TC (Murata)
SMD (można też powierzchniowo
przylutować rezonator
przewlekany)
L1, L2: koralik ferrytowy
przewlekany
J1: gniazdo USB typ B
listwy goldpin, przewód taśmowy
µ
Instalacja sterownikÛw
Teraz moøemy po raz pierwszy
pod³¹czyÊ nasz uk³ad do magis-
trali USB (bezpoúrednio do gniaz-
da A†komputera albo poprzez hu-
ba z†w³asnym zasilaniem, nie
ograniczaj¹cego poboru pr¹du do
100 mA).
Po w³¹czeniu Windows wy-
úwietli informacjÍ o†obecnoúci no-
wego urz¹dzenia USB i†poprosi
o†podanie lokalizacji sterownika -
odnajdujemy i†zatwierdzamy loka-
lizacjÍ folderu z†plikami (jak wy-
øej) - po chwili instalacja jest
zakoÒczona. Menedøer urz¹dzeÒ
w†kluczu Kontrolery uniwersalnej
magistrali szeregowej pokaøe teraz
obecnoúÊ urz¹dzenia ìFTDI
FT8U2XX DEVICEî.
Uwaga! Sprawa moøe siÍ po-
waønie skomplikowaÊ jeúli uøy-
wamy juø jakiegoú uk³adu z†kos-
tk¹ FTDI obs³ugiwan¹ jako wirtu-
alny port szeregowy. System ma
Wpisy do deskryptorÛw FT8U232
S³uøy do tego wspomniany
powyøej program narzÍdziowy
Ftd2xxst.exe . SposÛb jego uøycia
jest dok³adnie opisany w†podrÍcz-
niku, ktÛry w†postaci elektronicz-
nej publikujemy na CD-EP8/
2003B.
Po wybraniu nowego pliku
edytujemy wszystkie potrzebne
pola:
Manufacturer = FTDI
Manufacturer ID = FT
Vendor ID = 0403
Product ID = 6001 (chyba, øe
wymagana jest zmiana zgodnie
z†uwag¹ powyøej)
Description = avr isp loader (tej
pozycji uøywa program nadrzÍdny
PC do lokalizacji urz¹dzenia, nie
moøe byÊ wiÍc ona zmieniana,
chyba øe rÛwnolegle z†kodem pro-
gramu).
Po zakoÒczeniu edycji zapa-
miÍtujemy plik i†programujemy
EEPROM. Nowe ustawienia de-
skryptorÛw bÍd¹ uøyte po nastÍp-
nej enumeracji (czyli od³¹czeniu
i†ponownym pod³¹czeniu p³ytki).
Rys. 2. Rozmieszczenie elementów
na płytce drukowanej
W†opcjach zaawansowanych
ustawiamy:
Plug and Play - nie
Fixed Serial Number - dowolnie,
w†prototypach ustawi³em na ìtakî,
wprowadzaj¹c rÍcznie numery
20000001, 20000002 itd.)
Self Powered - nie
Remote Wakeup - nie
Max Power (mA) - 250 mA
(wprawdzie sam programator mieú-
ci siÍ w†podstawowych 100 mA,
ale byÊ moøe bÍdziemy stosowaÊ
p³ytkÍ w†innym celu i†przyda siÍ
moøliwoúÊ zasilenia dodatkowych
zewnÍtrznych podzespo³Ûw).
Etap 2†- konfiguracja
mikrokontrolera
ATmega 8
Uøywamy do tego dowolnego
posiadanego programatora ISP.
Prototypy by³y konfigurowane
z†poziomu AVRSide za poúrednic-
twem optoizolowanego programa-
torka RS. ZwrÛÊmy tylko uwagÍ
na prawid³owe pod³¹czenie linii
- za pomoc¹ schematu i†rysunku
p³ytki zlokalizujemy bez trudu
wyprowadzenia interfejsu ISP.
Mikrokontroler zastosowany
w†projekcie pracuje z†wewnÍt-
rznym oscylatorem 8†MHz. Prze-
28
Elektronika Praktyczna 8/2003
R9: 10k
Kondensatory
C1, C11: 10
8754390.018.png 8754390.019.png 8754390.020.png 8754390.021.png 8754390.022.png 8754390.023.png 8754390.024.png 8754390.025.png 8754390.026.png 8754390.027.png
Programator USB mikrokontrolerów ATmega − ISP
stawiamy wiÍc fabryczne 0001 (1
MHz) na 0100. Pozosta³ych bitÛw
moøemy w†naszym zastosowaniu
nie zmieniaÊ. Jednoczeúnie naleøy
odczytaÊ i†zanotowaÊ wartoúÊ baj-
tu kalibracyjnego dla 8†MHz. AT-
mega po zerowaniu zawsze auto-
matycznie ³aduje do korekcyjnego
rejestru OSCCAL wartoúÊ dla
1†MHz. Musimy wiÍc w†czÍúci
inicjalizacyjnej programu prze³a-
dowaÊ samodzielnie OSCCAL od-
czytan¹ powyøej wartoúci¹. Wy-
maga to wprawdzie przekompilo-
wania programu oddzielnie dla
kaødego egzemplarza urz¹dzenia,
co jednak na etapie testÛw i†uru-
chamiania (czy teø przy sk³adaniu
pojedynczych p³ytek na w³asne
potrzeby) nie jest øadnym utrud-
nieniem.
Uwaga! Konfiguracja fuseíÛw
wymaga uwagi i†starannoúci.
Sprawdümy dwa razy zanim coú
ostatecznie wpiszemy do mikro-
kontrolera. NiektÛre bity mog¹
nam bowiem ca³kiem zablokowaÊ
interfejs ISP, ale nawet zmiana
ürÛd³a taktowania (inne niø po-
trzebne ustawienie CSEL) sprawi
w†zmontowanym juø urz¹dzeniu
mnÛstwo k³opotÛw.
nym oprogramowaniem, ca³kowi-
cie dostÍpnym - moøna wiÍc przy
okazji go poprawiaÊ czy rozsze-
rzaÊ o†nowe funkcje (na razie
uruchomione s¹ tylko podstawo-
we operacje dla serii ATmega).
Otrzymany po kompilacji plik
wynikowy avrisp.hex ³adujemy do
mikrokontrolera dowolnym pro-
gramatorem ISP. Teraz moøemy
przyst¹piÊ do praktycznych prÛb
ale o†tym za miesi¹c.
Jerzy Szczesiul, AVT
jerzy.szczesiul@ep.com.pl
Etap 3†-
zaprogramowanie
mikrokontrolera
Jak zaznaczono wyøej, naleøy
wpisaÊ do programu w³aúciw¹ dla
danego egzemplarza ATmega war-
toúÊ OSCCAL (na pocz¹tku fun-
kcji main() w†module u_main.c ).
Kod dla programatora jest wol-
Wzory p³ytek drukowanych w for-
macie PDF s¹ dostÍpne w Internecie
pod adresem: http://www.ep.com.pl/
?pdf/sierpien03.htm oraz na p³ycie
CD-EP8/2003B w katalogu PCB .
Elektronika Praktyczna 8/2003
29
8754390.028.png
Zgłoś jeśli naruszono regulamin