Mocna trójka: AVR, USBasp, avrdude

Mocna trójka...Pojawienie się mikrokontrolerów w warsztacie radioamatora stworzyło zupełnie nowe możliwości. Dotyczy to zwłaszcza technik pomiarowych. Choć nie tylko.

W oparciu o materiały z sieci zbudowałem programatory: USBasp (zaległ w szufladzie z braku... programatora) dla AVR'ów (prod. Atmel) oraz Brenner 8P dla PIC'ków (prod. Microchip).Różnią się, ale tylko wyglądem...

Obecnie kupiłem (za kilka zł) USBasp. Pojawiło się pytanie: jaki soft? Po chwili grzebania w sieci - wiedziałem: to będzie avrdude. Choć tekstowy to "mocarny".

Jako pole ćwiczeń w programowaniu mikrokontrolerów i poznawaniu avrdude postanowiłem wykorzystać ATmegę8 do mojej "nieożywionej" jeszcze płytki USBasp'a. :) 

Przekonałem się, że czas spędzony na testach IMO nigdy nie jest czasem straconym.

Opis dotyczy platformy Linux (Ubuntu 15.10) i przeznaczony jest dla "tych co zaczynają" z: AVR, USBasp i avrdude. To raczej ściąga niż poradnik.

Tym, którzy chcą poznać te zagadnienia "od podszewki" szczególnie polecam blog Mirosława (mirekk36), będący kopalnią praktycznej wiedzy (nie tylko) w tej dziedzinie.

Miód na moje serce... :)Zacznijmy... od końca

Mając USBasp miałem potrzebę zaprogramowania "czegoś". Wiadomo, że AVR'a, ale którego?

Wybrałem ATmega8 do "mojego" USBaspa :)) , gdyż:

  • nie tylko projekt jest bardzo dobrze opisany w sieci, to również w większości przypadków (początkujący) użytkownicy nie szczędzą mu pochwał,
  • równie dobrze jest opisana obsługa tego programatora przez program avrdude, więc mogłem poćwiczyć,
  • a także po zaprogramowaniu mikrokontrolera "na gorąco" sprawdzić efekty swoich działań. I korygować błędy, które popełniłem.

 Miałem już mikrokontroler (ATmega8), płytkę PCB, ze strony projektu USBasp pobrałem plik wsadu (usbasp.2011-05-28.tar.gz), avrdude został zainstalowany i tylko pozostało zaprogramować AVR.

Teraz wiem, że to proste, ale wpisaniu poniższej komendy towarzyszyły niemałe obawy:

user@XYZ:~$ avrdude -p m8 -c usbasp -P usb -U flash:w:<sciezka>/usbasp.atmega8.2011-05-28.hex

gdzie w miejsce frazy <sciezka> należy wpisać ścieżkę lokalizacji (gdzie jest) plik wsadu. Następnie wykonałem komendę (ustawiającą odpowiednie wartości tzw. fusebitów):

user@XYZ:~$ avrdude -c usbasp -p m8 -U lfuse:w:0xff:m -U hfuse:w:0xc9:m

Związane to jest z taktowaniem kontrolera zewnętrznym kwarcem 12MHz. Chwila emocji po włożeniu AVR'a do podstawki i podłączeniu układu do PC'ta.

Reakcja diod LED na podłączenie do PC'ta dała nadzieję, że jest dobrze.

Pozytywna weryfikacja obecności urządzenia w systemie to potwierdziła. Zweryfikowanie funkcjonalności programu avrdude i zaprogramowanie (przy pomocy "mojego" programatora USBasp) kolejnej ATmegi8 potwierdziło, że proces programowania przebiegł poprawnie, a programator jest w pełni sprawny.

A potem nastąpiła faza poznawania możliwości programu avrdude, który decyduje o możliwościach wykorzystania programatorów. Bo nie ogranicza się tylko do wyżej wymienionego.

Wiem, że USBasp nie obsłuży wszystkich procesorów AVR, ale (na dziś) moje potrzeby zaspokaja w pełni.

Podobnie avrdude, którego możliwości nie sposób poznać w ciągu godziny, ale warto wiedzieć, że...