Dawno temu kiedy komputery posiadały jeszcze pory równoległe programowanie układów AVR wymagało jedynie kilku rezystorów. Dzisiaj w erze laptopów konieczne jest zbudowanie dodatkowego urządzenia pośredniczącego: programatora. Zadaniem urządzenia jest wysyłanie komend do układu docelowego w celu wykorzystania wbudowanego modułu ISP układów AVR, który to posiada między innymi możliwość zmiany zawartości pamięci Flash (programu).
Obecnie popularne programatory posiadają następujące wady:
Oraz co najgorsze:
Kod programatora opiera się na projekcie wchodzącym w skład pakietu LUFA1): http://www.fourwalledcubicle.com/AVRISP.php Natomiast płytka została zaprojektowana przeze mnie.
Element | Wartość | Opis |
---|---|---|
IC1 | AT90USB162 | Mikrokontroler |
USB | - | Pola lutownicze do podłączenia przewodu USB |
F1 | 500 [mA] | Bezpiecznik polimerowy |
R1 R2 | 22 [Ω] | Rezystory linii USB |
C1 | 1 [uF] | Kondensator stabilizatora napięcia 3V3 2) |
C3 C4 | 33 [pF] | Kondensatory oscylatora |
Y1 | 16 [MHz] | Oscylator kwarcowy |
C2 | 100 [nF] | Kondensator szyny zasilania |
C5 | 10 [uF] | Kondensator szyny zasilania |
R3 | 1 [kΩ] | Rezystor ustalający stan nieaktywny (wysoki) na sygnale reset uC |
R4 | 1 [kΩ] | Rezystor ustalający stan nieaktywny (wysoki) na sygnale hardware bootloader uC |
R5 R6 | x [kΩ] | Rezystory ograniczające prądy w diodach sygnalizacyjnych |
LED1 LED2 | Diody sygnalizacyjne | |
Złącza szpilkowe typu goldpin |
1. Ściągamy potrzebne narzędzia:
Osoby korzystające z Linuksa powinny pobrać odpowiednie dla siebie narzędzia i odpowiednio dostosować następujące kroki.
Kod z pakietu LUFA wymaga modyfikacji: pin PB4 musi być w czasie pracy nieaktywny. Najnowszy kod posiada błąd uniemożliwiający poprawną prace (reset aktywny stanem wysokim)
2. Sprawdzony układ podłączamy do komputera, za pomocą menedżera urządzeń lub programu USBView powinniśmy zaobserwować pojawienie się nowego urządzenia. (Pod Linuksem można użyć narzędzia lsusb)
3. Instalujemy sterowniki które znajdują się w katalogu instalacyjnym narzędzia Atmel FLIP.
4. Jeżeli skompilowaliśmy program samodzielnie, do zaprogramowania układu możemy wykorzystać makro znajdujące się w pliku makefile. Jeżeli wgrywamy prekompilowany program należy:
5. Resetujemy urządzenie poprzez ponowne podłączenie do portu USB. W śród urządzeń USB powinno się pojawić nowe urządzenie, sterowniki instalujemy z katalogu instalacji libUSB-win.
6. Jeżeli nasz system nie chce uruchomić niepodpisanego sterownika musimy jeszcze wygenerować odpowiednie pliki INF za pomocą narzędzia inf-wizard należącego do pakietu libUSB-win.
Jeżeli programujemy za pomocą avrdude należy korzystać z następującego schematu:
avrdude -pXX -cavrispmkii -P usb
gdzie pod XXX wstawiamy nazwę układu do programowania (np. -pm8 dla ATmega8). Użytecznym argumentem linii poleceń jest
-B 4
który ustala okres trwania sygnału taktującego (w tym przypadku 4 [us]: 250 [kHz] )
Kiedy kupujemy MCU ma on wgrany jedynie bootloader znajdujący się na końcu pamięci programu. Po resecie PC3) “przelatuje” przez całą pamięć (wypełnioną rozkazem NOP4) ) aż trafia na program bootloadera. Po wgraniu oprogramowania MCU, bootloader nie jest automatycznie aktywowany. Można jednak wymusić uruchomienie bootloadera już po wgraniu programu. Należy:
Aby to zrobić należy zewrzeć następujące punkty do masy (układ ma być podłączony do komputera).
TICK Do zwarcia linii z masą konieczne jest metalowe narzędzie. Jedna z ścieżek może zostać zwarta za pomocą czarnego przewodu wyprowadzonego z płytki.
Należy zwrócić szczególną ostrożność podczas procedury, można spowodować zwarcie linii zasilania komputera. Kolorem czerwonym oznaczyłem ścieżki szyny zasilania, niebieskim masę a fioletowym ścieżki do zwarcia z masą.