2014 m. lapkričio 26 d., trečiadienis

USB programatorius ir AVRDUDE

Seniai berašiau - epizodiškai prisimenu mikrovaldiklius, tačiau prisėst prie jų nerandu laiko - šeima, darbas, o dar ir pamiegoti kažkiek reikia. Tačiau prieš dvi savaites gavau dovanų iš žmonos - kukurūzinį žaltį, tiksliau žalčiuką, o jei dar tiklsiau - beveik slieką. Šis padaras ne tik žavus, jis dar ir jautrus temperatūrai, todėl terariume reikia palaikyti tam tikrą temperatūrą. Šioje vietoje prisiminiau mikrovaldiklius.

Termoreguliatoriaus darymą aprašysiu vėliau - nenusipirkau dar reikiamo valdiklio (į turimą Attiny2313 netelpa, tad su kelių šimtų procentų atsarga pasiimsiu Atmega128), šiai dienai čia susidėsiu info, kuri aktuali dabar. O aktualumas yra tame, kad norėdamas neužimti stacionaraus kompiuterio bandysiu programint ant nešiojamo, todėl pribrendo reikalas USB programatoriui. Jį pasidaryti norėjosi iš turimų medžiagų, todėl pasirinkau visai neblogą ir lengvą projektą - USBtiny. Programatorius - vienas Attiny2313, ir štai jo schema.

Žemiau įdėsiu nuorodas į puslapius, kuriuose galėsite parsisiųsti reikalingus failus: programą programatoriui bei valdiklius.
Šio programatoriaus trūkumas - jis nėra tiesiogiai suderinamas su dažnai naudojamu PonyProg2000 bei su AVRStudio, kurį aš ir naudojų. Programuoti galima tik su AVRDUDE programine įranga (kurios iki šiol nebuvau bandęs) - tai komandinės eilutės pagalba valdoma programa, tačiau jau per pirmus pabandymus dirbti ji paliko visai malonų įspūdį. Juolab šiai programai yra ne vienas grafinis apvalkalas (paklauskite gūglo "avrdude gui"), kas kiek palengvina darbą, tačiau be pagrindinių funkcijų žinojimo vis tiek neišsiversite.
USBtiny puslapyje yra ir sprendimas šio programatoriaus panaudojimui tiesiogiai iš AVRStudio - reikės instaliuotis com0com programą bei USBtiny puslapyje esančią programą. Greitis, žinoma, bus mažesnis nei programuojant ši AVRDUDE, tačiau turėtų būti patogiau. Aš dar nežinau, kurį būdą pasirinksiu, nes ir vienas, ir kitas turi privalumų.
AVRDUDE įeina į WinAVR projektą, tad jeigu esate instaliavę pastarąją programą, kompiuteryje bus ir AVRDUDE - tai galite patikrinti komandinėje eilutėje surinkę "avrdude".

USBtiny puslapyje rasite visą informaciją, kaip pradėti naudotis AVRDUDE su USBtiny, čia įdėsiu tik patį pagrindą bei programos argumentus, deja, angliškai.
Prijungus programatorių prie USB turi užsidegti vienas iš LED - programatorius gyvas ir gauna maitinimą iš USB. Įsijungiate komandinę eilutę ir rašote:
c:\\users\\andrius> avrdude -c usbtiny -p t2313 <mikrovaldiklio trumpinys, mano atveju Attiny2313 mikrovaldikliui>
Rezultatas:


Iš teksto aišku, kad viskas tvarkoje - programa nuskaitė mikrovaldiklio parašą, galiam dirbti toliau. Čia pateiksiu tik flash nuskaitymo komandą, tačiau analogiškai viskas bus ir kitiems veiksmams, reikės tik pasiskaityti programos argumentų aprašymą.

C:\\Users\\Andrius>avrdude -c usbtiny -p t2313 -U flash:r:"test.hex":i
Argumentas -U nurodo flash atmintį, kurią reikia nuskaityti (r), failo pavadinimą, į kurį reikia nuskaityti ("test.hex"), ir formatą (i, Intel hex format). Rezultatas:

USBtiny puslapyje nepaminėta (bent jau neužmačiau kol kas), kad skaitymo bei rašymo greičius galima keisti su argumentu -B. Po jo einantis skaičius nurodo koks periodas tarp laikrodžio impulsų skaitant/rašant - pagal nutylėjimą šis skaičius yra 10. Kadangi mano schema dirba su 4 MHz kvarcu, galiu naudoti didesnį greitį, nurodydamas -B 1, ir štai koks rezultatas:

Visos atminties nuskaitymas truko 3x greičiau. Žinoma, reikia paminėti, kad tai tik pirmas mano susidūrimas su AVRDUDE ir tokiais parametrais juo labiau, todėl kažkas gali nutikti ir ne taip - tarkim, gali įrašyti netinkamai ar veikti ne su visais valdikliais ar ne visais dažniais. Kuo mažesnis mikrovaldiklio darbo dažnis, tuo didesnis turi būti intervalas.

dažniausiai naudojami AVRDUDE argumentai (visų neversiu, kol kas):
  • -p <partno>: programuojamo mikrovaldiklio tipas (partnumber). Aukščiau nurodytame pavyzdyje rašiau t2313, kas reiškia Attiny 2313 mikrovaldiklį.
  • -B <bitrate>: Intervalas tarp programatoriaus laikrodžio impulsų, rašiau aukščiau.
  • -C <config-file>: Papildomo konfigūracijos failo naudojimas, kol kas, pradžiai, jo nereikia naudoti, nes yra standartinis konfigūracijos rinkinys.
  • -c <programmer>: Programatoriaus tipas, mano atveju - usbtiny
  • -D: Neištrinti atminties prieš programuojant, kol kas nenaudoti.
  • -P <port>: Naudojamo prievado pavadinimas. Naudojant USBtiny nurodyti nereikia, nes bet kokiu atveju prievadas bus USB.
  • -F: This overrides the signature check to make sure the chip you think you''re programming is. The test is strongly recommended as it tests the connection, so don''t use this switch.
  • -e: Ištrina mikrovaldiklio atmintį, tačiau jo naudoti nereikia, nes prieš programuojant atmintis ištrinama ir šiaip, jei nenurodoma su -D to nedaryti.
  • -U <memtype>:r|w|v:<filename>[:format]: OK this one is the important command. Its the one that actually does the programming. The <memtype> is either flash or eeprom (or hfuse, lfuse or efuse for the chip configuration fuses, but we aren''t going to mess with those). the r|w|v means you can use r (read) w (write) or v (verify) as the command. The <filename> is, well, the file that you want to write to or read from. and [:format] means theres an optional format flag. We will always be using "Intel Hex" format, so use i
    So, for example. If you wanted to write the file test.hex to the flash memory, you would use -U flash:w:test.hex:i. If you wanted to read the eeprom memory into the file "eedump.hex" you would use -U eeprom:r:eedump.hex:i
  • -n: This means you don''t actually write anything, its good if you want to make sure you don''t send any other commands that could damage the chip, sort of a ''safety lock''.
  • -V: This turns off the auto-verify when writing. We want to verify when we write to flash so don''t use this.
  • -u: If you want to modify the fuse bits, use this switch to tell it you really mean it.
  • -t: This is a ''terminal'' mode where you can type out commands in a row. Don''t use this, it is confusing to beginners.
  • -E: This lists some programmer specifications, don''t use it.
  • -v: This gives you ''verbose'' output...in case you want to debug something. If you want you can use it, but in general we won''t.
  • -q: This is the opposite of the above, makes less output. In general we won''t use it but maybe after a while you wold like to.

Mikrovaldiklių tipų aprašymai (komandinėje eilutėje įrašius avrdude -c avrisp programa išves pranešimą apie klaidą bei nurodymą, kad reikia nurodyti mikrovaldiklio tipą, taip pat pridės galimų mikrovaldiklių sąrašą, kurį čia ir kopijuoju):
t10  = ATtiny10
t8   = ATtiny9
t5   = ATtiny5
t4   = ATtiny4
ucr2 = 32UC3A0512
x128a4 = ATXMEGA128A4
x64a4 = ATXMEGA64A4
x32a4 = ATXMEGA32A4
x16a4 = ATXMEGA16A4
x256a3b = ATXMEGA256A3B 
x256a3 = ATXMEGA256A3
x192a3 = ATXMEGA192A3
x128a3 = ATXMEGA128A3
x64a3 = ATXMEGA64A3 
x256a1 = ATXMEGA256A1
x192a1 = ATXMEGA192A1
x128a1d = ATXMEGA128A1REVD
x128a1 = ATXMEGA128A1 
x64a1 = ATXMEGA64A1  
m6450 = ATMEGA6450    
m3250 = ATMEGA3250 
m645 = ATMEGA645
m325 = ATMEGA325  
usb82 = AT90USB82   
usb162 = AT90USB162 
usb1287 = AT90USB1287
usb1286 = AT90USB1286 
usb647 = AT90USB647
usb646 = AT90USB646 
m32u4 = ATmega32U4
t84  = ATtiny84      
t44  = ATtiny44     
t24  = ATtiny24
m128rfa1 = ATMEGA128RFA1
m2561 = ATMEGA2561
m2560 = ATMEGA2560
m1281 = ATMEGA1281
m1280 = ATMEGA1280
m640 = ATMEGA640
t85  = ATtiny85
t45  = ATtiny45
t25  = ATtiny25
pwm3b = AT90PWM3B
pwm2b = AT90PWM2B
pwm3 = AT90PWM3
pwm2 = AT90PWM2
t2313 = ATtiny2313
m328p = ATMEGA328P
t88  = attiny88
m168 = ATMEGA168
m88  = ATMEGA88
m48  = ATMEGA48
t861 = ATTINY861
t461 = ATTINY461
t261 = ATTINY261
t26  = ATTINY26
m8535 = ATMEGA8535
m8515 = ATMEGA8515
m8   = ATMEGA8
m161 = ATMEGA161
m32  = ATMEGA32
m6490 = ATMEGA6490
m649 = ATMEGA649
m3290p = ATMEGA3290P
m3290 = ATMEGA3290
m329p = ATMEGA329P
m329 = ATMEGA329
m169 = ATMEGA169
m163 = ATMEGA163
m162 = ATMEGA162
m1284p = ATMEGA1284P
m644p = ATMEGA644P
m644 = ATMEGA644
m324p = ATMEGA324P
m164p = ATMEGA164P
m16  = ATMEGA16 
c32  = AT90CAN32
c64  = AT90CAN64
c128 = AT90CAN128
m128 = ATMEGA128
m64  = ATMEGA64
m103 = ATMEGA103 
8535 = AT90S8535
8515 = AT90S8515
4434 = AT90S4434
4433 = AT90S4433
2343 = AT90S2343
2333 = AT90S2333
2313 = AT90S2313
4414 = AT90S4414
1200 = AT90S1200
t15  = ATtiny15
t13  = ATtiny13
t12  = ATtiny12
t11  = ATtiny11

Nuorodos:
USBtiny puslapis, kuriame rasite visą informaciją, susįjusią su šiuo programatoriumi, taip pat valdiklius ir schemas. 
Nurodymai, kaip suderinti su AVRStudio 
AVRDUDE pradžiamokslis 
Dar informacijos apie AVRDUDE bei -B naudojimą

AVRDUDE puslapis

Informacija ir schemos paveiksliukas paimti iš http://www.ladyada.net/make/usbtinyisp/index.html

Komentarų nėra:

Rašyti komentarą