Autor: tmf
Jakiś czas temu obiecałem pokazać w jaki sposób połączyć Atmel Studio z programatorami, których ono bezpośrednio nie wspiera, czyli np. popularnym USBasp czy USBTiny. Połączenie takie w pewnym stopniu jest możliwe, jednak zdecydowanie je odradzam. Dlaczego?
W wielkim skrócie:
- zwykle tanie programatory (te w cenie 20-40 zł) nie posiadają translatora poziomów logicznych, w efekcie nie współpracują poprawnie z układami zasilanymi napięciami poniżej 3,3V,
- są wolne. Programatory Atmela i ich klony potrafią programować układ kilka-kilkanaście razy szybciej niż np. USBasp Jeśli piszemy programy o długości do paru kB prawdopodobnie nie ma to znaczenia, ale czas ładowania wsadu za pomocą USBasp o długości 50 i więcej kB może być naprawdę długi.
- o ile integracja z IDE Atmela niefirmowych programatorów jest możliwa, to z pewnych funkcji nie będziemy mogli skorzystać. Głównie chodzi tu o możliwość wygodnej zmiany fusebitów przy pomocy graficznego kreatora dostępnego w IDE, dzięki czemu szansa na ich błędne ustawienie jest minimalna.
- możliwość używania plików produkcyjnych w formacie elf. Jest to o tyle faje, że nie musimy generować plików hex (co dodatkowo zajmuje czas podczas kompilacji), a przede wszystkim w jednym pliku mamy dane dla FLASH, EEPROM, a także konfigurację fuse- i lockbitów plus cokolwiek jeszcze zechcemy. Niestety popularny avrdude nie współpracuje z plikami w formacie elf (może się to zmieni).
- programatory bezpośrednio wspierane przez Atmel Studio lepiej się z tym IDE integrują, w efekcie praca z nimi jest zdecydowanie przyjemniejsza i łatwiejsza.
- popularny USBasp nie wspiera wszystkich rodzin AVR, można nim programować tylko układy wyposażone w interfejs ISP, układy używające interfejsu PDI (np. XMEGA) lub dW/TPI są dla nas niedostępne (niektóre ATTiny).
Oczywiście to nie oznacza, że zaraz musimy kupować drogie, oryginalne narzędzia firmy Atmel. Oryginalny programator AVRISP-MkII kosztuje prawie 200zł, przy tej cenie lepiej dodać niecałe 50zł i za 249 zł kupić AVR Dragon, który umożliwia także sprzętowe debugowanie układów Atmela. Na szczęście do dyspozycji mamy różne klony AVRISP-MkII, dostępne w cenie 60-70zł, czyli w miarę przystępnej.
Dlaczego warto kupić klon AVRISPMkII, a nie tańszy (cena około 20zł) USBasp?
Przede wszystkim nawet najtańszy klon zawiera dodatkowy bufor i translator poziomów, dzięki czemu możemy programować układy zasilane od 1,8V. Wbrew pozorom ta możliwość staje się co raz ważniejsza, gdyż wiele ciekawych układów i modułów zasilana jest maksymalnie z 3,3V. Klony posiadają też sprzętowy interfejs USB, dzięki czemu działają pewniej, a proces programowania jest zdecydowanie szybszy.
Warto jednak zwrócić uwagę na dostawcę układu. Klony zwykle nie współdziałają z oryginalnym firmware Atmela (posiadają swój własny), który jest kompatybilny na poziomie interfejsu z firmware Atmela.
Ponieważ okresowo (np. przy kolejnych wydaniach Atmel Studio) mogą być wymagane uaktualnienia firmware warto więc wybrać firmę, która takie uaktualnienia nam zapewni.
Ponieważ okresowo (np. przy kolejnych wydaniach Atmel Studio) mogą być wymagane uaktualnienia firmware warto więc wybrać firmę, która takie uaktualnienia nam zapewni.
Klon AVRISP-MkII można sobie także złożyć samemu – np. wg schematów umieszczonych na blogu kolegi Manekinen: Programator USBTiny-MkII SLIM
Cena 60-70zł złotych pozornie jest 3-krotnie wyższa niż USBasp, jednak jeśli chcemy kupić naprawdę porządnie wykonane USBasp, z translatorem poziomów to też musimy liczyć się z wydatkiem 40-50zł. No i USBasp nie programuje wszystkich mikrokontrolerów firmy Atmel (np. nie programuje XMEGA), natomiast klon AVRISP-MkII programuje wszystkie układy.
Jak „ożenić” USBasp i Atmel Studio?
Ok, skoro czytasz dalej, to rozumiem, że moja argumentacja cię nie przekonała. Co więc zrobić? Jak się nie ma co się lubi, to się lubi co się ma, spróbujmy więc jakoś „ożenić” USBasp i Atmel Studio.
Aby współpraca była możliwa, Atmel Studio będzie wywoływał zewnętrzny program kontrolujący sprzętowy programator. Takim programem do którego większość użytkowników USBasp przywykła jest zapewne avrdude. Zakładam więc dalej, że masz poprawnie skonfigurowany programator (jest widoczny w systemie operacyjnym), masz zainstalowane avrdude i avrdude jest w stanie komunikować się z programatorem. Jeśli tak, to pozostaje ostatni element układanki, czyli konfiguracja Atmel Studio.
Konfiguracja Atmel Studio
Nadszedł więc czas na uruchomienie Atmel Studio. Niezależnie, czy mamy wersję 5.x (niezalecana), czy 6.x (zalecane 6.1 lub wyższe) konfiguracja przebiega podobnie.
Z menu Tools wybieramy opcję External tools tak jak to pokazano na poniższym rysunku:
Pojawi nam się okienko takie jak pokazane poniżej:
Okno to umożliwia konfigurację dowolnego zewnętrznego narzędzia, które będziemy mogli wywołać następnie z menu lub z listwy przycisków. W ten sposób możemy dodać nie tylko obsługę zewnętrznego programatora, lecz także możliwość wywołania dowolnego zewnętrznego programu.
Mając otwarte powyższe okienko przystępujemy do konfiguracji opcji wywołania zewnętrznego programu. W tym celu uzupełniamy pola Title, Command, Arguments oraz Initial directory.
Mając otwarte powyższe okienko przystępujemy do konfiguracji opcji wywołania zewnętrznego programu. W tym celu uzupełniamy pola Title, Command, Arguments oraz Initial directory.
- W polu Title wpisujemy po prostu nazwę, która będzie identyfikowała dodawane narzędzie. Może to być np. USBasp.
- W polu Command wpisujemy ścieżkę do wywoływanego programu (w naszym przypadku jest to avrdude.exe). Ścieżka ta może być ścieżką bezwzględną – zawierającą całą ścieżkę dostępu, moożemy ograniczyć się do wpisania samej nazwy programu, jeśli dostęp do niego określony jest w zmiennej środowiskowej PATH (znajduje się on w domyślnej ścieżce wyszukiwania).
- W polu Arguments podajemy argumenty wywołania programu avrdude – analogicznie jakbyśmy go wywoływali z linii poleceń. W przypadku, kiedy ścieżki do plików hex zawierają spacje całą ścieżkę należy ująć w znak cudzysłowia, w przeciwnym przypadku spacje separujące elementy ścieżki zostałyby przez program avrdude potraktowane jako oddzielne argumenty i wywołanie zakończyłoby się błędem. W polu Arguments możemy wpisać nazwy plików wynikowych w formacie IntelHEX, musimy określić typ mikrokontrolera oraz sposób komunikacji z programatorem.
Po kolei więc, najpierw sposób połączenia i typ mikrokontrolera:
-e -P usb -c USBasp -p Atmega16
W naszym przypadku użyliśmy mikrokontrolera ATMega16, taki więc typ przekazujemy jako wywołanie avrdude.
Niestety Atmel Studio używa innych nazw mikrokontrolerów, niż nazwy rozpoznawane przez avrdude, w efekcie jeśli zmienimy typ mikrokontrolera użytego w projekcie, musimy zmienić ręcznie opcje wywołania programu avrdude.
Jest to pewną uciążliwością, ale niewielką – rekonfiguracji musimy dokonać tylko wtedy, gdy zmieniamy typ użytego mikrokontrolera. Warto wspomnieć, że jeśli korzystamy z narzędzi w pełni współpracujących z Atmel Studio to typ procesora pobierany jest automatycznie z opcji projektu.
Teraz pozostaje jeszcze tylko określenie czym zaprogramujemy mikrokontroler, dodajemy więc „magiczne zaklęcie”:
-e -U flash:w:$(ProjectDir)Release\$(ItemFileName).hex:a
Dlaczego magiczne? Ścieżkę i nazwy plików możemy ustawić na stałe, jednak zmieniając nazwę projektu lub jego lokalizację musielibyśmy je za każdym razem zmieniać. Środowiska oparte o Visual Studio posługują się kilkoma zmiennymi, które zawierają opcje projektu, a także jego nazwę i ścieżki w których zapisane są pliki projektu. Stąd też makro ProjectDir zawiera ścieżkę do projektu, a makro ItemFileName zawiera jego nazwę. Wystarczy do niej dodać rozszerzenie hex lub eep, aby mieć nazwę pliku, którym możemy zaprogramować mikrokontroler.
Ponieważ ścieżka dostępu do pliku wynikowego zależy od celu z jakim budujemy projekt (domyślne cele to Debug lub Release), musimy odpowiedni podkatalog dodać ręcznie. Jeśli budujemy określając cel Release będzie to podkatalog Release, jeśli celem będzie Debug, to podkatalogiem będzie Debug, np.:
-e -U flash:w:$(ProjectDir)Debug\$(ItemFileName).hex:a
W okienku konfiguracji wywołania programu zewnętrznego znajdziemy jeszcze ciekawe opcje: Use Output Window, Prompt for arguments i Close on exit. Opcje te czasami warto zaznaczyć.
Use Output window powoduje otwarcie okna konsoli podczas wywołania avrdude, w efekcie mamy podgląd na to co się dzieje, ma to szczególne znaczenie, jeśli po skonfigurowaniu narzędzia coś nie działa jak należy.
Z kolei Prompt for arguments powoduje wyświetlenie zapytania o argumenty wywołania za każdym razem, kiedy wywołujemy avrdude. Jest to opcja na dłuższą metę uciążliwa, lecz przydaje się na początku konfiguracji. W ten sposób przed wywołaniem avrdude widzimy jak został skonstruowany wiersz wywołania i czy jest on poprawny. Opcja ta przydaje się też w sytuacji, kiedy często zmieniamy typ mikrokontrolera.
Warto także odznaczyć opcję Close on exit – dzięki temu po wywołaniu avrdude i zaprogramowaniu MCU okienko avrdude pozostanie otwarte, a my będziemy widzieć rezultat programowania.
Use Output window powoduje otwarcie okna konsoli podczas wywołania avrdude, w efekcie mamy podgląd na to co się dzieje, ma to szczególne znaczenie, jeśli po skonfigurowaniu narzędzia coś nie działa jak należy.
Z kolei Prompt for arguments powoduje wyświetlenie zapytania o argumenty wywołania za każdym razem, kiedy wywołujemy avrdude. Jest to opcja na dłuższą metę uciążliwa, lecz przydaje się na początku konfiguracji. W ten sposób przed wywołaniem avrdude widzimy jak został skonstruowany wiersz wywołania i czy jest on poprawny. Opcja ta przydaje się też w sytuacji, kiedy często zmieniamy typ mikrokontrolera.
Warto także odznaczyć opcję Close on exit – dzięki temu po wywołaniu avrdude i zaprogramowaniu MCU okienko avrdude pozostanie otwarte, a my będziemy widzieć rezultat programowania.
Warto zwrócić uwagę na przyciski z trójkącikami przy linii Arguments i Initial Directory. Jeśli je klikniemy ukaże nam się lista wyboru:
Lista ta zawiera dostępne dla nas makra, takie jak np. wspomniane wcześniej makro ProjectDir (opcja Project Directory). W efekcie możemy łatwo wstawiać dowolne makra do linii poleceń.
Konfiguracja menu
Musimy jeszcze udostępnić nowe narzędzie. W tym celu klikamy ponownie na Tool, a następnie wybieramy Customize. W pojawiającym się okienku dodajemy nowy obszar na listwę narzędzi (toolbar) wybierając New, a następnie określając nazwę nowego obszaru. Nazwa może być dowolna, my użyjemy nazawy "USBasp":
Dodaliśmy nowe pole do listwy narzędziowej, musimy jeszcze dodać samo narzędzie. W tym celu wybieramy zakładkę Commands, klikamy na opcję Toolbar i wybieramy pozycję o nazwie, pod którą chcielibyśmy identyfikować nasz programator (możemy znowu wybrać "USBasp"):
Teraz możemy polecenie powiązać ze zdefiniowanym wcześniej wywołaniem programu klikając na Add Command, a następnie wybierając w pojawiającym się oknie opcję Tools i External Command 1 – pod tą enigmatyczną nazwą kryje się nasze zdefiniowane wcześniej polecenie:
I to tyle, na listwie pojawi się nowa sekcja zawierająca skrót do naszego programu. W ten sposób możemy programować nie opuszczając IDE, lecz niestety w ten sposób nie zmusimy do działania z naszym programatorem kreatora konfiguracji Atmel Studio.
Testowanie konfiguracji
W menu Tools pojawiła nam się nowa pozycja:
Klikając na nią możemy wywołać zdefiniowane wcześniej polecenie, możemy to samo uczynić klikając na listwę narzędziową:
W efekcie zostanie wywołane avrdude. Jeśli podczas konfiguracji narzędzi zaznaczyliśmy opcję podawania argumentów przed wywołaniem programu, to pojawi nam się okienko:
Widzimy w nim argumenty, które sami określiliśmy (Arguments), a poniżej Command Line, czyli to co dokładnie zostanie przekazane w linii poleceń. Widzimy, że makra typu ProjectDir zostały zastąpione odpowiednimi ścieżkami dostępu. Dzięki temu możemy łatwo określić, gdzie leży ewentualny błąd wywołania programu avrdude.
I to właściwie tyle, mamy zintegrowane USBasp z naszym projektem i możliwość jego łatwego wywoływania. W kolejnej części poznamy niektóre zalety programowania programatorami bezpośrednio wspieranymi przez IDE.
Artykuł jest częścią cyklu: Atmel Studio - Spis treści
No nareszcie! Trzeba było to opisać rok temu. Teraz będzie wygodniej, niż przełączanie Alt-Tab na Burn-O-Mat. Dzięki!
OdpowiedzUsuńDziękując za ten artykuł zapytuję, czy planujecie opisać symulator i debugowanie? To istotne funkcjonalności odróżniające AS od innych narzędzi.
OdpowiedzUsuńJa także dziękuję i przyłączam się do pytania powyżej.
OdpowiedzUsuńUSBasp ma możliwość programowania przez TPI. Trzeba tylko zaktualizować firmware z oficjalnej strony do najnowszej wersji.
OdpowiedzUsuńOczywiście, debugger i symulator to podstawowe zalety Atmel Studio. Więc w kolejnych cyklach się ich opis pojawi. Nie tylko tego zresztą, bo AS ma wiele innych, naprawdę fajnych rzeczy.
OdpowiedzUsuńWitam, zrobiłem wszystko według instrukcji, jednak jest problem podczas próby zapisania programu na AVR.
OdpowiedzUsuńW oknie Output widzę, że avrdude.exe podłaczyło sie pod moją Atmege32, usunęło stary program, ale ma problem z otwarciem pliku.hex :
" error opening (ścieżka) Invalid argument" a potem:
"input file (ścieżka) auto detected as invalid format".
Ścieżka do pliku.hex jest poprawna, Burn-O-Mat nie ma żadnych problemów z wgraniem tego samego pliku. Kopiowanie argumentów z burn-O-Mata również nie pomaga. Wiecie gdzie leży problem?
Miałem ten sam problem i pomogła taka zamiana:
Usuń-e -U flash:w:”$(ProjectDir)Release\$( ItemFileName).hex”:a
na
-e -U flash:w:$(ProjectDir)Release\$(ItemFileName).hex:a
czyli usunięcie cudzysłowia.
Wersja bez "" wysypie się jeśli w ścieżce będą spacje.
UsuńW linux-ie w terminalu przed spacją można stosować '\' (backslash), po za tym może zamiast "" użyj '' (apostrofów), nie testowałem, dopiero zaczynam przygodę z mikrokontrolerami. Na razie kupiłem programator USBASP, następny to raczej będzie AVR ICE ale czas pokaże.
UsuńA jak wygląda cała linia polecenia avrdude?
OdpowiedzUsuńUdało mi się to naprawić, trochę namieszałem, bo nie wiem co robią poszczególne argumenty. Moja linia argumentów:
OdpowiedzUsuń" C:\AVRdude\avrdude.exe -C C:\AVRdude\avrdude.conf -p m32 -P usb -c usbasp -U flash:w:"$(ProjectDir)Debug\$(ItemFileName).hex":i "
To jak to jest z tym TPI i USBasp, o którym pisał anonimowy o 12:43?
OdpowiedzUsuńCiekawą alternatywą dla definiowania skrótu do programowania przez avrdude (a może nie tyle alternatywą, co opcją równoległą) jest dodanie wgrania programu jako Post-build Event (PPM na projekt->Properities->Build Events->Post-build event command line),
OdpowiedzUsuńprzykład obrazkowy: http://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-ash4/391414_582854961748568_1531319122_n.jpg
Dzięki czemuś takiemu, od razu po kompilacji, program (w moim przykładzie łącznie z EEPROMem)zostaje wgrany do układu np. po użyciu skrótu F7 (Build Solution).
Rozwiązanie ma też swoje wady, ale do takiej "codziennej" pracy dość wygodne (w końcu i tak, żeby sprawdzić czy to co zrobiliśmy działa, musimy wgrać do układu docelowego).
PS. Nowy firmware USBasp rzeczywiście obsługuje TPI, a wersje nieoficjalne również i PDI (choć wymagają dołączenia kilku elementów zewnętrznych - na elektrodzie można znaleźć opis.
Oczywiście można dodać programowanie jako post-build event, ale nie jest to zbyt wygodne. Dlaczego? Bo po każdej kompilacji nowy wsad ląduje w MCU. Szczególnie przy większych projektach, ale nie tylko, kompilacje robi się często, aby sprawdzić poprawność składni. Poza tym równie często odpala się symulator, dla prześledzenia działania programu, w efekcie ładowanie nowego wsadu niekoniecznie jest pożądane. Można oczywiście sobie zrobić nowy target, ale to tak samo wymaga zmiany.
OdpowiedzUsuńCo do TPI i PDI. Problemem z tymi interfejsami jest ich niekompatybilność elektryczna z ISP opartym na SPI. W TPI i PDI mamy dwukierunkową linię danych. O ile avrdude istotnie może wspierać TPI (takie wsparcie pojawiło się 2-3 lata temu), to nie każdy usbasp będzie z tym działał. W szczególności trzebaby połączyć razem przez rezystory linie MISO i MOSI i wyprowadzić jako wspólną linię Data. Tu znowu widać przewagę oryginalnych (lub klonów) narzędzi Atmela. Co do PDI - istotnie pojawiła się informacja o możliwości jego realizacji w oparciu o drobne przeróbki elektryczne, ale różnie to działa. Ja bym to traktował jako ciekawostkę. Dodatkowym problemem w przypadku XMEGA i PDI jest to, że 3,3 V to maksymalne napięcie zasilania tych układów, a dla popularnego usbasp to jest to praktycznie minimalne napięcie z którym jako tako może on współpracować (i tak już nie do końca stabilnie).
Także odradzałbym oszczędności polegające na kupnie programatora za 20zł, bo najczęściej okazuje się, że to wyrzucone pieniądze. Tym bardziej, że za 50-60zł można nabyć naprawdę fajny programator, który nie wymaga żadnych sztuczek.
Witam jestem początkującym programista dopiero zaczynam przygode z programowaniem przy laczeniu z usbasp wyskakuje cos takiego
OdpowiedzUsuńavrdude.exe: Device signature = 0x1e9307
avrdude.exe: erasing chip
avrdude.exe: reading input file "Debug\.hex"
avrdude.exe: error opening Debug\.hex: No such file or directory
avrdude.exe: input file Debug\.hex auto detected as invalid format
avrdude.exe: can't open input file Debug\.hex: No such file or directory
avrdude.exe: read from file 'Debug\.hex' failed
próbowałem samemu rozwiązac problem ale nie dalem rady próby na systemie windows 7 x32 i x64 na avrstudio 5 i 6.1 programator działa przy używaniu programu winAVR Potrzebuje AvrStudio do wgrania programu
licze na pomoc
spróbuj usunąć spację stąd>>>Debug\$( ItemFile<< tej spacji ma nie być, oraz usunąć cudzysłów. Dzisiaj miałem ten sam problem i pomogło ;)
OdpowiedzUsuńswoją drogą nie masz żadnej ścieżki podanej, typu "c:\programy\pierwszy\debug\.hex" więc pewnie czegoś nie zrobiłeś jak autor tego tematu ;p
Moje IDE to AtmelStudio6 i avrdude. Wielkie dzięki za ten "poradnik" :)
Próbowałęm tak
OdpowiedzUsuń-e -P usb -c USBasp -p Atmega8 -e -U flash:w:”$(C:\Users\Piastek\Documents\AtmelStudio\6.1\GccApplication1\GccApplication1\Debug) Release\$(GccApplication1).hex”:a -e -U flash:w:”$(C:\Users\Piastek\Documents\AtmelStudio\6.1\GccApplication1\GccApplication1\Debug) Debug\$(GccApplication1).hex”:a
Oraz wiele innych opcji pewnie nie do końca zrozumił co tu wpisać w części Release z tego co zrozumiałem powinna byc ścieżka do folderu Release jednak ja tego folderu nie znajduje
musisz dać tylko jedną komendę, u mnie jest tak:
Usuń-e -P usb -c USBasp -p Atmega8 -e -U flash:w:$(ProjectDir)Debug\$(ItemFileName).hex:a
sprobuj, jeżeli nie pomoże to już nie wiem ;p (i jeżeli masz jakieś spacje w ścieżce swojego katalogu to musisz dodać cudzysłów tak jak jest pokazane wyżej.
to konsola pokazała w opcji z cudzysłowem
OdpowiedzUsuńavrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude.exe: Device signature = 0x1e9307
avrdude.exe: erasing chip
avrdude.exe: reading input file “C:\Users\Piastek\Documents\AtmelStudio\6.1\GccApplication1\GccApplication1\Debug\GccApplication1.hex”
avrdude.exe: error opening C:\Users\Piastek\Documents\AtmelStudio\6.1\GccApplication1\GccApplication1\Debug\GccApplication1.hex: No such file or directory
avrdude.exe: input file C:\Users\Piastek\Documents\AtmelStudio\6.1\GccApplication1\GccApplication1\Debug\GccApplication1.hex auto detected as invalid format
avrdude.exe: can’t open input file C:\Users\Piastek\Documents\AtmelStudio\6.1\GccApplication1\GccApplication1\Debug\GccApplication1.hex: No such file or directory
avrdude.exe: read from file ‘C:\Users\Piastek\Documents\AtmelStudio\6.1\GccApplication1\GccApplication1\Debug\GccApplication1.hex’ failed
avrdude.exe: safemode: Fuses OK
avrdude.exe done. Thank you.
a to w opcji bez
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude.exe: Device signature = 0x1e9307
avrdude.exe: erasing chip
avrdude.exe: reading input file “C:\Users\Piastek\Documents\AtmelStudio\6.1\GccApplication1\GccApplication1\Debug\GccApplication1.hex”
avrdude.exe: error opening C:\Users\Piastek\Documents\AtmelStudio\6.1\GccApplication1\GccApplication1\Debug\GccApplication1.hex: No such file or directory
avrdude.exe: input file C:\Users\Piastek\Documents\AtmelStudio\6.1\GccApplication1\GccApplication1\Debug\GccApplication1.hex auto detected as invalid format
avrdude.exe: can’t open input file C:\Users\Piastek\Documents\AtmelStudio\6.1\GccApplication1\GccApplication1\Debug\GccApplication1.hex: No such file or directory
avrdude.exe: read from file ‘C:\Users\Piastek\Documents\AtmelStudio\6.1\GccApplication1\GccApplication1\Debug\GccApplication1.hex’ failed
avrdude.exe: safemode: Fuses OK
avrdude.exe done. Thank you.
dodam ze programator sprawny dzis odpaliłem go przy uzyciu eclipse ale avrStudio potrzebne mi do odpalenia projektu gotowego nie wiem gdzie robie błąd próbowałem już tylu konfiguracji
A te pliki hex istnieją w katalogu Debug? Program skompilował się bez problemu? Namierz gdzie znajdują się pliki hex i dlaczego nie tam, gdzie być powinny...
Usuńplik .hex istnieje w folderze projektu debug program kompiluje się bez problemu na wszelki wypadek :
OdpowiedzUsuń------ Build started: Project: GccApplication1, Configuration: Debug AVR ------
Build started.
Project "GccApplication1.cproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Atmel Studio 6.1\Vs\Compiler.targets" from project "C:\Users\Piastek\Documents\AtmelStudio\6.1\GccApplication1\GccApplication1\GccApplication1.cproj" (target "Build" depends on it):
Using "RunCompilerTask" task from assembly "C:\Program Files (x86)\Atmel\Atmel Studio 6.1\Extensions\Application\AvrGCC.dll".
Task "RunCompilerTask"
C:\Program Files (x86)\Atmel\Atmel Studio 6.1\shellUtils\make.exe all
make: Nothing to be done for `all'.
Done executing task "RunCompilerTask".
Using "RunOutputFileVerifyTask" task from assembly "C:\Program Files (x86)\Atmel\Atmel Studio 6.1\Extensions\Application\AvrGCC.dll".
Task "RunOutputFileVerifyTask"
Program Memory Usage : 62 bytes 0,8 % Full
Data Memory Usage : 0 bytes 0,0 % Full
Done executing task "RunOutputFileVerifyTask".
Done building target "CoreBuild" in project "GccApplication1.cproj".
Target "PostBuildEvent" skipped, due to false condition; ('$(PostBuildEvent)' != '') was evaluated as ('' != '').
Target "Build" in file "C:\Program Files (x86)\Atmel\Atmel Studio 6.1\Vs\Avr.common.targets" from project "C:\Users\Piastek\Documents\AtmelStudio\6.1\GccApplication1\GccApplication1\GccApplication1.cproj" (entry point):
Done building target "Build" in project "GccApplication1.cproj".
Done building project "GccApplication1.cproj".
Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
z tego co widze nie ma żadnych problemów dla tego nie rozumiem czemu nie chce z programatorem połaczyć się
Udało ci się wybrnąć z tego problemu?
UsuńMiałem ten sam problem. Błędem było wybranie projektu z atmelboards. Powinno się wybrać: GCC C Executable project. Usunięcie cudzysłowi też może pomóc: -e -P usb -c USBasp -p ATmega16 -e -U flash:w:$(ProjectDir)Release\$(ItemFileName).hex:a
OdpowiedzUsuńTen komentarz został usunięty przez autora.
OdpowiedzUsuńU mnie też były podobne problemy. Usunięcie dwóch cudzysłowów pomogło, ale czy aby na pewno jest to dobre rozwiązanie?
OdpowiedzUsuńa da sie jakos dodac to polecenie do "build events" -> postbiuld command line?
OdpowiedzUsuńtak zeby od razu po kompilacji wgrywalo do atmegi?
wpisanie tam sciezki do avrdude i paramterow nie dziala:/
Oczywiście da się - to co tam wpiszesz zostanie wykonane. Lecz to kompletnie nie ma sensu - przecież często się coś kompiluje tylko po to, żeby sprawdzić czy skompilować się da.
UsuńDzięki! Wszystko pięknie śmiga w aktualnym AS 6.2.
OdpowiedzUsuńPotwierdzam.
OdpowiedzUsuńŚwietne. Akurat dzisiaj jest 13-tego piątek, ale na szczęście udało mi się wczoraj uruchomić USBasp pod Atmel Studio 7.
OdpowiedzUsuńMoże przyda się komuś:
OdpowiedzUsuńMój klon STK500V2 nie identyfikował się poprawnie w Atmel Studio 6 i 7.
Wyświetlał się komunikat "The signature of the attached tool is AVRISP_2, which is unexpected"
W pliku com_atmel_hil_stk.dll należy odszukać tekst "STK500_2" i zamienić na "AVRISP_2"
Teraz działa.
Tworzy mi hex'a, ale tworzy go jako nazwę projektu. Próbuję wszystkie opcje i nic. Pomoże ktoś?
OdpowiedzUsuń[...] -e -U flash:w:$(ProjectDir)Release\$(Co tu wstawić?!).hex:a
U mnie zadziałało jak zmieniłem ścieżkę na:
OdpowiedzUsuń-e -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:a
Witam, po próbie połączenia z programatorem wyskakuje mi taki komunikat
OdpowiedzUsuńavrdude.exe: error: programm enable: target doesn't answer. 1
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude.exe done. Thank you.
Czy wie ktoś w jaki sposób rozwiązać ten problem ?
W spisie treści strony jest artykuł: Problemy z zaprogramowaniem mikrokontrolera
UsuńPrzeanalizuj swój układ, pod każdym punktem tam opisanym.
Dzień Dobry jestem początkującym. Zrobiłem wszystko taj jak w instrukcji powyżej i nie działa. Pokazuje taki błąd: "avrdude.exe: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'". Avrdude nie chciało działać bez pliku "libusb0.dll". Prosiłbym o jak najprostsze wytłumaczenie
OdpowiedzUsuńZanim zaczniesz konfigurować AS zgodnie z poradnikiem, najpierw prawidłowo zainstaluj AVRDude. No na razie program ten nie widzi programatyora.
UsuńJedna poprawka, o której pisał już ktoś Anonimowy:
UsuńNależy wpsiać $(TargetName)
-e -P usb -c USBasp -p Atmega2560 -e -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:a