Mocna trójka: AVR, USBasp, avrdude
- Szczegóły
- Odsłony: 157200
Spis treści
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).
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.
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...