Spisu treści:

KORZYSTANIE Z EXtreme Burner do programowania mikrokontrolera AVR: 8 kroków
KORZYSTANIE Z EXtreme Burner do programowania mikrokontrolera AVR: 8 kroków

Wideo: KORZYSTANIE Z EXtreme Burner do programowania mikrokontrolera AVR: 8 kroków

Wideo: KORZYSTANIE Z EXtreme Burner do programowania mikrokontrolera AVR: 8 kroków
Wideo: Integracja USBasp z Microchip Studio 2024, Listopad
Anonim
KORZYSTANIE Z EXtreme Burner do programowania mikrokontrolera AVR
KORZYSTANIE Z EXtreme Burner do programowania mikrokontrolera AVR

Cała społeczność użytkowników AVR i ci, którzy dopiero wchodzą do streamu, Niektórzy z was zaczęli od mikrokontrolerów PIC, a niektórzy od ATMEL AVR, to jest napisane dla Was!

Więc kupiłeś USBASP, ponieważ jest tani i skuteczny, aby flashować ROM na urządzeniu Atmega, a może serii ATTINY. Można je uzyskać za mniej niż 5 $, jako chińskie klony Open Source USB-ASP! AVRdude to oprogramowanie do ich programowania.

Bez wątpienia wiesz, jak wygenerować plik Hex za pomocą Atmel Studio (nadal używam AVR Studio v4.19 zamiast najnowszego v7, ponieważ jest szybszy i szybszy na moim lekkim laptopie z pojedynczym rdzeniem) / Netbook i WINAVR zainstaluj jeśli to czytasz. Wszystko napisane w DotNet działa WOLNO ! a późniejsze wersje są zaprojektowane tak, aby twój laptop działał jak żółw! Możesz użyć Studio v4.19, najlepszej wersji Studio od ATMEL dla mikrokontrolerów AVR, przełączając się na wersję 7, gdy naprawdę potrzebujesz jej dla późniejszych układów i sprawić, by Twój czas na laptopie był bardziej produktywny, pracując zamiast czekać! To właśnie polecam.

Typowa linia poleceń AVR dude do programowania Atmegi za pomocą pliku Hex, działa tak:

ZAPISZ DO FLASH:AVRdude -s -c avrisp -p t44 -P usb -U "flash:w:D:\ARDUINO\pwmeg1.hex:a"

tutaj pwmeg1.hex to plik szesnastkowy Intela, który ma zostać „spalony” lub „flashowany” do „docelowego MCU” w mikrokontrolerze Lingo

To kęs do zapamiętania! Możesz napisać plik wsadowy i uruchomić go w wierszu poleceń w systemie Windows, nadając mu nazwę write_flash.bat. Podobnie do czytania bezpieczników, kolejny kęs linijki do zapamiętania! To staje się nudne.

do odczytu flash + eeprom:AVRdude -s -c avrisp -p t44 -P usb -U "flash:r:D:\ARDUINO\pwmeg1.hex:i" -U "eeprom:r::i"

Rozwiązaniem jest użycie jednego z przyjaznych dla użytkownika narzędzi front-endowych do AVRdude, takich jak Bitburner, programista Khazama, które są prawie podobne pod względem merytorycznym. ekstremalny palnik. Dużo korzystałem z darmowego narzędzia: eXtreme Burner, jego wszechstronnego, niezawodnego i tego samouczka. Może nie tylko sflashować plik / program w formacie szesnastkowym do MPU, używając poleceń wydawanych do AVRdude w tle, ale może również pomóc w ustawieniu BEZPIECZNIKÓW, co jest skomplikowanym tematem, który często myli początkujących z programowaniem AVR. Oto link do doskonałego samouczka na temat BEZPIECZNIKÓW, który możesz przejrzeć lub odświeżyć. Słowo ostrzeżenia: ATMEL używa stanu „1” bitu FUSE do wskazania jego stanu „domyślnego” (stan nieuzbrojony lub niezaprogramowany), a „0” do wskazania jego zaprogramowanego, ustawionego lub aktywowanego stanu ! Jest to dokładnie przeciwieństwo tego, co robisz z bitami FUSE w mikrokontrolerze PIC. Zachowaj ostrożność podczas modyfikowania bitów bezpieczników zegara, takich jak zmiana wewnętrznego zegara RC na zewnętrzny kryształ, ponieważ spowoduje to problemy z połączeniem z chipem bez zewnętrznej konfiguracji kryształu. Podobnie należy zachować ostrożność podczas zmiany stanu krytycznych bitów bezpiecznika, takich jak SPIEN i RESET DISABLE (powinny być zawsze ustawione na SPIEN = 0 i RESET DISABLE = 1, jeśli chcesz kontynuować komunikację z MCU z USB-ASP w trybie ISP / SPI Jeśli to zepsujesz, będziesz potrzebować programatora wysokiego napięcia, aby „odblokować” twój AVR.

Jeśli zastanawiasz się "co do cholery to bezpieczniki" i "co one robią"? Przeczytaj ten doskonały zapis:

Innym powiązanym tematem jest ustawienie szybkości zegara MPU AVR, która może pracować z prędkością od 1 MHz do 16 lub 20 MHz. Dostępna jest również specjalna opcja z kryształem niskiej częstotliwości 31,25kHz o niskim poborze mocy, która, jeśli jest odpowiednio zaprojektowana, może sprawić, że twój odbiornik AVR wyczerpie się z baterii AA przez 3 miesiące!

Oba te bity Clock Fuse (zarówno częstotliwość, jak i typ zegara wewnętrznego RC/zewnętrznego kryształu oraz inne bity Fuse) można ustawić w zakładce FUSES w eXtreme Burner. Najpierw pokażemy, jak odczytać ROM, a następnie jak sflashować plik szesnastkowy za pomocą eXtreme Burner. Oczywiście możesz również skorzystać ze stron internetowych z bezpiecznikami AVR, ale opcja, którą wyjaśniam, może być używana również wtedy, gdy jesteś offline, gdziekolwiek.

Krok 1: Ustawienia do wykonania:

Ustawienia do wykonania
Ustawienia do wykonania
Ustawienia do wykonania
Ustawienia do wykonania
Ustawienia do wykonania
Ustawienia do wykonania
Ustawienia do wykonania
Ustawienia do wykonania

Zdjęcia przedstawiają USTAWIENIA, które należy wykonać przed rozpoczęciem pracy. (to tylko jeden raz). W podmenu „Ustawienia sprzętu” wybieramy 375 Hz, ponieważ większość MCU z fabryki ATMEL jest ustawiona na domyślne ustawienia zegara procesora 1 Mhz na wewnętrznym oscylatorze RC. Szybkość dostawcy usług internetowych to jedna czwarta F_cpu. To daje nam najbliższą prędkość 375 Khz, możesz też zejść na niższą prędkość, nie zrobi to wielkiej różnicy. Możesz spróbować połączyć się, pozostawiając to domyślnie i wydać „czytaj wszystko”, jeśli to się nie powiedzie, możesz podejść tutaj i zmienić prędkość, zmniejszając ją.

Ponieważ jeśli nie możesz się połączyć (w oknie programatora pojawi się komunikat "nie można skomunikować się z chipem, can't SCK" oznacza, że sygnał zegara z twojego komputera nie mógł zsynchronizować się z twoim chipem, który próbujesz odczytać lub program). Tak więc połączenie jest podstawą wszystkiego! To jak "PIERWSZY KONTAKT", jak widać w filmach Spielberga. Jeśli ci się to uda, zawsze możesz zwiększyć częstotliwość taktowania swojego MCU, odpowiednio programując bezpieczniki, a później użyć większej prędkości do połączenia.

Przejrzyj więc dostępne tutaj migawki ustawień sprzętu, a następnie ustaw typ urządzenia (układ, który próbujesz zaprogramować, jego numer modelu).

Krok 2: Ustawianie typu urządzenia

Ustawianie typu urządzenia
Ustawianie typu urządzenia
Ustawianie typu urządzenia
Ustawianie typu urządzenia
Ustawianie typu urządzenia
Ustawianie typu urządzenia

patrz zrzut ekranu, Pic 1, ustawiliśmy "ATTINY44A". Jest to 14-pinowy mikrokontroler bez UART. Używam tego ostatnio, wersja SSU. Jeśli zainstalowałeś wersję Extreme Burner, nie zobaczysz Attiny44A na rozwijanej liście urządzeń, zobaczysz Attiny44, którego możemy użyć do wszystkich celów, aby zaprogramować Attiny44A, aby wprowadzić dowolne urządzenie niewymienione na tej liście rozwijanej, przeczytaj mój inny instruktażowy „Hacking eXtreme Burner”.

Używałem Atmega88PA-AU również z eXtreme Burner, ale w tej instrukcji wszędzie wspominamy „Attiny44A”. Jak teraz zrobić płytkową wersję małego, kwadratowego chipa SMD o średnicy 7 mm i przetestować go w swoich programach? (patrz zdjęcia, które wskazują rozmiar chipa), W tym celu zobacz moje inne instrukcje, w których pokazuję, jak zrobić moduły wtyczek dostosowane do Breadboard za pomocą Attiny44A-SSU i ATmega88PA-AU

Gdy nauczysz się tej techniki, będziesz w stanie sprawdzić każdy chip, przy którym chcesz majstrować, niezależnie od tego, czy jest to pakiet SMD, czy DIL. Na przykład użyłem nawet chipa SMD w 32-pinowej obudowie Quad o rozstawie pinów 0,8 mm (Atmega88A) w podobny sposób!

. Lub możesz po prostu użyć 28-pinowej wersji DIL Attiny44A dla tego Instructable lub innego AVR, którego obecnie używasz, aby wypróbować eXtreme Burner do programowania AVR.

Krok 3: Wydaj READ ALL lub READ FLASH

Wydaj READ ALL lub READ FLASH
Wydaj READ ALL lub READ FLASH
Wydaj READ ALL lub READ FLASH
Wydaj READ ALL lub READ FLASH

Podłącz USBasp do portu USB laptopa, zakładam, że załadowałeś już prawidłowe sterowniki dostarczone z programatorem i są one poprawnie wykryte. Powinien pojawić się w menu "Urządzenia i drukarki" w menu startowym systemu Windows, jeśli tak, jak tylko zostanie podłączony do portu USB! Podłącz docelowy układ na płycie do USBasp (odpowiednie piny SDI//ISP za pomocą kabla 6-pinowego lub 10-pinowego muszą być połączone między nimi, a mianowicie pinami: MOSI, RESET, MISO, SCK, Vcc, Ground).

Wydaj READ ALL z MENU Xtreme Burner. Zobacz zdjęcia i wiadomości, które otrzymaliśmy. Początkowo twój ekran pokazywał 'FF' dla ROM w pierwszej zakładce nagrywarki, po przeczytaniu wszystkiego pokaże rzeczywistą zawartość ROM na chipie. Jeśli użyjesz fabrycznego świeżego chipa lub wymazanego chipa, zobaczysz FF w zawartości po "Przeczytaj wszystko". Niezaprogramowany chip pokaże 'FF' w swojej pamięci, podobnie jak EEPROM (druga zakładka w programatorze), ostatnia zakładka pokazuje BEZPIECZNIKI.

Po READ ALL 3 zakładki pokażą prawidłowe informacje zawarte w chipie. Wcześniej tak się nie stało, więc wydaj najpierw Przeczytaj wszystko, gdy tylko wszystko połączysz.

Krok 4: Napisz do Flasha (Twój plik szesnastkowy błysnął w pamięci ROM na chipie)

Napisz do Flasha (Twój plik szesnastkowy zabłysnął w pamięci ROM na chipie)
Napisz do Flasha (Twój plik szesnastkowy zabłysnął w pamięci ROM na chipie)
Napisz do Flasha (Twój plik szesnastkowy zabłysnął w pamięci ROM na chipie)
Napisz do Flasha (Twój plik szesnastkowy zabłysnął w pamięci ROM na chipie)
Napisz do Flasha (Twój plik szesnastkowy zabłysnął w pamięci ROM na chipie)
Napisz do Flasha (Twój plik szesnastkowy zabłysnął w pamięci ROM na chipie)

Wybierz plik za pomocą okna dialogowego Przeglądaj, które otwiera się po kliknięciu pierwszej ikony na pasku MENU powyżej. Wybraliśmy jeden plik, jak widać na zdjęciu. Po wybraniu pliku szesnastkowego (format szesnastkowy Intel) pasek menu, który wskazywał „brak załadowanego pliku”, zmienił się na nazwę załadowanego pliku.

Teraz wydaj Flash zapisu z menu oprogramowania. Komunikaty pokażą Ci, co się dzieje. zobacz zdjęcia.

Po udanym zapisie zobaczysz „FF”, który oznacza świeżą lub skasowaną zmianę pamięci ROM w tym, co zawiera twój program lub plik szesnastkowy. Rozmiar lub liczba bajtów, które twój plik zajmuje w pamięci ROM, jest również znany, patrząc na ten ekran, który pokazuje rzeczywistą zawartość pamięci ROM twojego docelowego układu, który właśnie sflashowałeś.

Krok weryfikacji odbywa się również poprzez odczytanie chipa, zgodnie z USTAWIENIAMI, które zrobiliśmy w pierwszym kroku. Widać to w komunikatach, że weryfikacja również się powiodła.

Krok 5: BEZPIECZNIKI: Jak je ustawić w EXtreme Burner

BEZPIECZNIKI: Jak je ustawić w EXtreme Burner
BEZPIECZNIKI: Jak je ustawić w EXtreme Burner

Po wydaniu READ ALL bezpieczniki zostały odczytane z chipa. To PIERWSZE pokazane zdjęcie fuses.jpg.

Teraz być może trzeba je zmienić na coś innego. Bezpieczniki składają się z 4 pudełek w ostatniej zakładce na ekranie eXtreme Burner. Mianowicie LOW FUSE BYTE, HIGH FUSE BYTE, EXTENDED FUSE BYTE, LOCK FUSE BYTE i CALIBRATION BYTE. w tej kolejności są one pokazane.

Możesz po prostu użyć kalkulatora bezpieczników ONLINE i wypełnić je

eleccelerator.com/fusecalc/fusecalc.php?

Możesz też użyć palnika eXtreme, aby zrobić to za Ciebie. offline w dowolnym momencie: Wybierz z rozwijanej listy, która pojawia się po kliknięciu przycisku SZCZEGÓŁY, który znajduje się pod każdym rodzajem bajtu bezpiecznika. Wystarczy dwukrotnie kliknąć dowolną linię na ekranie SZCZEGÓŁÓW i obserwować, jak zmienia się z SET na CLEARED i przełączać jej stan za pomocą kliknięcia myszą na każdej linii. Bajt bezpiecznika w polu powyżej zmieni się odpowiednio.

Jeśli zastanawiasz się "co do cholery to bezpieczniki" i "co one robią"? Przeczytaj ten doskonały zapis:

www.instructables.com/id/Avr-fuse-basics-Running-an-avr-with-an-external-cl/

Krok 6: Ustawianie bezpieczników za pomocą kalkulatora bezpieczników EXtreme Burner

Ustawianie bezpieczników za pomocą kalkulatora bezpieczników EXtreme Burner
Ustawianie bezpieczników za pomocą kalkulatora bezpieczników EXtreme Burner
Ustawianie bezpieczników za pomocą kalkulatora bezpieczników EXtreme Burner
Ustawianie bezpieczników za pomocą kalkulatora bezpieczników EXtreme Burner
Ustawianie bezpieczników za pomocą kalkulatora bezpieczników EXtreme Burner
Ustawianie bezpieczników za pomocą kalkulatora bezpieczników EXtreme Burner

Możesz zobaczyć ekran szczegółów, który pojawia się dla każdego z bajtów bezpiecznika (NISKI, WYSOKI, ROZSZERZONY, BLOKADA i Kalibracja). Bajt kalibracji powinien pozostać niezmieniony, ponieważ pokazuje bajt danych kalibracji w AVR, który dotyczy wewnętrznego oscylatora RC. Bajt LOCK to zwykle tylko FF (nie omówiony na powyższych zdjęciach), ponieważ nie blokowałbyś Flasha ani EEPROM na etapie uczenia się. Zmieniałbyś tylko bajty LOW, HIGH i EXTENDED. Bądź ostrożny !

Jeśli zmienisz bit SPIEN na 1 (stan niezaprogramowany to 1 w mikrokontrolerach AVR) nie będziesz w stanie komunikować się ze swoim układem za pomocą USBASP lub dowolnego programatora! Stan domyślny jest również wyświetlany na ekranie dla każdego bitu bezpiecznika. To ostrzega, że domyślną wartością SPIEN jest zawsze 0 (stan zaprogramowany), aby umożliwić korzystanie z trybu SPI do programowania ISP. Debug-wire lub DW bit jest zawsze pozostawiony 1 (niezaprogramowany), gdy SPIEN jest ustawiony na 0. Jest to również jego domyślny stan. Ponadto w bitach Extended Fuse 'Self Programming Enable' powinno wynosić '1' (niezaprogramowane), jeśli używasz USB-ASP do programowania docelowego układu (nie używaj pamięci ROM bootloadera, jak w ARDUINO).

Możesz zmienić bity CLOCK (3 w liczbie), aby wybrać wewnętrzny RC lub zewnętrzny kryształ. Zwykle zostawiam to dla wewnętrznego RC, co pozwala uzyskać 2 dodatkowe piny, które uwolnienie zewnętrznego kryształu pociąga za sobą użycie jako pinów PORT dla twoich projektów AVR. Zazwyczaj zewnętrzny kryształ jest potrzebny, gdy potrzebujesz wysokiej dokładności taktowania w swoim projekcie. Uczniom wystarczy wewnętrzne RC.

Zwykle, gdy zdecydujesz się na jakąś kombinację bezpieczników, nie będziesz jej zmieniał. To byłby jednorazowy. Migałbyś tylko ROM lub czasami EEPROM. Do flashowania EEPROM-u generowany jest oddzielny plik.eep przez twoje studio WINAVR / ATMEL, jeśli w ogóle twój program używa EEPROM do przechowywania danych. W przeciwnym razie pamięć EEPROM pozostaje nieużywana, wypełniona danymi 'FF', które pokazują stan 'NO DATA ' EEPROM.

Krok 7: Końcowa wartość bitów bezpiecznika

Końcowa wartość bitów bezpiecznika
Końcowa wartość bitów bezpiecznika

Po ustawieniu wszystkich bitów Fuse i zamknięciu pól SZCZEGÓŁY, których użyłeś, możesz zobaczyć wartość bitów Fuse obliczoną przez program (patrz rys.). Pozostaje tylko wydać "Write Fuses" za pomocą menu. I spójrz na wiadomości, które informują o udanym zapisie. Później można było też wydać READ ALL z menu i sprawdzić czy bezpieczniki odczytane w ostatniej zakładce ekranu palnika pokrywają się z tym, co chciałeś wpisać do układu. (Weryfikacja bezpiecznika).

Zauważysz, że na początku tego Instruktażowego, kiedy zrobiliśmy ODCZYT BEZPIECZNIKÓW, ekran pokazuje te same wartości BEZPIECZNIKÓW, które widzimy tutaj! To dlatego, że są to bezpieczniki, których często używam i rzadko je wymieniam, gdy ustawię je w moim MCU, chyba że zmienię częstotliwość z 1 MHz na 4 MHz dla niektórych projektów. AVR można ustawić na maksymalnie 20 Mhz (niektóre chipy tylko do 16 Mhz). Częstotliwość ustawiona dla F_cpu zależy również od napięcia, którym dostarczasz układ! Na przykład, jeśli twój chip działa od 1,8 V Vcc do 5,5 V Vcc (patrz arkusz danych), nie spodziewałbyś się, że uruchomisz swój chip przy 20 mhz, jeśli dostarczysz mu tylko 1,8 V! za dużo od niej oczekujesz! Tabela w arkuszu danych informuje, przy jakim napięciu freq osiąga szczyt przy której wartości. Im wyższa częstotliwość pracy chipa, tym więcej ciepła i więcej energii zużywa. Pomyśl o częstotliwości jak o uderzeniu serca zwierzęcia. Koliber o dużej częstotliwości bicia serca spalałby więcej energii na minutę w porównaniu z wielorybem lub słoniem o znacznie niższym biciu serca! Ale wtedy może zrobić znacznie więcej w krótszym czasie. MCU jest właśnie taki.

Krok 8: Zakończ

Teraz wykonałeś wszystkie kroki w palniku eXtreme, przeczytałeś ROM chipa, otworzyłeś plik HEX i sflashowałeś go do chipa i zweryfikowałeś, że flash jest OK, nauczyłeś się również ustawiać bezpieczniki i sflashować je do chipa.

Jeśli masz jakieś pytania, z przyjemnością odpowiem lub zmodyfikuję samouczek, aby był bardziej przejrzysty.

W przypadku niektórych żetonów może się okazać, że brakuje ich wpisu w rozwijanej liście wyboru żetonów w menu. Lub możesz napotkać błędy zapisu i weryfikować błędy. W takich przypadkach przeczytaj mój inny Instruktaż „Hacking eXtreme Burner”, aby rozwiązać problem.

Udanego programowania.

Zalecana: