Kot sem omenil v prednjem postu sem ob popravilu antenske kontrolne enote ugotovil, da mi je poleg ostalega skurilo tudi Attiny26. Na žalost gre za star mikrokontroler, kar spoznaš po tistem ko ga poskušal programirati.

Za programiranje sem preko aliexpress.com naročil:

Po prejetju mikrokontrolerjev, programatorja in podnožja sem prišel do prve dileme, kako vse skupaj povezati. Kolikor se spomnim, smo RX vezali na TX in obratno. Iskal sem po internetu, vendar na žalost za Attiny26 ni veliko napisanega, razen to da ga večina programatorjev ne podpira. Po tednu dni poskusov in neuspehov mi je na koncu uspelo povezati in sprogramirati Attiny26 s programatorjem.

Povezava med programatorjem in Attiny26 je bila sledeča:

programator 1 – MOSI na Attiny26 MOSI – PB0
programator 9 – MISO na Attiny26 MISO – PB1
programator 5 – SCK na Attiny26 SCK – PB2
programator 2 – VCC na Attiny26 VCC
programator 10 – GND na Attiny26 GND
programator 5 – RST na Attiny26 RST – PB7

Imel sem veliko neuspehov in sicer:

  • programiranje Attiny26 mikrokontrolerjev iz Kitajske je bilo v celoti neuspešno
  • Po več neuspelih poskusih programiranja z USBasp sem obupal in iskal rešitev drugje.
  • na podnožju ATtiny26L-8PU -8MU ATtiny26-16PU -16MU DIP20 SOP2, sem nato iz stranskih PIN zamenjal kontakte in priklopil na PINe ob mikrokontrolerju – brez uspeha
  • nakar sem domneval da lahko podnožje moti, ker je imel nameščen oscilator in še nekaj kondezatorjev. Zato sem vse to odstrani – brez uspeha. Kolikor sem razumel je oscilator in kondezator pomemben za primer programiranje brez programatorja – Arduino
  • Nato sem pričel poskuse z Arduino nano. Ta del projekta sem nato po več neuspelih poskusil opustil, saj mi ni uspelo vzpostaviti povezave. Poleg tega se mije Arduino spojil s prstom, ko sem ga tlačil v ploščo. Ob povezanem mikrokontrolerjem z Arduinom tudi nisem mogel programirati Arduina.
  • na koncu sem si kljub gneči popoldanski prebil do IC elektronike https://www.ic-elect.si/, kjer sem kupil še dva nova Attiny26 – katera sta na koncu delovala Hvala IC Elektronika!!!
  • ves čas nisem vedel, kje imam težavo v računalniku, programatorju, programu, driverjih ali mikrokontrolerju, kar je še dodatno povzročalo zmedo. Med delom sem celo dobil pri USBasp uspešno povezavo, ki je takoj naslednjo sekundo izginila.
  • Enako mi v začetku niso hoteli delovati mikrokontrolerji iz IC Elektronike. Zato sem na koncu zamenjal računalnik s starejšim, kjer je zadeva takoj pričela delovati. Ko sem se vrnil za svoj je začelo delovati tudi na mojem. Brez očitnega razloga.

Postopek, ki je deloval:

Precej je pomagala stran https://www.instructables.com/USBASP-Installation-in-Windows-10, kjer sem našel osnovna navodila. Za USBasp sem dobil driverje preko ZADIG inštalacije https://zadig.akeo.ie. Pomembno, sa se izbere driver:

  • libusb-win32

Programator potrebuje svoj program za delovanje, ki se imenuje AVRDUDE – dostopen https://www.nongnu.org/avrdude, download https://mirror.freedif.org/GNU-Sa/avrdude/avrdude-6.3-mingw32.zip – verzija za WIN. V kolikor iščete potem uporabite tale link https://mirror.freedif.org/GNU-Sa/avrdude – vzemite zadnjo verzijo programa. Sam sem najprej namestil manjšo verzijo, vendar po več poskusil, sem pričel posodabljati vse. Zadnja verzija podpira več kontrolerjev in daje tudi več komentarjev ob delu.

Program se enostavno estrahira v direktorij. Nakar se preko CMD gre v direktorij in se ga zažene. Seveda pred tem priklopite USBasp in mikrokontroler. Nato se enostavno zažene ukaz:

avrdude -c usbasp -v -B 4 -p t26 -F

Ukaz pomeni, da zaženemo program AVRDUDE, ki bo uporabil programator USBASP, v pove verzijo, B zmanjša hitrost delovanja komunikacije z mikrokontrolerjem, p pove na kateri mikrokontroler se povezujemo. T26 je oznaka za Attiny26 in F ignorira določen del . Spodnja slika prikazuje neuspele poskuse komunikacije.

In končno uspešna komunikacija:

Za programiranje sem uporabil Microchip studio, dostopen na https://www.microchip.com/en-us/tools-resources/develop/microchip-studio, ki omogoča še bistveno več od mojih potreb. V tem delu sem si pomagal s spletno stranjo: https://www.instructables.com/Programming-Microcontrollers-With-a-USBasp-Program

Ko program naložimo gremo pod Tools – External tools in se nam odpre novo okno:

Kliknemo na add in vpišemo v polja

  • Title: USBasp
  • Command: D:\HOBI\HAM\NACRTI\USBasp\avrdude.exe “lokacija dototeke avrdude”
  • Arguments: -c usbasp -p t26 -B 3 -Uflash:w:”D:\HOBI\HAM\NACRTI\S55O\KONTROLNA ENOTA\EEPROM\v1.2\main.hex“:i “lokacija dototeke kjer je koda”
  • Obkljukamo možnost USE OUTPUT WINDOW

Tudi tukaj sem izgubil nekaj živcev. Ampak bistveno je, da programu poveste, kjer je AVRDUDE in kje imate datoteko. Kot je opisano v zgornjih navodilih (povezava na instructables.com) deluje datoteka za pot -Uflash:w:”$(ProjectDir)Debug\$(TargetName).hex”:i samo v kolikor delate s projektom in ne eno samo datoteko.

Nato odprete datoteko s kodo hex v programu in greste pod Tools, kjer kliknete na ime naporave, ki ste jo dodali. V mojem primeru USBasp.

V kolikor je vse uspešno dobite zgornjo besedilo iz slike in velik nasmešek s strahom ali je res delovalo. V mojem primeru je!!! 🙂

Še malo linkov in opomb:

avrdude -c usbasp -p t26 -F -D – testira povezavo

avrdude -v – pove verzijo AVRDUDE https://github.com/avrdudes/avrdude/releases

https://www.instructables.com/How-to-Program-a-ATtiny-With-Arduino

PROGRAMIRANJE:

Star prenosnik deluje in pri ukazu avrdude -c usbasp -p t26 -v -F -B4 prikaže:

avrdude: Version 6.4
Copyright (c) Brian Dean, http://www.bdmicro.com/
Copyright (c) Joerg Wunsch

     System wide configuration file is "d:\HAM\USBASP\avrdude.conf"

     Using Port                    : usb
     Using Programmer              : usbasp
     Setting bit clk period        : 4.0
     AVR Part                      : ATtiny26
     Chip Erase delay              : 9000 us
     PAGEL                         : PB3
     BS2                           : PB2
     RESET disposition             : dedicated
     RETRY pulse                   : SCK
     serial program mode           : yes
     parallel program mode         : yes
     Timeout                       : 200
     StabDelay                     : 100
     CmdexeDelay                   : 25
     SyncLoops                     : 32
     ByteDelay                     : 0
     PollIndex                     : 3
     PollValue                     : 0x53
     Memory Detail                 :

                              Block Poll               Page                       Polled
       Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
       ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
       eeprom         4    10    64    0 no        128    1      0  9000  9000 0xff 0xff
       flash         33     6    16    0 yes      2048   32     64  4500  4500 0xff 0xff
       signature      0     0     0    0 no          3    1      0     0     0 0x00 0x00
       lock           0     0     0    0 no          1    1      0  9000  9000 0x00 0x00
       lfuse          0     0     0    0 no          1    1      0  9000  9000 0x00 0x00
       hfuse          0     0     0    0 no          1    1      0  9000  9000 0x00 0x00
       calibration    0     0     0    0 no          4    1      0     0     0 0x00 0x00

     Programmer Type : usbasp
     Description     : USBasp, http://www.fischl.de/usbasp/

avrdude: set SCK frequency to 187500 Hz
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x1e9109 (probably t26)
avrdude: safemode: lfuse reads as E1
avrdude: safemode: hfuse reads as F7

avrdude: safemode: lfuse reads as E1
avrdude: safemode: hfuse reads as F7
avrdude: safemode: Fuses OK (E:FF, H:F7, L:E1)

avrdude done. Thank you.

By miha213