Aki ebben a felsorolásban idegennek találja a
pákát és társait, az
felejtse el, hogy
PIC-el foglalkozzon!
Azért gondolom ezt így,
mert a PIC sokkal inkább
áramkör, mint
programozható felület. A PIC
köré
egy áramkört kell
felépítenünk(helyesen
illesztenünk),
amit majd az erre a környezetre írt program fog
vezérelni, legyen az akár egy
szál LED, vagy egy bonyolult,
hálózattal
összekapcsolt folyamat vezérlés,
adatgyûjtés.
Ha a felsoroltak
közül nincs meg
mindegyik feltétel, akkor első
körben pótolni kell, és
utána jöhet
a PIC kaland!
Tehát tételezzük fel, hogy a
páka,
affinitás, kitartás, elektronikai és
logikai
alapok megvannak. Akkor építsünk
égetőt
és próbapanelt!
Próbapanel:
Próbapanelnek jó a dugdosós raszteres
panel,
amin bármilyen áramkört fel lehet
építeni, akár páka
nélkül is.
Egy a baj, drága és bizonyos esetekben a
párhuzamosan futó vezető sávok
kapacitása
befolyásolhatja a próba
áramkör
működését.
Készíthetünk próbapanelt
maratással, amin több foglalat van a PIC-eknek
és
minden láb ki van vezetve tüskesorokra, hogy
rájuk
csatlakozókat dugva bármilyen
áramkört
össze lehessen drótozni akár
légszereléssel, vagy a csatlakozókra
kész
modulokat lehet tervezni, rádugni(pl. RS232 modul, RS485
modul,
LED-es modul, Potis A/D modul, LCD modul, stb.). Egy ilyen
általános próbapanel tervét
letölthetitek innen: 3 foglalatos próbapanel
(A tervet
CircuitMaker2000-el lehet
megnyitni. A program Trial verzióját
letölthetitek
az oldalamról.) A
nyákot kézzel is meg lehet rajzolni EDDING
tollal, de a
vasalásos technikával is könnyű
elkészíteni. Erről írtam egy
segítséget: Vasalásos
nyák készítés
Ez ügyben érdemes elolvasni a PICKit2
építése cikket is, ahol
lépésről lépésre bemutatom
a nyák
vasalásos
elkészítését sok
képpel: PICKit2 klón
építése
Fontos,
hogy a próbapanelre és majd később a
céláramkörünk
paneljére
is rá kell tervezni az ICSP portot, amin
keresztül a programot be lehet tölteni a PIC-re.
Néhány
szó az
égetőkről.
Csoportosítás PC csatlakozó
felület szerint:
Az
LPT:
Az LPT portra valamilyen illesztéssel kell a PIC-et
csatlakoztatni, ezért OPC(nyitott kollektoros kimenetű)
kapus
TTL IC
van felhasználva erre(pl. 7406, 7407).
Tapasztalatok azt
mutatták, hogy valami okból a legstabilabb
megoldás a 7407-es IC-k alkalmazása volt. Ez
láb kiosztásban kompatibilis, csak nem
fordít
fázist a kimenetén. Bármelyik
égetőbe beépíthető, ami 7406-al, vagy
az erre nem
igazán alkalmas 7405
IC-vel készült(adatlap szerint a 7405-nek 7V lehet
a
kimenetén, ezzel szemben a Vpp vezérlő
tranzisztornál 12V-ra van felhúzva a kimenete.
Egy
darabig biztosan működik is...), csak az égető
programban
át
kell konfigurálni a vezérlő vonalak
fázisát. Erről később
részletesen is
beszélek. Vannak olyan égetők is, amiknél
közvetlenül az LPT portra csatlakozik a PIC, ezeknél
ellenállással, és diódákkal van a
védelem megoldva. Ez a megoldás is megfelelhet, de
több odafigyelést kíván, ha az
áramkörünkben a PGC, PGD lábakat is
használni akarjuk.
Néhány LPT-s égető linkje:
Oshon
alap kivitel,
WLPT_Vpp_mini v4 égető,
WPB_F18_LPT alap kivitel,
WPB_PCB_v2
feljett leválasztott kivitel
Ne tévesszen meg senkit az F18 a
égetőáramkör
nevében, mert mindegyik PIC-et tudja
égetni (amelyek
elviselik az 5V-ot), a megfelelő égetőprogrammal. Ez igaz
mindegyik LPT-s és COM-os áramkörre!
A
COM:
COM portra számos halál egyszerű
áramkör
"terveződött" ezeket úgy
hívják, hogy JDM!
Gyakorlatilag mára a fórumokon ezt a
három betűt kiejteni
építési
szándékkal, egyenlő a saját
halálos
ítéletünkkel, mert minden bizonnyal
rendesen le
leszünk teremtve! :) (Mindezt annak ellenére, hogy
van akinél működik. Egy darabig...)
Az okokat elolvashatjátok a
következő linken:
Miért ne
építsünk JDM-et?
Ha elolvastátok, beláthatjátok, hogy egy
RS232
illesztő IC-vel felépített égető
áramkör,
nem
JDM klón, még akkor
sem, ha az égető programokban a JDM-et kell
kiválasztani,
majd a vonalakat fázis helyesen
átkonfigurálni a
működtetéshez.
Ilyen megfelelően illesztett soros
égető áramkört a következő
linken
találhattok:
WPB_RS_V2
A következő két égetőáramkört
kipróbáltam, jól működnek, de cikk(és
nyákterv) még nem készült hozzájuk.
WCOM_v4 és
WCOM_v5
Sajnos vannak korlátai, amit olvashattok, de alapvetően egy
stabilan működő biztonságos égető, ami
nagyon sok
PIC-et tud égetni a megfelelő égető programokkal.
Az
USB:
Talán ez a legszimpatikusabb felület és
talán e felé húz mindenki
szíve, de sajnos
van egy nagy hátránya, hogy csak olyan
égetőáramkör
építhető fel
rá(amit égetőprogramok is támogatnak), amiben PIC
a fő
alkatrész. Ebből következően, ha ilyet
építünk, akkor kell egy égető
áramkör, ami fel tudja programozni a PIC-et,
tehát
ez a 22-es csapdája.
Több kerülő megoldás is van, de be
fogjátok
látni, hogy mindegyikben van valami nyűg, amit jó
lenne
elfelejteni.
- Veszünk egy
gyárit: Drága(ez relatív,
mert 8000körül van), ha elromlik fel kell
vinnünk a
boltba, ha a firmware sérül, égető
híján fel kell vinnünk a boltba.
- Építünk
egyet, és valakit
megkérünk, hogy égesse be a PIC-et,
esetleg
úgy vesszük a PIC-et, hogy
megkérjük a boltot
égesse be: Fel kell menni a boltba az
égetés
miatt, meg kell kérni valakit, hogy égesse be.
Ha
megsérül a firmware, ugyanez
ismét.
- Ha van LPT portunk, akkor
összerakjuk(lógatjuk) a WLPT_Vpp_mini
égetőt, és
felprogramozzuk a klónt, ill. karbantartjuk a gyárit. Ez
szerintem a legjobb megoldás.
Ha van már egy LPT-s, vagy COM-os égetőnk,
mellé mindenképpen érdemes
megépíteni a PK2-t, mert gyakorlatilag minden
PIC-et
tudja égetni(akár a PIC32-őket is) és
képes
debuggolni az erre alkalmas típusokat. Több hasznos
kiegészítő funkciója is van,
amit az ICSP
port vonalain keresztül lehet elérni (soros port,
logikai analizátor, logikai be és kimenetek
kezelése)
Ha építeni szeretnétek, akkor a teljes
klón
építési
leírását itt
találjátok:
PICKit2 klón
építése(watt)
Ha elég az 5V-os
PIC-ek támogatása, akkor szilva
fórumtárs
klónja a jó választás:
PICKit2 klón
építése(szilva)
(5V-os verzió, de
készül hozzá egy adapter!)
Van egy jó topic is, amit ajánlani tudok:
PICKit2 klón
építése(fórum)
USB-s
átalakító:
Sajnos az égető programok nem tudják kezelni az
USB-s
átalakítókat, pontosabban nem lehet
garantálni a működést sem soros, sem
párhuzamos nyomtató portos égetőkkel.
Következtetés:
Mindenképpen jó, ha van
egy PIC-et nem tartalmazó égetőnk,
de egy PICKit2 is
jól jön mellé!
Ajánlás:
A
fentiek fényében első
körben egy egyszerű LPT, vagy COM portos kivitel
jöhet
szóba, ha
van a PC-n ilyen port.
Ha nincs, akkor marad az USB-s PICKit2 és a "sok
nyűg". :-)
Tehát
kész a próbapanel és kész
az égető!
Felmerül a kérdés, hogy milyen PIC-et
válasszunk első alkalommal? Ilyenkor rengeteg szempontot fel
lehet hozni pro és kontra.
Az egyik nézőpont szerint egy sok
lábú
és minden perifériával
ellátott
példányt érdemes
választani, hogy mindent
ki lehessen próbálni rajta.
A másik szerint egy "egyszerű" olcsó kis PIC-re
van
szüksége a kezdőnek.
Mindenki eldöntheti melyik tetszik jobban neki, én
az arany
középutat ajánlanám. Legyen
közepesen
egyszerű, és közepesen sok lába. pl.
18F2321.
Most bizonyára sokan felhördülnek, hogy
18F-es PIC
kezdésnek, amikor a 10,12,16F-esek is léteznek,
és
azok biztosan egyszerűbbek(kisebb a számuk :) ),
és
könnyebben megtanulhatóak! Aki így
gondolja, az
téved! A 18F-ek jelentős mértékben
probléma
mentesebbek a korábbi
típusoknál, sokkal
könnyebb programozni őket(lap váltások
nincsenek,
és ha funkció regisztert akarunk
elérni, nem kell
bankot váltani sem. Rengeteg hasznos
utasítás van,
ami
nem bonyolítja, hanem egyszerűsíti a
kódot, a
hatékonyság
növelésével).
Ha a 18F-ek már mennek, akkor jöhet a nagyobb
kihívást és programozási
odafigyelést követelő 16F-es család!
Én a
16F-es családból a kis
teljesítményű,
kevés memóriájú,
kis lábszámú
példányokat
használom egyszerű feladatokra, mert amihez több
kell, azt
18F-el oldom meg. Ha megnézzük az
árlistát,
beláthatjuk, hogy a 18F-ek árban sem maradnak el!
Persze
ezt is gondolhatjátok másképp, de a
hosszú
távú tapasztalatom az, hogy az
említett
stratégiával lehet a legolcsóbban
és a leghatékonyabban feladatokat megoldani,
ezért
érdemes ezen elgondolkodni és
utánaszámolni.
Égető programok kiválasztása:
Én néhány égetőprogramot
használtam:
Ezeket a programokat be lehet állítani az itt
ajánlott égető
áramkörökhöz a
PICKit2 kivételével, mert annak
külön szoftvere
van, illetve az MPLAB-ból direkt lehet kezelni.
Most ezeket a programokat sorra veszem és igyekszem
részletezni a beállításokat
és azt,
hogy hogyan kell
beállítani
egy vonalat egy adott égetőhöz.
WPB_F18_xxx
program beállításai:
WPB_RS_V2-höz:
Port
kiválasztása gomb:
1. WPB_RS_V2 égető
kiválasztása(COM port)
rádió gomb bejelölése
2. Ki kell választani azt a COM port címet,
amelyikre
rádugtuk az égetőt(3F8 COM1, 2F8 COM2) Pontos
adatok a PC
eszköz kezelőjéből kiolvashatóak.
Sajátgép(jobb egérklikk),
tulajdonságok,
hardver, Eszközkezelő, Portok(COM és LPT),
Com1(jobbegérklikk), tulajdonságok,
Erőforrások(I/O tartomány első címe)
A beállítás ezzel kész.
Oshon alap
LPT-s
égetőhöz, WPB_F18_alap
LPT-s
és a WLPT_Vpp_mini égető
áramkörhöz:
Port
kiválasztása gomb:
1. LPT Portos égetők kiválasztása
2. Ki
kell választani azt
az LPT port címet, amelyikre rádugtuk az
égetőt(378 LPT alapcím)
3. Port Beállítás 7407-hez:

és 7406-hoz:

WPB_PCB_V2_fejlett
LPT-s
égetőhöz:
Port
kiválasztása gomb:
1. LPT Portos égetők kiválasztása
2. Ki
kell választani azt
az LPT port címet, amelyikre rádugtuk az
égetőt(378 LPT alapcím)
3. Port beállítása:

Oshon 16F
program beállításai:
Oshon alap
LPT-s
égetőhöz, WPB_F18_alap
LPT-s
és a WLPT_Vpp_mini égető
áramkörhöz:
Port
Beállítás 7407-hez
és WLPT_Vpp_mini
égető
áramkörhöz:
1.
Hardware/Settings

és 7406-hoz:

WPB_PCB_V2_fejlett
LPT-s
égetőhöz:
1.
Hardware/Settings

Oshon 18F
program beállításai:
Oshon alap
LPT-s
égetőhöz, WPB_F18_alap
LPT-s
és a WLPT_Vpp_mini égető
áramkörhöz:
Port
Beállítás 7407-hez
és WLPT_Vpp_mini égető
áramkörhöz:
1.
Hardware/Settings

és
7406-hoz:

WPB_PCB_V2_fejlett
LPT-s
égetőhöz:
1.
Hardware/Settings

WinPIC800
program beállításai:
WPB_RS_V2-höz:

Oshon alap
LPT-s
égetőhöz, WPB_F18_alap
LPT-s
és a WLPT_Vpp_mini égető
áramkörhöz:
Port
Beállítás 7407-hez
és WLPT_Vpp_mini égető
áramkörhöz:

és
7406-hoz:

************************************
Ha
beállítottuk a hardvert, még ne
álljunk
neki PIC-et égetni, előbb le kell csekkolni a vonalakat.
Ehhez
kell egy digitális multiméter, amivel az ICSP
vonalakat
megmérjük. Az ICSP megértése
fontos,
ezért érdemes a következő linken
található írást elolvasni: ICSP
röviden
Tehát az égetőáramkör
rá van
csatlakoztatva a PC-re az égetőprogram fut és
már
beállítottuk a vonalakat. PIC nincs
rácsatlakoztatva. Ráadjuk a
tápfeszültséget az égetőre.
Kezdjük a Vdd és a Vpp vonalak
ellenőrzését.
A Vdd és a Vpp kivezetésekre
rámérve 0V-nak
megfelelő feszültséget kell
mérjünk(néhány mV nem
számít).
Ha bármelyik fordítva van, akkor a vonalat
invertálni kell a fenti leírások
szerint, mert
valamit nem jól állítottunk
be!
Ha ez megvan, akkor jelöljük be a Vdd, majd a Vpp
pipákat, és mérjük meg a
kivezetéseket. Ekkor a Vdd-nek 5V, a Vpp-nek 12..13V
körülinek kell lennie. Ha ez nem így
lenne, akkor
valami áramköri hiba van, javítsuk ki
azt!
Ha eddig rendben, akkor következik a PGD és a PGC
vonal
tesztelése. Ehhez a Vdd-t bekapcsolva hagyjuk, és
rámérünk a vonalakra. Alacsony logikai
szintnek
megfelelő(0,6V alatti) feszültséget kell
mérjünk. A programban a DATA IN(vag ACK) pipa nem
szabad
hogy jelezzen(ez jelzi vissza az adat vonal(PGD)
állapotát!) Ha ez rendben, akkor
egyenként
becsekkoljuk a PGD, PGC pipákat és
mérünk. A
kimeneten magas szintnek megfelelő feszültséget
kell
mérjünk(2,5V-nál több). Amikor
a PGD-t
csekkoljuk, figyeljük a DATA IN(ACK) vonalra
vonatkozó
visszajelzést, hogy jelzi-e a PGD vonal magas
szintjét.
Ha ez
ellentétesen jelez, akkor invertálni
kell az ACK vonalat.
Ha a fentiekből következőktől eltérően
viselkedne
az áramkör, akkor elektronikailag
hibás, meg
kell keresni a hibát és kijavítani!
Ha minden úgy működik ahogy kell, akkor
rá lehet
csatlakoztatni egy PIC-et. Az esetek nagy
százalékában ezután
már nem szokott
probléma lenni az égetéssel. Van olyan
program ami
kérésre felismeri a csatlakoztatott PIC-et
(WPB_F18_xxx,
WINPIC800).
Ha ez megtörténik akkor ott már baj nem
lehet.
Más programoknál a próba,
egy jó,
és a PIC-hez illő *.hex állomány
beégetésével
történhet. Ha az
égetést követő ellenőrzéskor
nincs hiba,
akkor minden rendben.
Ritkán előfordul, hogy nem sikerül az
égetés.
Ez minden esetben valamilyen időzítési, vagy
áramköri problémára vezethető
vissza. Első
körben lassítani kell az
égetés
sebességét, ezt a programok nagy
többsége
különböző módon
támogatja.
Ha ez nem segít, akkor utána kell olvassunk az
égető áramkör
építési
leírásában, hogy milyen
kábeleket és
kábelhosszakat ajánlanak az LPT és az
ICSP
kábel esetében!
Azt már
említettem, hogy
a 7406, 7405 TTL IC-kkel szerelt égetőket
inkább 7407-el
használjuk, ez is megér egy
próbát,
ha nem az lenne az áramkörben.
Milyen
programnyelvet válasszunk?
Sokan úgy gondolják, hogy a magasabb szintű nyelvek, mint
pl. a Basic, Pascal, C, könnyebb, mint az Assembler, főleg, ha
PC-n használták már valamelyiket.
Én úgy gondolom, hogy ez nem így van. A PIC erősen
hardver közeli dolog, sőt elsősorban egy elektronikai
alkatrésznek tekintem, amit lehet vezérelni programmal.
Ezért ha meg akarjuk érteni a
működését, ami a megfelelő program
megírásához elengedhetetlen, akkor azt a magasabb
szintű nyelveken keresztül nagyon nehezen tudjuk megtenni.
Az igaz, hogy egyszerű alkalmazásokat gyorsan össze lehet
dobni egy Basicben(LED villogó, LCD kijelző), de ha valami nem
működik, fogalmunk se lesz mi az oka. Sajnos, vagy nem sajnos,
ezeket a nyelveket a C kivételével kevesen
használják - már azokra gondolok, akik
segíteni tudnának - ezért kérdezni se
nagyon van kitől. A C-t többen használjuk, de ezzel sem
javasolt a PIC tanulás elkezdése.
A PIC-et minden ízében meg kell ismerjük, hogy
tudjuk mire lehet használni. Minden regiszter bitjéről
tudni kell mit állít és miért. Ezt az
Assembly nyelven keresztül minden ízében
felderíthetjük, mivel az utasítások
közvetlenül a regisztereket módosítják.
Később, ha már a hardver ismert, jöhet a C.
Még így is nehéz lesz, ezt a magam
példáján elmondhatom, pedig PC-n programoztam
C-ben is valamennyit. A nyelvvel kevesebb bajom volt, mint azzal, hogy
nem az történt amit én a megírt
programból egyenesen gondoltam volna (ilyen Assemlerben nem
fordult elő). Ilyenkor a lefordított forráshoz kell
fordulni, és itt azonnal visszaértünk a
kályhához.
Az Assemler nem egy bonyolult dolog, nagyon alap
utasítások, elágazások és
ugró utasítások vannak. Rengeteg példa
található a neten, és a fejlesztő környezetek
támogatják a szimulációt, ami nagyban
segíti a program fejlesztését és a
programozás menetének megértését.
Tervezem a leírás bővítését,
megtartva a magyarázó formát, mert úgy
gondolom, hogy a részleteket az adatlapokban meg lehet
találni. Ha kérdéseitekkel bővíthető lenne
a témakörök száma, akkor írjatok
levelet, megpróbálom kitárgyalni itt.
Sok sikert és örömöt
kívánok a PIC
világban!
2009.02.02
watt
wattmep
@ tvn.hu
frissítve:
2013.07.16.