Programowanie przez ICSP

ICSP to skrót: In-Circuit Serial Programming. Cała filozofia sprowadza się do tego, że mikroprocesor może być programowany bezpośrednia na docelowej płytce. Żeby wgrać na niego nowy kod nie musimy (jak to ‚drzewiej’ bywało) go demontować, wkładać do programatora i po (udanym) wgraniu naszego programu z powrotem wpinać go do docelowej płytki. ICSP znacznie przyspiesza to tworzenie rozwiązań, oszczędza mnóstwo pracy i pozwala uniknąć mechanicznych uszkodzeń komponentów (np. pogiętych nóżek).
Oczywiście nasza płytka musi być rozszerzona o odpowiednie złącze do którego podłączymy programator.

Mikroprocesory wyposażone w ICSP wymagają osobnego programatora. Taki programator z jednej strony podłącza się go do naszego komputera – obecnie najczęściej do portu USB. Z drugiej strony odpowiednią taśmą łączymy go z gniazdem ICSP na płytce mikroprocesora.

W przypadku serii Arduino, złącza ICSP często znajdują się na płytkach. Weźmy na przykład model Nano: ICSP umieszczono na krawędzi przeciwległej do złącza USB:
IMG_0316
Próżno szukać takiego złącza w przypadku ProMini – po prostu nie zmieściło się na płytce. Ale i z tym poradzimy sobie za chwilę.

Interfejs ICSP posiadają procesory Atmel serii ATTiny (niektóre tylko TPI) i ATMega. XMega programowany jest za pomocą interfejsu PDI.

Samo złącze ICSP występuje w 2 wersjach: 6 i 10-pinowej. Filozofia programowania jest taka sama – jedyna różnica tkwi w organizacji złącza:

  • 6-cio pinowe:
    icsp_6pin
  • 10-cio pinowe:

Znaczenie poszczególnych pinów:

Pin Skrót Opis
MOSI Master Output Slave Input Urządzenie nasłuchuje danych z programatora
MISO Master Input Slave Output Urządzenie wysyła dane do programatora
RST Reset W stanie niskim rozmawia z masterem; w stanie wysokim – nie
CLK Clock Sugnał zegarowy
VCC VCC Zasilanie układu (jeżeli przez programator; zobacz poniżej)
GND Ground Masa

Po zlokalizowaniu złącza ICSP konieczne jest określenie, gdzie znajduje się jego Pin 1. Jest on najczęściej zaznaczony jako ‚1’ lub kropką.

Odwrotne włożenie wtyczki programatora może doprowadzić do zniszczenia programowanego układu!

Wiedząc, gdzie jest pierwszy pin, możemy odpowiednio włożyć wtyczkę z taśmą. Oglądamy dokładnie wtyczkę szukajcie na niej małego trójkącika oznaczającego żyłę numer 1 (przy krawędzi). Wtyczkę wkładamy tak, aby trójkącik wskazywał pin 1 złącza.

Podłączenie do Arduino ProMini

Jak wspomniałem powyżej, Arduino ProMini nie ma na płytce wyprowadzonego normalnego złącza ICSP. Żeby podłączyć do niego programator, musimy wyprowadzić odpowiednie piny interfejsu SPI. Są to:

Oznaczenie pinu na płytce ProMini Funkcja Pin złącza ICSP
12 MISO 1 (MISO)
VCC Napięcie +5V 2 (VCC)
13 Zegar 3 (SCK)
11 MOSI 4 (MOSI)
RST Reset 5 (RST)
GND Masa 6 (GND)

Zasilanie z programatora

Programatory posiadają zazwyczaj opcję zasilania programowanego układu. Do wyboru zasilanian służy (zazwyczaj) 3-pinowe złącze zainstalowane na płytce programatora. Wybór zasilania dokonuje się za pomocą zworki łącząc piny oznaczone 3v3 lub 5V (zewnętrzne) ze środkowym.

Wybór zasilania zależy od samego mikroprocesora i sposobu jego instalacji. Dla Arduino Nano lub ProMini z procesorem Atmel ATMega328 wybieramy opcję 5V. ProMini z procesorem Atmel ATMega168 – 3v3. XMega toleruje jedynie 3v3 – podłączenie 5V zniszczy układ!!!

Programatory

Poniżej zamieściłem zdjęcie 2 programatorów zgodnych z USB AVR MK II. Są najtańsze i zazwyczaj działają bez zarzutu.
IMG_0360
Prezentowane modele pochodzą z firmy msx-elektronika.pl. Zwróćcie uwagę na to, że:

  • Obydwa są dwunapięciowe (3v3 i 5v);
  • Zielony posiada złącza 6 i 10 pinowe;
  • Czarny posiada złącza 6-pinowe TPI, ICSP i PDI – można za jego pomocą programować ATTiny, ATMega i XMega (PDI, tylko 3v3).
  • Zielony łączymy z komputerem ‚dużym’ USB – wtyczka typu ‚B’; czarny – ‚normalnym’ – wtyczka typu ‚A’

Programatory te kosztują w granicach 50 PLN.

Uwagi

Niektóre płytki możesz programować bez użycia ICSP:

Układ Programowanie przez USB Programowanie przez UART Programowanie przez ICSP
Arduino Nano Tak Tak Tak
Arduino ProMini Nie Tak Tak
Arduino Uno R3 Tak Tak Tak
Raspberry Pi Nie ma takiej potrzeby:)

Dodatki

Instalacja sterowników dla AVR ISP Mk II pod Windows 8.1

4 myśli nt. „Programowanie przez ICSP”

    1. Hej,
      cieszę się, że Ci się tekst spodobał. Grafika… faktycznie amatorska, ale na tym się nie znam w ogóle:)
      Zapraszam ponownie,
      Pozdrawiam,
      Arek

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *