Objavljeno v reviji Svet elektronike link
Program in firmware dobite tukaj
Množica mikrokontrolerjev, ki so na voljo zahteva tudi množico programatorjev. Zato sem naredil nekakšen emulator programatorjev, ki zna posnemati delovanje drugih programatorjev, s tem da uporablja originalne programe. Zakaj bi imel kup programatorjev, če imam lahko le enega, ki vse te posnema.
Novejši mikrokontrolerji vsi po vrsti podpirajo ti. serial ISP (in system programming), zato so programatorji navadno precej enostavne napravice priklopljene na COM ali LPT vrata. Emulacija le teh je zato precej enostavna z enim mikrokontrolerjem.
Zaenkrat sem se omejil na mikrokontrolerje in programatorje, ki jih sam uporabljam oz. sem jih uporabljal. Je pa seveda možno dodati podporo še za kak drug mikrokontroler z enostavno nadgradnjo programa v mikrokontrolerju.
|
Mikrokontroler |
Obstoječi programator |
Izbira emulacije |
|
AVR |
PonyProg2000 |
PonyProg AVR |
|
PIC (16Fxxx) |
PonyProg2000 |
PonyProg PIC |
|
MSP430 |
pyBSL |
MSP430 bsl |
|
LPC21xx |
LPC210x ISP |
LPC21xx bsl |
|
I2C EEPROM (24Cxx) |
PonyProg2000 |
PonyProg I2C |
Vezje na Sliki 1 je sestavljeno okoli mikrokontrolerja AT90S2313 (IC1), ki je bil izbran zaradi hitrosti. Napajanje je dobljeno neposredno iz COM vrat iz signalov RTS in DTR preko diod D1 in D2. Ti diodi sta lahko univerzalni 1N4148 ali schotky diodi, kar da nekoliko večjo napetost na C1, ki drži napetost, ko se signala RTS in DTR uporabljata pri krmiljenju signalov.
Programator lahko deluje na 3.3V ali 5V odvisno od izbranega regulatorja IC3. Ob tem moram opozoriti, da programator z 3.3V, ne bo deloval na nekaterih računalnikih, zaradi prenizkih napetostnih nivojev v COM vrata. Katero napetost boste izbrali je odvisno o tega katere mikrokontrolerje imate namen največ uporabljati. 3.3V je namreč dovolj za npr. AVR-je ali MSP430 vendar premalo za PIC-e kot je PIC16F84.
Priporočam, da izberete LDO regulator kot sta REG103UA-3.3 ali REG103UA-5 saj imata majhno lastno porabo in majhen padec napetosti, kar je še posebej pomembno, ker je vezje napajano iz COM vrat. V skrajnem primeru lahko uporabite tudi 78L05 v SO8 ohišju, vendar je večja verjetnost, da vezje ne bo delovalo zaradi premajhnega toka(78L05 ima porabo tudi do 5mA, odvisno od proizvajalca) iz COM vrat. Ti regulatorji imajo nekoliko različen razpored nožic, vendar je vezje narejeno tako, da sprejme oba tipa.
Upori R11, R12, R13 in R14 omejujejo tok v in iz programatorja, kar je pomembno kadar je napetost programatorja različna od napetosti, na kateri deluje vezje programatorja. V primeru, da te razlike ni lahko upore tudi kratko sklenete ali uporabite male npr. 10Ω upore. Naslednja stvar, ki je pomembna pri teh uporih, je dejstvo da lahko ti upori toliko omejijo tok, da onemogočijo programiranje, v primeru da ima mikrokontroler, v sistemu, obremenjene pine za programiranje z npr. majhnimi upori.
JP2 je mostiček, ki izbira med programiranjem/nastavitvijo programatorja in normalnim delovanjem. Kadar je mostiček sklenjen, lahko s programom za nastavitev in nadgradnjo (Prog emulator) sprogramiramo mikrokontroler na programatorju ali izberemo tip emulacije.
Na JP3 lahko damo zunanjih 12V do 14V kadar jo potrebujemo za npr. programiranje PIC mikrokontrolerjev, ki rabijo višjo napetost, ostali mikrokontrolerji teh 12V ne potrebujejo.
|
ELEMENT |
VREDNOST |
OPOMBA |
|
IC1 |
AT90S2313-10SI |
Lahko je tudi -4SI |
|
IC3 |
REG103UA-3.3 ali REG103UA-5 |
Če teh regulatorjev ne dobite lahko uporabite tudi 78L05 v SO8 |
|
R1, R2, R3, R5, R7 |
22k |
Velikost 1206 |
|
R6, R11, R12, R13, R14, R15 |
1k |
Velikost 1206 |
|
R9 |
10k |
Velikost 1206 |
|
R15 |
15k |
Velikost 1206 |
|
C1 |
100uF/16V |
Elektrolit |
|
C2,C3 |
27pF |
Velikost 1206 |
|
C4 |
220nF |
Velikost 1206 |
|
D1,D2 |
1N4148 |
|
|
T1,T2 |
BC847 |
SOT-23 |
|
T3 |
BC857 |
SOT-23 |
|
LED1,LED2 |
LED 3mm |
Barva po želji; LED1 kaže napajanje |
|
S1 |
Mikrotipka 5x5mm |
Zaenkrat ni v uporabi, lahko jo izpustite |
|
Q2 |
Quarzt 6MHz |
Lahko je od 4MHz do 10MHz, vendar večja frekvenca povzroči večjo porabo |
|
DB9M |
DB9 moški 90° za na TIV |
|
|
JP1 |
Ženska letvica 7p |
|
|
JP2 |
Ženska letvica 2p |
|
|
JP3 |
Ženska letvica 2p |
JP1 je ISP konektor preko katerega programiramo. Razpored pinov in povezavo na posamezne mikrokontrolerje si poglejmo v naslednji Tabeli 2.
|
Številka pina na JP1 |
Ime pina na JP1 |
AVR |
PIC |
MSP430 |
LPC210x1 |
I2C EEPROM |
|
1 |
GND |
GND |
GND |
GND |
GND |
GND |
|
2 |
PIN1 |
SCK |
RB6(CLOCK)2 |
P1.1 |
TXD0 |
SCL |
|
3 |
PIN1 |
MISO |
RB7(DATA)3 |
P2.2 |
RXD0 |
SDA4 |
|
4 |
PIN1 |
MOSI |
/ |
RST |
/ |
/ |
|
5 |
PIN1 |
RESET |
/ |
TEST/TCK |
/ |
/ |
|
6 |
Vcc |
Vcc |
Vcc |
Vcc |
Vcc |
Vcc |
|
7 |
Vpp |
/ |
MCLR |
/ |
/ |
/ |
Ker je delamo programator, bi bilo nesmiselno, če bi potrebovali programator, da ga naredimo. Zato je narejen tako, da se lahko sam sprogramira. Program “Prog emulator” namreč omogoča tudi programiranje. Vse kar moramo narediti, je da sklenemo JP2 in v “Prog emulator” pritisnemo gumb “Nadgradi firmware”. Z tem programom tudi izberemo tip emulacije, glede na to kateri mikrokontroler želimo sprogramirati.
Programator je izdelan večinoma v SMD tehniki, kar bo na začetku verjetno marsikoga odvrnilo od izdelave. Vendar kar brez strahu. Vse kar porebujete je pinceta in spajkalnik s primerno konico. Pred spajkanjem celotno vezje pocinimo. Najprej prispajkamo IC1 ter IC3. Čip postavimo točno na mesto in najprej prispajkamo diagonalni nožici, potem pa po vrsti, še vse ostale. Če se nam dve nožici sprimeta je najbolje uporabiti pletenico za odspajkovanje. Pri spajkanju uporov najprej damo cin na en otoček, nanj pritisnemo upor in s spajkalnikom spojimo, nasprotni del upora lahka prispajkamo brez problema saj ga spajka že drži.
Zankrat je bil programator preverjen za PIC16F84 (z 13V zunanjo napetostjo na JP3), AT90S2313, MSP430F1132, LPC2106 ter EEPROM-om AT24C04. Če bo zanimanje lahko dodam podporo še za kak mikrokontroler.
Programe dobite na naslovih:
PonyProg2000:
http://www.lancos.com/prog.html
LPC210x ISP:
pyBSL:
http://prdownloads.sourceforge.net/ mspgcc/install-pybsl.exe?download
Avtor: Peter Kuhar
1LPC210x je potrebno ročno spraviti v način za programiranje. To storimo tako, da držimo pin P0.14 na nizkem nivoju med resetom. Nazalost program LPC210x ISP tega ne stori programsko.
2Oznaka pina je odvisna od PIC-a. RB6 velja za PIC16F84. Za druge PIC-e je potrebno pogledati preko katerega pina se programira.
3Oznaka pina je odvisna od PIC-a. RB7 velja za PIC16F84. Za druge PIC-e je potrebno pogledati preko katerega pina se programira. Priporočam pull-up upor 10kΩ.
4Priporočam 10k pull-up upor