2012-08-21

USB programatorius – USBasp


Vis dažniau kompiuteriuose COM ir LPT jungtys yra nebeįtraukiamos į pagrindinę komplektaciją. Nors ir yra labai mėgiamos elektronikos entuziastų dėl savo paprastumo, tačiau tampa vis didesne retenybe. Valdyti prietaisus ar programuoti mikrokontrolerius tampa sudėtingiau. Tai dar labiau pasireiškia nešiojamuose kompiuteriuose, kuriuose jau senokai dominuoja USB ir kitos sudėtingesnių protokolų jungtys. Ką daryti tokiu atveju, jeigu reikia įrašyti sukompiliuotą programą į mikrokontrolerį, o paprastų priemonių nėra? Šiame straipsnyje pabandysiu į tai atsakyti, panaudojant tą pačią šiuolaikinę komunikavimo jungtį - USB.


I. Galimybės

Taigi, turint tik USB jungtis kompiuteryje, kaip išgauti COM/RS232 arba LPT funkcionalumą? Internete paieškojus įmanoma surasti galybę informacijos ir metodų. Sužinoti, kurie veikia, gali tekti ir paeksperimentuoti, nuomonių galima prisiskaityti įvairių. Yra kelios realios alternatyvos, kurias ir aptarsime. Vienas iš tokių elementariausių ir greičiausiai ateinančių į galvą pavyzdžių būtų nusipirkti USB-2-COM adapterį ar pan. Kuris verčia vienos jungties signalus į kitos jungties palaikomus signalus. Tokio adapterio pavyzdys pateiktas žemiau foto. Nesudėtinga rasti jų ir ebay.com parduotuvėje. O kainos įvairios – tuomet teko pakloti 20 Lt už šį daikčiuką.




Prie konverterio pridedami ir specialūs draiveriai. Tačiau naudos iš tokio konverterio mažai. Bėda tame, kad jis tinka tik prijungti seną COM printerį ar kitą įrangą, siųsti elementarius TX/RX TTL signalus per USART, tačiau visiškai netinka atlikinėti tokius darbus, kaip mikrokontrolerių programavimas. Nors virtualiai emuliuojamas COM prievadas yra sistemoje, bet reikiamo darbo taip ir neatlieka. Pilnas COM jungties funkcionalumas taip ir nėra sukuriamas - gauname kažkokį hibridinį variantą. Prijungus Atmega mikrokontrolerį, prietaisas taip ir nerandamas. Išbandžius su tikra COM jungtimi, viskas kuo puikiausiai veikia. Taigi ši alternatyva yra visiškai nepanaudojama mūsų atveju, nes AVRDUDE nemoka dirbti ir siųsti signalų per šį adapterį.  Tas pats ir su USB-2-LPT konverteriais. Taigi, belieka ieškoti kitų galimybių.

II. Geresnės alternatyvos

Dar vienas sprendimas – nusipirkti USB programatorių. Kinai juos štampuoja gana pigiai. Turbūt tai greičiausias ir pats optimaliausias tiek laiko, tiek išlaidų požiūriu variantas. USB programatorių, skirtų Atmega programavimui, pilnos interneto parduotuvės, kaip ebay.com įdedu net foto.



Tokį programatorių tenka naudoti ir pačiam – universalus dalykas, mažas ir patogus, tereikia teisingai sujungti ir atlieka visą reikiamą darbą.


Šis paminėtas programatorius remiasi gerai žinomu USBasp modeliu, kurį sukūrė Thomas Fischl. Labai populiarus tarp mėgėjų. Pats programatorius turi valdiklį - Atmega8 mikroprocesorių, kuris apdoroja USB duomenis ir toliau perduoda SPI protokolo signalus. Dėka mikrovaldiklyje veikiančios programos, yra virtualiai emuliuojamas USB stekas, todėl galima bendrauti per USB protokolą. Kaip teigiama, programavimo greitis siekia 5kB/s. Yra galimybė pačiam pasidaryti šį programatorių - pateikiama schema ir sukompiliuota mikrokontrolerio programa autoriaus svetainėje. Jei neturite galimybės nusipirkti iš eBay, tai verta apsvarstyti ir šią alternatyvą. Tačiau toks malonumas greičiausiai atsieis brangiau. Šiam projektui reikia diskretinių komponentų, kuriuos galima rasti elektroninių dalių parduotuvėse www.lemona.lt, www.rcl.lt, www.evita.lt ir pan. Tačiau yra šioks toks paradoksas – šiam programatoriui pasigaminti reikia jau turėti kitą, COM arba LPT programatorių tam, kad galėtumėte įrašyti USBasp kodą į Atmega8 mikrovaldiklį, kuris ir valdo patį programatorių. Taigi, tai iš tiesų nedžiuginantis niuansas. Žinoma, kūrėjo svetainėje yra net galimybė nusipirkti Atmega lustą su jau įrašyta reikiama programa, tada viską gavus, belieka tik sulituoti dalis. Pradedančiajam viską išsiaiškinti iš tikrųjų yra nemažas darbas, todėl tikiuosi pagelbės bent ši informacija.

 



Teko gaminti šį USBasp programatorių vien dėl edukacinių tikslų. Straipsnio pabaigoje pateikiu ir savo projektų failus, jeigu vis dėlto nuspręsite pasigaminti. Visi komponentai schemoje yra reikalingi, nereikėtų dar labiau optimizuoti ar ką nors išmetinėti – tai jau minimalus variantas. Zenerio diodai tinka 3.3-3.9V diapazone. Pradžioje galima susirinkti ir išbandyti ant testinės plokštės (breadboard).



 III. Schemos failai

Aukščiau minėto USBasp programatoriaus modifikuotą mini versiją galite parsisiųsti iš žemiau esančios nuorodos. Projektas paruoštas EAGLE programa.

Komentarų nėra:

Rašyti komentarą