Mikrokontrolery - Jak zacząć?

... czyli zbiór praktycznej wiedzy dot. mikrokontrolerów.

środa, 23 marca 2011

Atmel Studio i niefirmowe programatory (np. USBasp)


Autor: tmf
Redakcja: Dondu

Artykuł jest częścią cyklu: Atmel Studio - Spis treści


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.


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.

  • 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.

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

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

36 komentarzy:

  1. 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ń
  2. 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ń
  3. Ja także dziękuję i przyłączam się do pytania powyżej.

    OdpowiedzUsuń
  4. USBasp ma możliwość programowania przez TPI. Trzeba tylko zaktualizować firmware z oficjalnej strony do najnowszej wersji.

    OdpowiedzUsuń
  5. 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ń
  6. Witam, zrobiłem wszystko według instrukcji, jednak jest problem podczas próby zapisania programu na AVR.
    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?

    OdpowiedzUsuń
    Odpowiedzi
    1. Miałem ten sam problem i pomogła taka zamiana:

      -e -U flash:w:”$(ProjectDir)Release\$( ItemFileName).hex”:a

      na

      -e -U flash:w:$(ProjectDir)Release\$(ItemFileName).hex:a

      czyli usunięcie cudzysłowia.

      Usuń
    2. Wersja bez "" wysypie się jeśli w ścieżce będą spacje.

      Usuń
    3. 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ń
  7. A jak wygląda cała linia polecenia avrdude?

    OdpowiedzUsuń
  8. Udało mi się to naprawić, trochę namieszałem, bo nie wiem co robią poszczególne argumenty. Moja linia argumentów:

    " C:\AVRdude\avrdude.exe -C C:\AVRdude\avrdude.conf -p m32 -P usb -c usbasp -U flash:w:"$(ProjectDir)Debug\$(ItemFileName).hex":i "

    OdpowiedzUsuń
  9. To jak to jest z tym TPI i USBasp, o którym pisał anonimowy o 12:43?

    OdpowiedzUsuń
  10. 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),
    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.

    OdpowiedzUsuń
  11. Jeśli chodzi o TPI, to nie używałem, ale na stronie http://www.fischl.de/usbasp/ jest najnowszy soft z obsługą TPI. Najnowsze avrdude (5.11) obsługuje TPI. Niech się jeszcze wypowie ktoś, kto tego faktycznie używał, i powie czy to działa.

    OdpowiedzUsuń
  12. 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.
    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.

    OdpowiedzUsuń
  13. Witam jestem początkującym programista dopiero zaczynam przygode z programowaniem przy laczeniu z usbasp wyskakuje cos takiego
    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

    OdpowiedzUsuń
  14. 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 ;)
    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" :)

    OdpowiedzUsuń
  15. Próbowałęm tak
    -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

    OdpowiedzUsuń
    Odpowiedzi
    1. musisz dać tylko jedną komendę, u mnie jest tak:
      -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.

      Usuń
  16. to konsola pokazała w opcji z cudzysłowem

    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

    OdpowiedzUsuń
    Odpowiedzi
    1. 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ń
  17. plik .hex istnieje w folderze projektu debug program kompiluje się bez problemu na wszelki wypadek :
    ------ 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ę

    OdpowiedzUsuń
    Odpowiedzi
    1. Udało ci się wybrnąć z tego problemu?

      Usuń
  18. 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ń
  19. Ten komentarz został usunięty przez autora.

    OdpowiedzUsuń
  20. 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ń
  21. a da sie jakos dodac to polecenie do "build events" -> postbiuld command line?

    tak zeby od razu po kompilacji wgrywalo do atmegi?

    wpisanie tam sciezki do avrdude i paramterow nie dziala:/

    OdpowiedzUsuń
    Odpowiedzi
    1. 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ń
  22. Dzięki! Wszystko pięknie śmiga w aktualnym AS 6.2.

    OdpowiedzUsuń
  23. Świetne. Akurat dzisiaj jest 13-tego piątek, ale na szczęście udało mi się wczoraj uruchomić USBasp pod Atmel Studio 7.

    OdpowiedzUsuń
  24. Może przyda się komuś:
    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.

    OdpowiedzUsuń
  25. Tworzy mi hex'a, ale tworzy go jako nazwę projektu. Próbuję wszystkie opcje i nic. Pomoże ktoś?

    [...] -e -U flash:w:$(ProjectDir)Release\$(Co tu wstawić?!).hex:a

    OdpowiedzUsuń
  26. U mnie zadziałało jak zmieniłem ścieżkę na:
    -e -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:a

    OdpowiedzUsuń
  27. Witam, po próbie połączenia z programatorem wyskakuje mi taki komunikat
    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 ?

    OdpowiedzUsuń
    Odpowiedzi
    1. W spisie treści strony jest artykuł: Problemy z zaprogramowaniem mikrokontrolera
      Przeanalizuj swój układ, pod każdym punktem tam opisanym.

      Usuń

Działy
Działy dodatkowe
Inne
O blogu




Dzisiaj
--> za darmo!!! <--
1. USBasp
2. microBOARD M8


Napisz artykuł
--> i wygraj nagrodę. <--


Co nowego na blogu?
Śledź naszego Facebook-a



Co nowego na blogu?
Śledź nas na Google+

/* 20140911 Wyłączona prawa kolumna */
  • 00

    dni

  • 00

    godzin

  • :
  • 00

    minut

  • :
  • 00

    sekund

Nie czekaj do ostatniego dnia!
Jakość opisu projektu także jest istotna (pkt 9.2 regulaminu).

Sponsorzy:

Zapamiętaj ten artykuł w moim prywatnym spisie treści.