Chociaż chciałbym zagłębić się w różne dostępne metody programowania, ktoś inny już to ma. Oto samouczek Dean Camera na temat AVRFreaks, metod programowania AVR :
Istnieje wiele sposobów programowania mikrokontrolerów AVR. Ponieważ wiele osób pyta o różne w tym samym czasie, pomyślałem, że przedstawię je tutaj, aby szybko i skutecznie odpowiedzieć na ich pytania. Proszę wybacz mi, jeśli przegapię metodę lub popełniam błąd.
METODA 1: Programowanie systemu (ISP)
Obsługiwane przez: Ogromna większość AVR (patrz poniższe posty)
Obsługiwani programiści: AVRISP MKI / II, JTAG MKII, STK500, STK600, Dragon, AVRISP klony, Programatory AVR910, AVRONE
W programowaniu systemu jest prawdopodobnie najczęstszą metodą programowania pamięci flash, pamięci EEPROM, bezpiecznika i blokad całej linii AVR. ISP może programować AVR z ekstremalnie wysoką częstotliwością taktowania (zakładając, że docelowy AVR działa z wysoką częstotliwością, a programista to obsługuje) i jest metodą wybieraną przez prawie wszystkich hobbystów AVR. Na rynku jest wiele, wiele klonów AVRISP i programistów AVR910, a także proste klucze sprzętowe do samodzielnego podłączenia, które są podłączone do portu równoległego komputera.
Najnowsze nowe klucze sprzętowe mogą wykorzystywać port szeregowy komputera, jednak niepotwierdzone dowody wskazują, że ta metoda jest bardzo powolna z powodu ograniczeń technicznych.
ISP wymaga, aby docelowy AVR działał z częstotliwością zegara co najmniej czterokrotnie większą niż zegar ISP. Jest to częsta pułapka i źródłem zamieszania dla wielu nowych użytkowników AVR.
METODA 2: JTAG
Obsługiwane przez: Zobacz pomoc AVRStudio Narzędzia do obsługi urządzeń MKI i MKII
Obsługiwane programiści: JTAG-ICE, JTAG-ICE MKII, klony Dragon, JTAG-ICE, AVRONE, STK600 (tylko programowanie)
Technicznie JTAG jest systemem debugowania, a nie metodą programowania. Mimo to interfejs JTAG umożliwia programowanie AVR, który go obsługuje.
JTAG to wbudowane w system narzędzie do debugowania, które pozwala manipulować i sprawdzać status obsługiwanego AVR podczas pracy w obwodzie. JTAG pozwala użytkownikowi zatrzymać wykonywanie w dowolnym momencie, manipulację wewnętrznymi rejestrami AVR i wiele więcej.
Oficjalne jednostki JTAG-ICE firmy ATMEL zostały zastąpione przez JTAG-ICE MKII, który obsługuje nowsze i szerzej obsługiwane protokół debugowania AVR z zakresu AVR, a także programowanie metodą ISP (patrz wyżej).
Klony JTAG-ICE są dostępne w niskich cenach, jednak ich ograniczona kompatybilność z tylko kilkoma AVR ogranicza ich przydatność. Niezależnie od tego, jeśli twój AVR obsługuje interfejs JTAG, JTAG-ICE pozostaje bardzo ładną i skuteczną metodą debugowania i programistą.
METODA 3: DebugWire
Obsługiwane przez: Wiele mniejszych AVR
Obsługiwanych programistów: JTAG-ICE MKII, Dragon, AVRONE
Znowu DebugWire to raczej interfejs debugowania niż interfejs programowania, ale można go użyć do załadowania programów do obsługiwanych AVR. Interfejs dW wykorzystuje pojedynczy pin AVR (linia / RESET) do całej komunikacji, dzięki czemu idealnie nadaje się do urządzeń AVR o niskiej liczbie pinów.
METODA 4: Bootloader
Obsługiwane przez: Większość nowszych AVR
Obsługiwani programiści: nie dotyczy
Z technicznego punktu widzenia nie jest to metoda programowania. Bootloader to mały program AVR, który znajduje się w ustawianej przez użytkownika zarezerwowanej części zwykłego flasha. Programy ładujące wykorzystują funkcje autodopasowania flash dostępne w nowszych AVR, aby umożliwić AVR programowanie się za pomocą danych programu załadowanych z zewnętrznego źródła. Bootloadery mogą pozyskiwać swoje dane z dowolnej lokalizacji (np. Zewnętrzna pamięć flash lub karta SD), jednak zdecydowanie najpopularniejszy typ Bootloadera komunikuje się z komputerem PC przez port RS-232 (szeregowy) AVR.
Programy ładujące są ograniczone, ponieważ zajmują miejsce w pamięci flash (ograniczając rozmiar pamięci flash dostępnej dla aplikacji AVR) i nie są w stanie zmienić bezpieczników AVR.
Programy ładujące są powszechnie dostępne w Internecie do pobrania, ale cierpią z powodu problemu „kurczaka i jajka”; potrzebujesz innego typu programatora wymienionego tutaj, aby programować w bootloaderze. Zwykle jest to rozwiązywane przez budowę prostego klucza równoległego (patrz sekcja ISP) lub przez zakup AVR już wstępnie załadowanego z bootloaderem (np. Płytą AVRButterfly).
METODA 5: Programowanie równoległe wysokiego napięcia (HVPP)
Obsługiwane przez: Większość AVR spoza TINY (z wyjątkami)
Obsługiwani programiści: STK500, STK600, Dragon, Homebrew Dongles, AVRONE
Programowanie równoległe wysokiego napięcia to metoda programowania, która jest rzadko stosowana, ze względu na problemy z konfiguracją. Mimo to programowanie HVPP jest powszechnie stosowane do „wskrzeszenia” AVR-ów, których bezpieczniki zostały źle skonfigurowane za pomocą innej metody programowania.
Zarówno STK500, jak i Dragon obsługują HVPP. Podczas HVPP, pin celu / RESET jest podnoszony do niezwykle wysokiej wartości 12V, która angażuje wewnętrzny równoległy obwód programowania. Pin / RESET jest jedynym pinem AVR (w AVR obsługiwanych przez HVPP), który można bezpiecznie podnieść do tego poziomu.
Możesz stworzyć własny klucz HVPP, korzystając z planów online, takich jak ten.
METODA 6: Programowanie szeregowe wysokiego napięcia (HVSP)
Obsługiwane przez: Wiele TINY AVR (z wyjątkami)
Obsługiwani programiści: STK500, STK600, Dragon, Homebrew Dongles, AVRONE
HVSP jest podobny do HVPP, z tym wyjątkiem, że przesyłanie danych odbywa się raczej szeregowo niż równolegle. Jest to alternatywna metoda programowania stosowana w wielu AVR-ach serii TINY, którym brakuje wystarczającej liczby pinów dla HVPP.
METODA 7: PDI
Obsługiwane przez: XMEGA AVR
Obsługiwane programiści: STK600, AVRONE, JTAG MKII, Dragon, AVRISP MKII
PDI to nowy interfejs programowania oparty na protokole debugWire dla linii AVR XMEGA. Obecnie nie jest używany w żadnym innym 8-bitowym mikrokontrolerze AVR.
METODA 8: TPI
Obsługiwane przez: 6-stykowe AVR-y TINY (ATTINY10 itp.)
Obsługiwani programiści: STK600, Dragon, AVRISP MKII
TPI to bardzo mały interfejs programistyczny dla nowszej linii AVR TINY z ograniczonymi pinami, jak 6-pinowy ATTINY10. Podobnie jak dW, TPI wykorzystuje linię urządzenia / RESET jako część interfejsu komunikacyjnego, ale podobieństwo się kończy. Ponieważ wielkości TINY AVR wielkości kufla nie mają wbudowanego obwodu debugującego, protokół TPI wykorzystuje nowy interfejs programowania trzech pinów w protokole półdupleksowym. Ponieważ linia / RESET musi zostać podniesiona do + 12V do programowania, gdy ustawiony jest pin RSTDSB urządzenia, jest to obecnie obsługiwane tylko przez nowszą płytę programującą STK600.
Bonusowa sekcja FAQ!
Która metoda jest najlepsza?
Nie ma uniwersalnej metody „najlepszej”. Programowanie przez ISP jest proste i niezwykle popularne, jednak wszystkie powyższe metody będą działać. Dwa tryby programowania wysokiego napięcia (w zależności od tego, które dotyczy danego urządzenia) są najbardziej bogate w funkcje, ponieważ pozwalają na naprawę AVR, którego bezpieczniki zostały źle skonfigurowane. Te metody są jednak trudne w konfiguracji, dlatego większość użytkowników korzysta z usług internetowych.
Zrobiłem klucz do portu równoległego. Czy mogę go używać z AVRStudio?
Obawiam się że nie. AVRStudio nie może łączyć się z żadnym „głupim” kluczem sprzętowym - wymaga inteligentnego urządzenia programującego - zawierającego sam mikrokontroler - do odszyfrowania wysyłanego protokołu komunikacyjnego. Proste klucze sprzętowe bez mikrokontrolera muszą być „bitowe” (tj. Odpowiednie sygnały symulowane przez klucz sprzętowy za pomocą komputera).
Więc mój klucz jest bezużyteczny?
Nie. Nadal możesz programować za pomocą domowego klucza sprzętowego za pomocą zewnętrznego oprogramowania do programowania. AVRDude to dobre, znane, bezpłatne narzędzie wiersza poleceń - i jest dołączone do pakietu WinAVR.
Jakie mam opcje, jeśli chcę, aby mój programista współpracował z AVRStudio?
Wybierz programator korzystający z protokołu obsługiwanego przez AVRStudio. Może to być prosty protokół „AVR910” (przestarzały) lub niestandardowa implementacja protokołu używanego przez STK500 / AVRISP. Zauważ, że ci programiści wymagają w nich mikrokontrolera, co prowadzi do sytuacji catch-22. Można to rozwiązać przez zaprogramowanie AVR programisty w momencie zakupu przy użyciu odpowiedniego oprogramowania wewnętrznego lub przez zaprogramowanie AVR za pomocą bootloadera.
Ok, chcę użyć bootloadera. Jak go tam w ogóle zdobyć ?!
Aby użyć bootloadera w AVR, najpierw musisz go zaprogramować. Jeśli nie masz istniejącego programatora (wystarczy prosty głupi klucz sprzętowy do programowania początkowego), możesz alternatywnie kupić AVR-y wstępnie zaprogramowane bootloader od kilku dostawców.
Atmel produkuje również płytkę demonstracyjną Butterfly, której MEGA169 AVR jest fabrycznie wyposażony w bootloader kompatybilny z AVR-Studio.
Wsparcie! Zepsułem bezpieczniki i zepsułem AVR podczas korzystania z ISP!
Najczęstszym błędem jest zmiana bezpieczników wyboru zegara na nieprawidłowe ustawienie. Spróbuj umieścić zegar zewnętrzny na pinie XTAL1 AVR i sprawdź, czy to pomoże.
W przeciwnym razie, jeśli to możliwe, zastosuj jedną z metod wysokiego napięcia. Naprawią one wszelkie błędne konfiguracje, w tym dotyczące źródła zegara, ponieważ metody wysokiego napięcia zapewniają AVR swój własny zegar do programowania.
Jak mogę połączyć się z moim programistą?
To, jakiego oprogramowania używasz do połączenia z programatorem, zależy od rodzaju programatora, którego używasz.
Proste „głupie” klucze wymagają oprogramowania innych firm, takiego jak PonyProg lub AVRDude. Mogą to być narzędzia wiersza polecenia lub GUI - rozejrzyj się po Internecie, a dopasujesz je do swoich potrzeb.
W AVRStudio można używać programistów i programów ładujących opartych na protokole AVR910. Z menu Narzędzia wybierz opcję „AVRProg”, aby otworzyć ekran GUI do połączenia z programatorem. Alternatywnie, narzędzia innych firm, takie jak AVRDude, są również kompatybilne z AVR910.
Oficjalne narzędzia są ściśle zintegrowane z AVRStudio, szczególnie w przypadku wariantów debugowania (JTAG / Dragon / etc). Z menu Narzędzia AVRStudio wybierz podmenu „Program AVR ...” i kliknij element „Połącz”. W nowym oknie wybierz swoje narzędzie i interfejs połączenia i kliknij OK.
Podobnie jak w przypadku głupich kluczy sprzętowych i programistów AVR910, oficjalne narzędzia mogą być również używane z oprogramowaniem do programowania innych firm.
(C) Dean Camera, 2009. Wszelkie prawa zastrzeżone. Nie do reprodukcji na stronie internetowej innej niż AVRFreaks.net bez uprzedniej wyraźnej zgody.