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

Dodaj komentarz

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