Spisu treści:

Programowanie ATTiny85, ATTiny84 i ATMega328P: Arduino jako ISP: 9 kroków (ze zdjęciami)
Programowanie ATTiny85, ATTiny84 i ATMega328P: Arduino jako ISP: 9 kroków (ze zdjęciami)

Wideo: Programowanie ATTiny85, ATTiny84 i ATMega328P: Arduino jako ISP: 9 kroków (ze zdjęciami)

Wideo: Programowanie ATTiny85, ATTiny84 i ATMega328P: Arduino jako ISP: 9 kroków (ze zdjęciami)
Wideo: Podłączanie i programowanie Digispark Attiny 85 Arduino IDE 2024, Lipiec
Anonim
Programowanie ATTiny85, ATTiny84 i ATMega328P: Arduino jako ISP
Programowanie ATTiny85, ATTiny84 i ATMega328P: Arduino jako ISP
Programowanie ATTiny85, ATTiny84 i ATMega328P: Arduino jako ISP
Programowanie ATTiny85, ATTiny84 i ATMega328P: Arduino jako ISP

Przedmowa

Ostatnio rozwijałem kilka projektów IoT opartych na ESP8266 i stwierdziłem, że procesor lokalny ma problemy z wykonaniem wszystkich zadań, których potrzebowałem do zarządzania, więc zdecydowałem się rozdzielić niektóre z mniej ważnych czynności na inny mikrokontroler w w ten sposób uwalniając ESP8266, aby mógł kontynuować swoją pracę jako urządzenie IoT.

Biorąc pod uwagę, że chciałem opublikować swój projekt jak najszerszemu gronu odbiorców, zdecydowałem się użyć Arduino IDE jako preferowanej platformy programistycznej, ponieważ ma tak szeroko wspieraną społeczność.

Ograniczenia projektowe

Aby zapewnić rozsądną rozpiętość urządzeń docelowych, pozwalającą na dobór odpowiedniego mikrokontrolera do danej aplikacji, zdecydowałem się na następujące części firmy Atmel; ATMega328P, ATTiny84 i ATTiny85. Aby ograniczyć złożoność niezbędnego programatora, ograniczyłem wybór zegara do wewnętrznego dla wszystkich urządzeń i zewnętrznego 16 MHz tylko dla ATMega328P i ATTiny84.

Poniżej znajduje się zbiór uwag na temat programowania za pomocą Arduino i opis tego, jak złożyłem prosty programator oparty na Arduino Uno dla tych urządzeń (zdjęcia powyżej).

Jakich części potrzebuję?

Do zbudowania programatora potrzebne będą następujące części

  1. 1 szt. Arduino Uno
  2. 2 gniazda 28-stykowe Zero Insertion Force (ZIF) DIP (do przechowywania ATMega328P, ATTiny85, ATTiny84)
  3. 1 z osłony prototypu Arduino (mam swoją tutaj;
  4. 2 wyłączone diody LED 5 MM
  5. 2 wyłączone rezystory 1K
  6. 1 wyłączony rezystor 10K
  7. 4 kondensatory ceramiczne 22pF
  8. 2 kryształy 16 MHz
  9. 3 kondensatory ceramiczne 0.1uF
  10. 1 off 47uF kondensator elektrolityczny
  11. 1 off 10uF kondensator elektrolityczny;
  12. Drut do owijania drutu o różnych długościach.

Jakiego oprogramowania potrzebuję?

Arduino IDE 1.6.9

Jakich umiejętności potrzebuję?

  1. Znajomość Arduino IDE
  2. Trochę wiedzy o elektronice i sposobie lutowania
  3. Duża zręczność manualna
  4. Mnóstwo cierpliwości i dobrego wzroku

Omówione tematy

  1. Ogólne wprowadzenie do programowania mikrokontrolerów Atmel
  2. ISP lub Bootloader: To wszystko jest trochę zagmatwane
  3. Przegląd obwodów
  4. Konfigurowanie programisty
  5. Korzystanie z programatora Arduino ISP
  6. Tworzenie kodu w systemie docelowym
  7. Gotchas
  8. Wniosek
  9. Użyte referencje

Zastrzeżenie

Jak zawsze, używasz tych instrukcji na własne ryzyko i są one nieobsługiwane

Krok 1: Ogólne wprowadzenie do programowania mikrokontrolerów Atmel

Ogólne wprowadzenie do programowania mikrokontrolerów Atmel
Ogólne wprowadzenie do programowania mikrokontrolerów Atmel
Ogólne wprowadzenie do programowania mikrokontrolerów Atmel
Ogólne wprowadzenie do programowania mikrokontrolerów Atmel
Ogólne wprowadzenie do programowania mikrokontrolerów Atmel
Ogólne wprowadzenie do programowania mikrokontrolerów Atmel

Istnieją dwie metody programowania mikrokontrolerów Atmel;

  1. W programowaniu systemowym (ISP),
  2. Programowanie samodzielne (poprzez bootloader).

Pierwsza metoda (1) programuje mikrokontroler bezpośrednio przez interfejs SPI po pierwszym zresetowaniu urządzenia. O ile nie podano inaczej, skompilowany wykonywalny program źródłowy jest zapisywany na urządzeniu przyrostowo w pamięci kodu, skąd jest wykonywany podczas uruchamiania. Istnieje wiele urządzeń ISP zdolnych do programowania urządzeń Atmel, z których kilka to (rys. 1); AVRISPmkII, Atmel-ICE, Olimex AVR-ISP-MK2, Olimex AVR-ISP500. Zdjęcie 2 pokazuje, w jaki sposób urządzenie ISP łączy się z ATMega328P (dziwnie oznaczonym ICSP) na płycie Arduino Uno R3 (zdjęcie 3 pokazuje pin ISP). Możliwe jest również zaprogramowanie mikrokontrolera Atmel poprzez jego interfejs SPI przy użyciu Arduino Uno jako ISP (rysunek 4), tutaj Uno jest używany do programowania ATMega328P.

Druga metoda (2) wykorzystuje mały fragment kodu znany jako „bootloader” trwale rezydujący w pamięci kodu wykonywalnego (zwykle zablokowany, aby zapobiec przypadkowemu nadpisaniu rys. 5). Ten kod jest wykonywany jako pierwszy po włączeniu zasilania lub zresetowaniu urządzenia i pozwala mikrokontrolerowi na przeprogramowanie się nowym kodem otrzymanym przez jeden z jego interfejsów ze źródła zewnętrznego. Metoda bootloadera jest wykorzystywana przez Arduino IDE do przeprogramowania Arduino mapowanego jako port komunikacyjny USB na PC (Lub MAC, Linux box itp., rys. 6) oraz w przypadku Arduino Uno komunikuje się z urządzeniem Atmel za pośrednictwem interfejs szeregowy na pinach IC 2 i 3 ATMega328P. Również Arduino Uno (z usuniętym mikrokontrolerem ATMega328P) może być używany do programowania ATMega328P za pomocą metody bootloadera, skutecznie działającego jako urządzenie adaptera USB na szeregowy (rys. 7).

Co to jest przejściówka USB na port szeregowy?

Adapter USB do portu szeregowego to sprzęt, który podłącza się do portu USB komputera i wygląda jak port szeregowy COM (spuścizna z wcześniejszych czasów, kiedy komputery używały standardu komunikacji szeregowej znanego jako EIA-232, V24 lub RS232), co pozwala na wysyłaj i odbieraj dane szeregowe na tych samych poziomach elektrycznych mikrokontrolera. Po wybraniu opcji Narzędzia -> Port -> COMx z Arduino IDE łączysz/interfejsujesz swój komputer z Arduino.

Takie urządzenie jest czasami określane jako FTDI (rysunek 8, który w rzeczywistości jest marką) lub CH340G itp. Połączenie USB do portu szeregowego w Arduino uno jest osiągane za pomocą ATMega16U2-MU(R) IC ZU4, jak na schemacie Arduino poniżej.

Dla przejrzystości obraz 9 identyfikuje dwa urządzenia Atmel i ich odpowiednie złącza ISP w Arduino Uno R3.

Uwaga 1: Jeśli zdecydujesz się wybrać trasę urządzeń FTDI, upewnij się, że kupujesz od renomowanego sprzedawcy, ponieważ na rynku było wiele tanich podrabianych urządzeń, które zawiodły po zastosowaniu aktualizacji systemu Windows.

Zalecana: