- Komponenty wymagane do programowania ATtiny85 przez USB
- Układ scalony mikrokontrolera ATtiny85 - wprowadzenie
- Flashowanie programu ładującego na ATtiny85 przy użyciu Arduino Uno
- Schemat obwodu dla programatora ATtiny
- Instalowanie sterowników Digispark
- Konfigurowanie Arduino IDE do programowania ATttiny85
Rodzina ATtiny to seria jednych z najmniejszych mikrokontrolerów na rynku AVR. Te mikrokontrolery są w stanie wykorzystywać wiele bibliotek dostępnych na platformie Arduino. Układ mikrokontrolera ATtiny85 to 8-pinowy, 8-bitowy mikrokontroler AVR. Jego niewielkie rozmiary i niskie zużycie energii sprawiają, że doskonale pasuje do przenośnych projektów o niewielkich rozmiarach i niskim zapotrzebowaniu na energię. Ale umieszczenie kodu na chipie może być pewnym wyzwaniem, ponieważ nie ma interfejsu USB, takiego jak płytki mikrokontrolera.
W naszym poprzednim samouczku zaprogramowaliśmy ATtiny85 za pomocą Arduino Uno. Jednak podłączenie Attiny85 do Arduino i używanie Arduino jako dostawcy usług internetowych może być trudne i czasochłonne. W tym samouczku zamierzamy zbudować płytkę programistyczną ATtiny85, abyśmy mogli ją bezpośrednio podłączyć i zaprogramować tak, jak inne płytki mikrokontrolera.
Komponenty wymagane do programowania ATtiny85 przez USB
- Arduino UNO (tylko za pierwszym razem podczas wgrywania bootloadera)
- ATtiny85 IC
- Wtyk USB typu A męski
- 3 rezystory (2 × 47Ω i 1 × 1kΩ)
- 3 diody (2 x dioda Zenera i 1 x dioda IN5819)
- 8-pinowa podstawa IC
- Płytka prototypowa
- Przewody połączeniowe
Układ scalony mikrokontrolera ATtiny85 - wprowadzenie
Atmel ATtiny85 to wysokowydajny 8-bitowy mikrokontroler małej mocy oparty na zaawansowanej architekturze RISC. Ten układ mikrokontrolera jest wyposażony w pamięć flash 8KB ISP, 512B EEPROM, 512-bajtową pamięć SRAM, 6 linii we / wy ogólnego przeznaczenia, 32 rejestry robocze ogólnego przeznaczenia, jeden 8-bitowy zegar / licznik z trybami porównania, jeden 8-bitowy szybki timer / licznik, USI, wewnętrzne i zewnętrzne przerwania, 4-kanałowy 10-bitowy konwerter A / D, programowalny zegar watchdog z wewnętrznym oscylatorem, trzy tryby oszczędzania energii wybierane programowo i debugWIRE do debugowania na chipie. ATtiny85 Pinout podano poniżej:
Większość pinów I / O chipa ma więcej niż jedną funkcję. Opis pinów ATtiny85 dla każdego pinu znajduje się w poniższej tabeli:
Nr pinu |
Nazwa pinu |
Opis pinów |
1 |
PB5 (PCINT5 / ADC0 / dW) |
PCINT5: Przerwanie zmiany pinu 0, źródło5 RESET: Reset Pin ADC0: kanał wejściowy ADC 0 dW: debugowanie WIRE I / O |
2 |
PB3 (PCINT3 / XTAL1 / CLKI / ADC3) |
PCINT3: Przerwanie zmiany pinu 0, Źródło3 XTAL1: pin oscylatora kwarcowego 1 CLKI: zewnętrzne wejście zegara ADC3: kanał wejściowy ADC 3 |
3 |
PB4 (PCINT4 / XTAL2 / CLKO / OC1B / ADC2) |
PCINT4: Przerwanie zmiany pinu 0, źródło 4 XTAL2: pin 2 oscylatora kwarcowego CLKO: Wyjście zegara systemowego OC1B: Timer / Licznik1 Porównaj dopasowanie wyjścia B. ADC2: kanał wejściowy ADC 2 |
4 |
GND |
Pin uziemienia |
5 |
PB0 (MOSI / DI / SDA / AIN0 / OC0A / AREF / PCINT0) |
MOSI: SPI Master Data Output / Slave Data Input DI: Wejście danych USI (tryb trójprzewodowy) SDA: wejście danych USI (tryb dwuprzewodowy) AIN0: komparator analogowy, wejście dodatnie OC0A: Timer / Licznik 0 Porównaj Dopasuj wyjście A. AREF: zewnętrzne zadawanie analogowe PCINT0: Przerwanie zmiany pinu 0, źródło 0 |
6 |
PB1 (MISO / D0 / AIN1 / OC0B / OC1A / PCINT1) |
MISO: SPI Master Data Input / Slave Data Output ZRÓB: Wyjście danych USI (tryb trójprzewodowy) AIN1: komparator analogowy, wejście ujemne OC0B: Timer / Licznik 0 Porównanie dopasowania wyjścia B. OC1A: Timer / Licznik1 Porównaj Dopasuj wyjście A PCINT1: Przerwanie zmiany pinu 0, źródło 1 |
7 |
PB2 (SCK / USCK / SCL / ADC1 / T0 / INT0 / PCINT2) |
SCK: Szeregowe wejście zegara USCK: USI Clock (tryb trzech przewodów) SCL: USI Clock (tryb dwuprzewodowy) ADC1: kanał wejściowy ADC 1 T0: Zegar / Licznik 0 Źródło zegara INT0: Wejście zewnętrznego przerwania 0 PCINT2: Przerwanie zmiany pinu 0, źródło 2 |
8 |
VCC |
Pin napięcia zasilania |
Flashowanie programu ładującego na ATtiny85 przy użyciu Arduino Uno
Aby zaprogramować ATtiny85 bez Arduino, musielibyśmy najpierw załadować do niego bootloader za pomocą płyty Arduino UNO, jest to proces jednorazowy i po jego wykonaniu nie będziemy potrzebować ponownie płyty UNO. Program ładujący to specjalny program, który działa w mikrokontrolerze, który należy zaprogramować. Jednym z najwygodniejszych sposobów załadowania danych programu do mikrokontrolera jest użycie programu ładującego. Program ładujący znajduje się na MCU i wykonuje nadchodzące instrukcje, a następnie zapisuje nowe informacje o programie w pamięci mikrokontrolera. Flashowanie bootloadera na mikrokontrolerze eliminuje potrzebę stosowania specjalnego zewnętrznego sprzętu (Programmer Boards) do programowania mikrokontrolera i będziesz mógł go zaprogramować bezpośrednio za pomocą połączenia USB. Digispark ATtiny85Board uruchamia program ładujący „micronucleus tiny85”, pierwotnie napisany przez Bluebie. Program ładujący to kod, który jest wstępnie zaprogramowany w Digispark i pozwala mu działać jako urządzenie USB, dzięki czemu może być programowany przez Arduino IDE. Zamierzamy również sflashować ten sam program ładujący digispark attiny85 na ATtiny85.
Poniżej przedstawiono przewodnik krok po kroku dotyczący flashowania bootloadera na ATtiny85 przy użyciu Arduino Uno i Arduino IDE:
Krok 1: Konfiguracja Arduino Uno jako dostawcy usług internetowych:
Ponieważ ATtiny85 jest tylko mikrokontrolerem, wymaga zaprogramowania ISP (In-System Programming). Aby zaprogramować ATtiny85, musimy najpierw skonfigurować Arduino Uno jako ISP, aby działał jako programista dla ATtiny85. W tym celu podłącz Arduino Uno do laptopa i otwórz Arduino IDE. Następnie przejdź do Plik> Przykład> ArduinoISP i prześlij kod Arduino ISP.
Krok 2: Schemat obwodu dla flashowania programu ładującego na ATtiny85:
Pełny schemat Flashowania programu ładującego na ATtiny85 znajduje się poniżej:
Kondensator 10 µf jest podłączony między pinami Reset i GND Arduino. Pełne połączenia podano w poniższej tabeli:
ATtiny85 Pin |
Pin Arduino Uno |
Vcc |
5V |
GND |
GND |
Pin 2 |
13 |
Pin 1 |
12 |
Pin 0 |
11 |
Resetowanie |
10 |
Teraz podłącz Arduino Uno do laptopa i otwórz Arduino IDE. Znajdź port COM, do którego jest podłączony Uno. W moim przypadku jest to COM5.
Następnie pobierz pliki programu ładującego ATtiny85 z podanego linku. Otwórz plik „ Burn_AT85_bootloader.bat ” i zmień numer portu COM „PCOM5” na dowolny numer portu COM, do którego jest podłączony Uno. Zapisz zmiany przed wyjściem.
Teraz przenieś edytowane pliki „ Burn_AT85_bootloader.bat ” i „ ATtiny85.hex ” do folderu głównego Arduino IDE (C: \ Program Files (x86) Arduino).
Następnie kliknij prawym przyciskiem myszy „ Burn_AT85_bootloader.bat ” i wybierz „Uruchom jako administrator”. Sflashowanie programu ładującego zajmuje około 5 do 6 sekund. Jeśli wszystko poszło dobrze, powinien pojawić się komunikat „AVRdude gotowe. Dziękuję. Naciśnij dowolny klawisz, aby kontynuować…”.
Dzięki temu program ładujący jest pomyślnie instalowany na układzie ATtiny85. Teraz nadszedł czas, aby podłączyć USB do ATtiny85, abyśmy mogli go bezpośrednio zaprogramować. Schemat obwodu do programowania ATtiny85 przez USB jest podany poniżej:
Schemat obwodu dla programatora ATtiny
Schemat pochodzi ze schematu płyty Digispark ATtiny85, ale ponieważ naszym celem jest zbudowanie programatora dla ATtiny85, łączymy tylko męską wtyczkę USB z ATtiny85.
R3 to rezystor podciągający, który jest podłączony między pinami Vcc i PB3 układu scalonego, podczas gdy diody Zenera (D1-D2) są dodawane, aby zapewnić całkowitą ochronę interfejsu USB. Po wlutowaniu wszystkich elementów na płytce perf będzie wyglądać mniej więcej tak:
Instalowanie sterowników Digispark
Aby zaprogramować ATtiny85 za pomocą USB, musisz mieć zainstalowane na swoim laptopie sterowniki Digispark, jeśli ich nie masz, możesz je pobrać za pomocą linku podanego powyżej. Następnie rozpakuj plik zip i kliknij dwukrotnie aplikację „ DPinst64.exe ”, aby zainstalować sterowniki.
Po pomyślnym zainstalowaniu sterowników podłącz kartę ATtiny85 do laptopa. Teraz przejdź do Menedżera urządzeń w systemie Windows, a urządzenie ATtiny85 zostanie wymienione w „urządzeniach libusb-win32” jako „Digispark Bootloader”. Jeśli nie możesz znaleźć „urządzeń libusb-win32” w menedżerze urządzeń, przejdź do widoku i kliknij „Pokaż ukryte urządzenia”.
Konfigurowanie Arduino IDE do programowania ATttiny85
Aby zaprogramować płytkę ATtiny85 z Arduino IDE, najpierw musimy dodać obsługę płyty Digispark do Arduino IDE. W tym celu przejdź do Plik> Preferencje i dodaj poniższe łącze w adresach URL Menedżera dodatkowych tablic i kliknij przycisk „OK”.
Następnie przejdź do narzędzia> Tablica> Menedżer tablicy i wyszukaj „Digistump AVR” i zainstaluj najnowszą wersję.
Po zainstalowaniu, teraz będziesz mógł zobaczyć nowy wpis w menu tablicy zatytułowany „Digispark”.
Teraz przejdź do pliku> Przykłady> Podstawy i otwórz przykład Blink.
Zmień tam numer pinu z LED_BUILTIN na 0.
Teraz wróć do Tools -> Board i wybierz kartę „ Digispark (Default - 16mhz) ”. Następnie kliknij przycisk przesyłania w Arduino IDE.
Uwaga: Podłącz kartę ATtiny85 do komputera tylko wtedy, gdy Arduino IDE wyświetla komunikat „Podłącz urządzenie teraz”.
Po wgraniu kodu dioda LED podłączona do ATtiny85 powinna zacząć migać.
W ten sposób możesz zbudować własną płytkę programującą ATtiny85 Arduino. Poniżej przedstawiono działające wideo tego samego. Jeśli masz jakieś pytania, zostaw je w sekcji komentarzy. W przypadku innych pytań technicznych możesz również rozpocząć dyskusję na naszych forach.