Digispark i programowanie przez ISP

Dziwne błędy przy próbie wgrywania programu na Digispark’a? Konieczna wymiana lub naprawa bootloadera? Czasami nie ma rady – i trzeba użyć programator ISP. Płytki jak Arduino UNO mają już wlutowane piny – wystarczy nałożyć wtyczkę od programatora. W przypadku Digispark jest trochę trudniej. Żeby sobie ułatwić – zbudowałem prostą płytkę, która znacznie ułatwia programowanie.

Podłączenie ISP do Digispark

Mój programator to usbasp2:

USBASP2

Wasz może się trochę różnić z wyglądu – ale co do zasady (większość)  działa tak samo.

Używam 6-pinowego nagłówka. Digispark można podłączyć do ISP:

Płytka

Nie było tu wielkiej filozofii. Oprócz podłączenia dla ISP dodałem jedynie  kilka szczegółów:

  • Żeńskie kabelki masy i 5v – dla Digisparków, w których wlutowałem kątowe piny,
  • Wyprowadzenie wszystkich portów na piny i gniazda,
  • Dodatkowe wyjścia 5v i GND,
  • Dodatkowy przycisk sprowadzający pin p5 do masy (aka reset).

Układ zlutowałem na niewielkiej płytce uniwersalnej:

ICSP:

Dodatkowe wyjścia zasilania i masy:

I przycisk ściągający P5 do masy:

Czasami lutuję do Digispark’ów proste piny:

…a czasami kątowe; dzięki dodatkowym przewodom mogę Digisparka łatwo zasilić:

Testy

Krótki programik – zapala diodę na 1 sekundę i wygasza na 100ms:

Włożyłem Digispark’a do płytki:

Uruchomiłem programowanie z Arduino IDE. Poproszony („Plug in device now”)  wcisnąłem przycisk reset :

Dzięki dodatkowemu przyciskowi sprowadzającemu P5 do masy nie muszę wpinać – wypinać Digispark’a z USB, żeby go zaprogramować. Wystarczy przycisnąć…

Teraz podłączyłem płytkę przez ISP:

I sprawdziłem połączenie:

Widać stąd, że udało się skontaktować z Digispark przez USB i programator USBasp2.

Wypalanie bootloadera

Jeżeli chcecie przekompilować samemu bootloader – więcej dowiecie się z tekstu Digispark i micronucleus: crash.

Podłączam Digisparka, i wypalam bootloader:

Wszystko działa. Test zdany:)

Errata

W pierwszej wersji reset wykonałem na przycisku i rezystorze. Postanowiłem to jednak poprawić zgodnie z sugestiami na blogu mikrokontrolery:

Układ resetu (na podstawie: mikrokontrolery.blogspot.pl)

Na płytce wygląda to tak:

Podsumowanie

Głównym impulsem do zrobienia tej płytki była potrzeba (kolejna) wypalenia bootloadera na Digisparku. Zazwyczaj wiąże się to z koniecznością znalezienia garści przewodów… Co wcale nie jest takie  łatwe:) Podobnie jak zapamiętanie ich kolejności…

 Czasami warto poświęcić chwilę na zrobienie sobie porządnego narzędzia. Cała robota zajęła mi dosłownie godzinę czy dwie. W zamian dużo łatwiej będzie mi odświeżyć bootloader – ale i programować samego Digispark’a z poziomu Arduino IDE (reset!).

Oryginalne Digispark i niektóre klony mają wyłączony reset. Nie da się ich przeprogramować ściągając P5 do masy.

Źródła

2 myśli nt. „Digispark i programowanie przez ISP”

Dodaj komentarz

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