(4 głosujących) Artykuł ten ma rozjaśnić programowanie mikrokontrolerów AVR w programie AVRDude, ten darmowy i znakomity program obsługuje wiele programatorów (np. USBAsp, STK200/300, STK500, Bascom SAMPLE Cable itp) a ponadto jest darmowy i pracuje bezproblemowo pod Linuxem i Windowsem, co jest jego ogromną zaletą. AVRDude jest programem konsolowym (tekstowym) jednak posiada wiele nakładek graficznych ułatwiających pracę. 1. Instalacja AVRdude i praca w trybie tekstowymAVRDude pod Windowsem nie wymaga instalacji a jedynie ściągnięcia i rozpakowania archiwum do określonego folderu (najlepiej C:\Program Files\avrdude). Wersja której ja używam (5.5) znajduje się tutaj, natomiast najnowszych wersji można poszukać na stronie http://mirror.lihnidos.org/GNU/savannah/avrdude/ . Pod Linuxem instalacja sprowadza się do zainstalowania specjalnej paczki dla mikrokontrolerów AVR (przynajmniej tak jest pod ArchLinux i Ubuntu). Dalsza część opisu dotyczyć będzie pracy pod Windowsem, gdyż pod systemem Linux ten tryb pracy jest wszystkim dobrze znany a komendy w konsoli dla AVRDude są identyczne. Uruchamiamy konsolę wpisując cmd w linii poleceń (Start->Uruchom) i przechodzimy do folderu w którym mamy AVRDude (domyślnie jest to C:\Program Files\avrdude). Powinno to wyglądać tak: Jesteśmy teraz przygotowani do pracy. Po wpisaniu w konsoli avrdude bez żadnych parametrów program wyrzuca listę dostępnych poleceń: C:\Program Files\avrdude>avrdude Usage: avrdude [options] Options: -p <partno> Required. Specify AVR device. -b <baudrate> Override RS-232 baud rate. -B <bitclock> Specify JTAG/STK500v2 bit clock period (us). -C <config-file> Specify location of configuration file. -c <programmer> Specify programmer type. -D Disable auto erase for flash memory -i <delay> ISP Clock Delay [in microseconds] -P <port> Specify connection port. -F Override invalid signature check. -e Perform a chip erase. -O Perform RC oscillator calibration (see AVR053). -U <memtype>:r|w|v:<filename>[:format] Memory operation specification. Multiple -U options are allowed, each request is performed in the order specified. -n Do not write anything to the device. -V Do not verify. -u Disable safemode, default when running from a script. -s Silent safemode operation, will not ask you if fuses should be changed back. -t Enter terminal mode. -E <exitspec>[,<exitspec>] List programmer exit specifications. -y Count # erase cycles in EEPROM. -Y <number> Initialize erase cycle # in EEPROM. -v Verbose output. -v -v for more. -q Quell progress output. -q -q for less. -? Display this usage. avrdude project: <URL:http://savannah.nongnu.org/projects/avrdude> Wykonujemy teraz proste polecenie pozwalające na sprawdzenie komunikacji między procesorem a komputerem: avrdude -c usbasp -p t2313 Oczywiście uprzednio programator musi być podłączony do komputera a procesor do programatora. Zasilanie całości musi być włączone (procesora i ewentualnie programatora jeśli tego wymaga). Polecenie to nie wgrywa nic do procesora ale odczytuje jego sygnaturę, co pozwala sprawdzić czy komunikacja przebiega prawidłowo. Składnia tego polecenia wygląda następująco: avrdude -c {programator} -p {typ procesora} Nazwy kodowe procesorów i programatorów jakie obsługuje AVRDude przedstawione są na końcu tego rozdziału. Gdy programator jest podłączony do komputera i procesor ma podłączone zasilanie to powinniśmy otrzymać następujący wynik: avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e910a avrdude: safemode: Fuses OK avrdude done. Thank you. gdy natomiast występuje problem z komunikacją to dostaniemy następujący komunikat: avrdude: error: programm enable: target doesn't answer. 1 avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x000000 avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check. Jeśli otrzymujesz dowolny komunikat o błędzie to nie wykonuj dalszych poleceń bo jest to bez sensu. Jeśli natomiast wszystko przebiega zgodnie z opisem to można przystąpić do wgrywania programu to mikrokontrolera. Odczyt programu z pamięci mikrokontrolera do pliku *.hex następuje po wykonaniu polecenia: avrdude -c usbasp -p t2313 -U flash:r:program.hex Natomiast zapis programu z pliku *.hex do pamięci mikrokontrolera dokonujemy za pomocą: avrdude -c usbasp -p t2313 -U flash:w:program.hex Możliwe jest jeszcze ustawienie fusebitów z poziomu konsoli tekstowej ale nie zalecam tej metody(o wiele łatwiej dokonać tego w programie graficznym) gdyż nie jest to zadanie dla początkujących. Jednak gdyby ktoś bardzo chciał to można dokonać ustawień za pomocą komendy: avrdude -c usbasp -p t2313 -U hfuse:w:0x{wartość}:m -U lfuse:w:0x{wartość}:m Gdzie pola wartość to liczby heksadecymalne przedstawiające stan rejestrów hfuse i lfuse mikrokontrolera. Wartości te można obliczyć na podstawie karty katalogowej mikrokontrolera(ale to tylko dla ambitnych) Poniżej przedstawione są programatory obsługiwane przez AVRDude: dasa3 = serial port banging, reset=!dtr sck=rts mosi=txd miso=cts oraz nazwy procesorów używane przez AVRDude: m6450 = ATMEGA6450 2. Instalacja i Konfiguracja Burn-O-Mat'aAVRDude jest bardzo dobrym programem jednak jego obsługa z poziomu konsoli tekstowej może wydawać się skomplikowana. Dlatego wykorzystuje się nakładki graficzne na AVRDude (programy generujące polecenia dla AVRDude) ułatwiające pracę z tym programem. Jedną z nich jest Burn-O-Mat, polecam go ponieważ obsługa jest bardzo intuicyjna a ustawienia Fusebitów banalne. Program można pobrać tutaj. Znajduje się tam wersja w postaci instalatora Windows albo spakowany program w formacie *.zip (Ta wersja działa również pod Linuxem a uruchamianie następuje poprzez znajdujący się tam skrypt powłoki, lub bezpośrednio z konsoli za pomocą Java). Program Burn-O-Mat napisany jest w Javie, więc wymaga zainstalowania pakietu JRE (http://java.sun.com/javase/downloads/index.jsp). Po zainstalowaniu lub wypakowaniu programu, uruchamiamy go, powinno to wyglądać jak na rysunku poniżej:
Ustawień programu, jak już wcześniej mówiłem dokonujemy wybierając z menu Settings->AVRDUDE, musimy tego dokonać zanim przystapimy do programowania. Okno ustawień wygląda następująco:
W oknie głównym programu za pomocą przycisku Fuses przechodzimy do ustawień fusebitów (bitów konfiguracyjnych) mikrokontrolera. Widzimy następujące okno: U góry okna począwszy od lewej mamy przyciski umożliwiające: Odczyt fusebitów (read fuses), Zapis fusebitów (write fuses), weryfikacje ustawień (verify fuses) oraz Reset do wartości domyślnych (reset to default). Poniżej znajdują się zakładki umożliwiające ustawienie Fusebitów różnymi sposobami, nas bedzie interesowała pierwsza zakładka (Fuse Editor) pozwalająca konfigurować pojedyńcze bity i ewentualnie druga (Fuse Hex Editor) pozwalająca wpisywać wartości szesnastkowo. Zakładki te są ze sobą powiązane i zmiana wartości w jednej zmienia wartości w drugiej. Na zakładce pierwszej widzimy tabelkę z pojedyńczymi bitami, tych zaznaczonych na czerwono nie można przestawiać, gdyż nieumiejętne wpisanie złej wartości może zablokować dalszą możliwość programowania procesora (zmiana trybu Mode:normal na Mode:expert u góry okna pozwala ustawiać wszystko). Tabela z bitami konfoguracyjnymi jest dla każdego mikrokontrolera inna a dokładny opis wszystkich bitów znajduje się w karcie katalogowej danego mikrokontrolera. Podstawowe ustawienia dla najczęściej używanych mikrokontrolerów przedstawiłem w opisie tutaj. Należy pamiętać że zaprogramowany bit to bit o wartości 0, czyli zaznaczenie "ptaszkiem" bitu nadaje mu wartość 0 (jest to napisane w programie pod tabelką). Dla przykładu gdy mamy ustawić np. CKSEL=0100, SUT=10 i CKDIV8=0 to znaczy że zaznaczmy bity CKSEL0, CKSEL1, CKSEL3, SUT0, CKDIV8 a odznaczmy CKSEL2 i SUT1 (widok powyżej na zdjęciu) Konfigurację Fusebitów dobrze jest wykonać w następującej kolejności: Najpierw odczytujemy wcześniejsze ustawienia za pomocą przycisku read fuses, potem jeśli operacja nie wygeneruje błędów to ustawiamy żądane wartości, na samym końcu klikamy write fuses. Należy pamiętać, że jeśli ustawimy sobie taktowanie (za pomocą bitów CKSEL) z zewnętrznego rezonatora kwarcowego to po kliknięciu write fuses procesor nie ruszy dopuki nie podłączymy takiego kwarca. 3. Konfiguracja Bascom AVR do współpracy z AVRDudePod Windowsem istnieje możliwość współpracy programu Bascom AVR z AVRDude. Aby to zrobić wykonujemy następujące czynności. Aby to zrobić wchodzimy do ustawień programatora w Bascomie (Options->Programmer). Okno ustawień powinno wyględać jak na rysunku poniżej: W polu Programmer wybieramy Extrenal programmer. W części Other w polu Program wybieramy scieżkę do AVRDude, w polu Parameter wpisujemy: "avrdude" -p m8 -c usbasp -U flash:w:"{FILE}":a -U flash:v:"{FILE}":a oczywiście m8 jest typem aktualnie programowanego mikrokontrolera, a zamiast usbasp musimy podać nazwę naszego programatora (analogicznie jak jest to opisane w rozdziale pierwszym). Drobną niedogodnością jest konieczność przestawiania w opcjach Bascom'a typu mikrokontrolera na ten który aktualnie programujemy za każdym razem kiedy piszemy program pod inny mikrokontroler niż ostatnio, oraz tym sposobem nie są programowane Fusebity ani pamięć EEPROM mikrokontrolera. Mimo wszystko taka konfiguracja jest bardzo przydatna podczas testów nad nowym projektem, lub gdy programujemy płytke testową (wielokrotne programowanie tylko pamięci programu), bo pozwala w kilka sekund wrzucić program do procesora nie wychodząc z okna Bascoma (tylko na początku trzeba ustawić Fusebity w Burn-O-Mat).
|
|||
Re: Usbasp
Nie nalezy grzebać w fusach jak juz zostały ustawione. Co do zasilania to zalezy od schematu całości ale raczej zworka zasilania w programatorze powinna zostac usunięta a cały robot zasilany ze swojego źródła.
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Witam A czy wersje AVRdude i
Witam
A czy wersje AVRdude i Burn-o-mat dostępne do pobrania w tym artykule umożliwiają programowanie Atmegi 128A? Nie jest ona wyszczególniona "AVR type" a mam problem z połączeniem. Zastanawiam się czy to jest ten powód czy może jest problem ze sterownikami USBasp.
Re: Avrdude
Ściągnij najnowszego avrdude, działa na pewno z softem do USBASPa z 2006 roku który polecam w opisie. Sterowniki w systemie to raczej nie to bo one tylko komunikację zapewniają. Programowanie jest zrobione w usbaspie. Możesz też spróbowac wgrać najnowszy soft do prograatora
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Problem z USBasp pod linuxem
Witam,
mam mały problemik z moim usbasp pod linuxem:( Zainstalowałem sobie avrdude i po wywołaniu polecenia
root@Master:~# avrdude -c usbasp -P USB -p t2313 -F
Otrzymałem wynik .....
avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for ATtiny2313 is 1E 91 0A
avrdude done. Thank you.
Pragnę zaznaczyć iż moja attyny2313 jest poprawnie podłączona, co jest przyczyną takiego działania?:(
Re: Usbasp
Może być:
-Brak zasilania procka programowanego
-Brak zwarcia zworki slow sck dla nowego procka
-Błąd w podłączeniu, brak masy itp
-Brak kwarcu jeśli procek pracował wcześniej z kwarcem
Ps. Wywal opcję -P i -F bo nigdy tego nie używałem. Nic to nie zmieni ale wydaje mi się że nie jest potrzebna
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
bascom, burn-o-mate i fuse bity
powyżej jest napisane:
czy Fuse Bity muszą być ustawiane zawsze przed programowaniem układu w Bascomie czy można zaprogramować je na końcu? Nie chciałbym "zawiesić" avr-ka
Re: Fusebity
Chodzi tu o to że skonfigurowany w ten sposób bascom do współpracy z avrdude nie pozwala zapisac fusebitów i trzeba sobie je na samym początku ustawić w procku, który chcesz programować. Fusebity nie muszą być ustawione na początku ale bezsensem jest programowac procka na innych ustawieniach niż program się spodziewa, a poza tym na nieustawionych fusach programowanie idzie wolno
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
HVSP przez LPT w AVRDUDE?
Witam,
A ktoś przerabiał może prosty programator DAPA (na 3ech opornikach działa),
na taki obsługujący HVSP?
dragon_hvsp AVR Dragon in high-voltage serial programming mode
dragon_isp AVR Dragon in ISP mode
z avrdude.conf jest coś takiego:
# AVR Dragon in HVSP mode
programmer
id = "dragon_hvsp";
desc = "Atmel AVR Dragon in HVSP mode";
baudrate = 115200;
type = dragon_hvsp;
;
# AVR Dragon in ISP mode
programmer
id = "dragon_isp";
desc = "Atmel AVR Dragon in ISP mode";
baudrate = 115200;
type = dragon_isp;
;
Dla porównania DAPA poprzez LPT ma taki opis:
programmer
id = "dapa";
desc = "Direct AVR Parallel Access cable";
type = par;
vcc = 3;
reset = 16;
sck = 1;
mosi = 2;
miso = 11;
;
Wiem jakie piny w ATTiny45 są potrzebne do HVSP -jeden więcej jak do zwykłego SP na DAPA poprze LPT...
Ktoś programował w AVRDude poprzez LPT w trybie HVSP?
PS: Chciałbym pin RESET w ATTiny45 przestawić na output....
Aneuro.
Kłopoty z USBasp i Ubuntu 12.04 LTS
Witam,
Po wpisaniu w terminalu
# avrdude -c usbasp -p t2313 -F
Otrzymałem wynik :
Nie wiem co jest grane :(
A tutaj zdjęcia mojego usbasp-a
I po problemie :)
W zakupionym usbasp była odwrotnie zaciśnięta tasiemka :)
FUSY
:) dobra instrukcja , jak wszytko tutaj :).
Z fusami to jest jak z tymi w kawie i wróżeniem z nich, :) trzeba się na tym znać, mnie się zdarzyło wgrać złe fusy, i procek odmówił posłuszeństwa, ale nie mając innego, walczyłem o niego, i zrobiłem rezonator regulowany z kondensatora i potencjometru. Udało się odzyskać świadomość mojego procka i od tamtej pory sprawdzam 5 razy zanim noś nacisnę.
MULTI
ATtiny 2313 nie mogę zaprogramować.
Witam jestem nowicjusz to mój pierwszy program jaki chciał bym wgrać do ATtiny 2313.
$regfile = "attiny2313.dat" 'najpierw określamy typ proca
$crystal = 8000000 'definiujemy z jakim taktowaniem będzie pracował
Config Portb = Input 'port b jako wejścia
Portb = &B00000000 'wszędzie stan spoczynkowy-0
Config Portd = Output 'pprt d jako wyjścia
Portd = &B0000000 'wszędzie stan spoczynkowy-0
Do 'pętla nieskończona
If Pinb.0 = 1 Then 'jeżeli przycisk 1 wciśnięty
Waitms 30 'czekaj
Portd.0 = 1 'zaświeć diodę
Wait 2 'czekaj dwie sekundy
Portd.0 = 0 'zgaś diodę
End If 'koniec bloku warunkowego
Loop 'koniec pętli
End 'koniec progra
Używam programu Bascom AVR2.0.5.0 ,programator ZL20PRG oraz zestaw uruchomieniowy ZL10AVR.
Potwierdzam jaki jest w układzie Chip,ładuje plik *bin,następnie "Bufor->Loard From File",Chip -> Autoprogram i
pojawia się komunikat Difference at00000.Program nie został załadowany,pierwsza próba i niepowodzenie proszę o jakąś podpowiedź.
RE: Bascom
Wogóle to nie w temacie piszesz. Bascom obsługuje ten programator czy używasz go za pośrednictwem avrdude? Co masz wybrane w konfiguracji programatora?
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
atmega1284
Hej Mirku znowu mam problem i mam nadzieje że mi pomożesz. Mam rozbudowany projekt i potrzebna mi większa Atmega. Więc kupiłem atmege1284 i przy próbie komunikacji z nią wyskakuje mi w avrdude błąd z sygnatura zdążyłem doczytać że plik config nie obsługuje tej atmegi czy możesz coś poradzić. Znalazłem na elektrodzie info http://www.elektroda.pl/rtvforum/topic2417240.html#11506261 ale w żaden sposób nie wiem jak to ugryźć.
Re: avrdude
Ktoś podał tam link do pliku konfiguracyjnego avrdude. Edytuj ten plik i wrzuć konfigurację nowego procka (wklej kod w odpowiednie miejsce wzorując się na innych prockach), reszta powinna już zadziałać. Ewentualnie spróbuj znaleźć nowszego avrdude
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
...
Udało mi się zaprogramować lecz artykuł trochę pokręcony, ale i tak dzięki Mirku.
Co cie nie zabije to cie wzmocni(nie dotyczy kondensatora 400V w zasilaczu impulsowym).
Mam problem. W najnowszej
Mam problem. W najnowszej wersji AVRdude nie ma plików avrdude.exe i avrdude.conf przez co nie mogę skonfigurować nakładki graficznej natomiast download który ty podałeś ma tylko te pliki.
Pozdrawiam.
Re: Avrdude
Którą masz wersję tego avrdude?
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
6.0
6.0
Re: Avrdude
Niestety nie pomogę bo sam utknąłem przy wersji coś 5.X i tam mam normalny config..... jest jakaś konieczność używania wersji 6.0 w twoim przypadku?
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Już program działa jak należy
Już program działa jak należy tylko nie widzi programatora. Mam USBasp: http://www.elektroda.pl/rtvforum/viewtopic.php?t=2570991. Sterowniki wgrałęm najnowsze tak że Windows widzi programator a program wyrzuca kod błędu vid=0x16c0 pid=0x5dc, nie iwem co może być nie tak.
USBasp
W bascomie zauważyłem iż zamiast łączyć z avrdude można bezpośrednio ustawić w sekcji programmer USBASP aczkolwiek za każdym programowaniem jak dobrze zwróciłem uwagę to trzeba zmienić częstotliwość taktowania procesora przez nas programowanego. Czy mam rację?? Jeśli nie to będę wdzięczny za objaśnienie. :)
Re: USBASP
Wgrałeś soft oryginalny czy jakiś modyfikowany... może się różnić parametrami w sofcie i masz inny pid i vid
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Re: Re: USBASP
soft jest normalnie ze strony http://www.fischl.de/usbasp/ Jest to wsad z 28 maja 2011r. oraz nowy bascom.
Re: USBASP
Tak szczerze mówiac to tylko raz w zyciu włączyłem w bascomie opcję usbasp.... działała źle. Od tej pory zawsze używam avrdude
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
USBASP
poczytałem ogólnie i jest że to właśnie najlepiej działa z wsadem z maja 2011 bo reszta nie jest kompatybilna z bascomem
prawie zielony
przeleciałem kilkedziesąt stron i nie mogę się zdecydować na programator aby bez problemu działał w AVRDUDE -
czy możecie mi doradzić (oczywiście cena w ramach kieszeni gimnazjalisty)...
Odp. prawie zielony
Programator AVR USBasp kosztują w okolicach 20zł. Każdy program je obsługuje. Jeśli możesz wybierać to zakup wersję która potrafi tez pracować przy 3,3V
Miłego dnia
BARTek
Moja strona
Witam. Mam do was
Witam.
Mam do was pytanie.
Czym programujecie atmeg328 ?
Re: Avrdude
Tak samo jak wyżej tylko wpisujesz
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.