Elektronika     Programator mikrokontrolerów AVR (74HC244)        




Jest to prosty programator (ulepszony STK200/300) 8-bitowych mikrokontrolerów AVR (ATtiny/ATmega)
firmy Atmel, podłączany do portu równoległego (LPT) komputera PC. Służy do programowania mikro-
kontrolerów w systemie (ISP - In-System Programming), z którego musi być zasilany napięciem stabi-
lizowanym od 3 do 5V. Jest całkowicie odporny na odwrotne podłączenie polaryzacji napięcia zasila-
jącego. Posiada dwie diody LED sygnalizujące włączenie zasilania (zielona) oraz transmisję danych
(czerwona). Sygnały programujące są wyprowadzone na standardowe 10-pinowe złącze ISP i powinny
być połączone z systemem docelowym przewodami, o długości ok. 30 cm. Wszystkie przewody GND
powinny być połączone z masą programatora i systemu docelowego, aby zapewnić ekranowanie sy-
gnałów programujących. Układ zmontowałem na płytce dwustronnej (16 przelotek) o wymiarach 65x45
mm, na której elementy są montowane powierzchniowo (na górnej warstwie). Jako małą ciekawostkę
dodam, że płytkę prototypową wykonałem bez trawienia (mini wiertarką z małym frezem). Programator
współpracuje z następującymi programami sterującymi: ISP Programmer 1.2.0.56, PonyProg2000 2.08c,
Bascom AVR 2.0.7.1 oraz AVR-ISP 5.6.0.1.

W razie problemów, należy zmienić w BIOS'ie tryb pracy portu równoległego na "Bi-Directional". Sys-
tem Windows XP może sprawdzać co jakiś czas, czy do portu równoległego nie podłączono drukarki.
Sprawdzanie to może powodować nieprawidłową pracę programatora, podłączonego do tego portu.
Aby wyłączyć ciągłe sprawdzanie portu równoległego, należy zmodyfikować następującą wartość
w rejestrze systemowym:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Parport\Parameters]
"DisableWarmPoll"=dword:00000001


Zmiana ta wymaga ponownego uruchomienia komputera, ale dzięki niej Windows XP sprawdzi obe-
cność drukarki tylko raz, podczas startu systemu (nie wykryje automatycznie drukarki, podłączonej
do portu LPT już po załadowaniu systemu). Aby włączyć ciągłe sprawdzanie portu LPT, należy temu
kluczowi ustawić wartość 0 i zrestartować komputer.

Konfiguracja programu ISP Programmer 1.2.0.56
Po instalacji uruchamiamy program i naciskamy przycisk "Setup". W nowym oknie "ISP Programmer Setup", z rozwi-
jalnej listy "ISP cable pinout" wybieramy pozycję "STK200/300 Evaluation Board", z listy "Port with ISP programmer"
wybieramy numer portu równoległego, do którego jest podłączony programator, a następnie naciskamy przycisk "OK".
Trzeba upewnić się, że pole "Autodetect" jest zaznaczone, a z rozwijalnej listy obok jest wybrana pozycja "AVR".
Druga rozwijalna lista "Hz", służy do ustawiania szybkości transmisji danych i w razie błędów programowania, należy
wybrać mniejszą wartość. Po podłączeniu programatora do systemu docelowego można nacisnąć przycisk "Read
signature", co spowoduje próbę rozpoznania mikrokontrolera przez odczytanie jego sygnatury. Jeśli uda się rozpoznać
mikrokontroler, to po napisie "Device signature" pojawią się informacje o nim (model, pojemność pamięci FLASH
i EEPROM). Wtedy uaktywnią się też przyciski, umożliwiające wykonywanie takich operacji, jak: odczyt/zapis/weryfi-
kacja, czy kasowanie pamięci mikrokontrolera. Przed odczytem/zapisem pamięci należy wskazać pliki, w których
zostaną zapisane dane odczytane z pamięci FLASH/EEPROM oraz pliki, które zawierają dane do zaprogramowania
w pamięci FLASH/EEPROM mikrokontrolera. Po naciśnięciu przycisku "Fuse and lock bits", pojawi się nowe okno
służące do odczytywania/modyfikowania ustawień konfiguracyjnych mikrokontrolera (tzw. fuse bitów).


Konfiguracja programu PonyProg2000 2.08c
Po instalacji uruchamiamy program i z menu "Setup" wybieramy pozycję "Interface Setup...". W nowym oknie "I/O port
setup" zaznaczamy pole "Parallel", z rozwijalnej listy wybieramy pozycję "Avr ISP I/O", zaznaczamy pole z numerem portu
równoległego, do którego jest podłączony programator i naciskamy przycisk "OK". Następnie z menu "Setup" wybieramy
pozycję "Calibration". W nowym oknie "Yes or No" po upewnieniu się, że żaden program nie obciąża procesora, ani nie
używa twardego dysku, naciskamy przycisk "Yes". Po kilku sekundach pojawi się okno "Notice" z informacją o zakoń-
czeniu kalibracji, które zamykamy naciskając przycisk "OK". Przed rozpoczęciem programowania, należy dokładnie
wybrać model mikrokontrolera za pomocą rozwijalnych list lub z menu "Device/AVR micro". Następnie można już wyko-
nywać takie operacje, jak: odczyt/zapis/ weryfikacja, czy kasowanie pamięci mikrokontrolera. Większą część okna
programu zajmuje przewijalne pole (bufor), które zawiera dane odczytane z pamięci FLASH i EEPROM mikrokontrolera
(różnią się kolorami) i jednocześnie dane do zaprogramowania. Po zaznaczeniu w menu "Edit" pozycji "Edit Buffer
enabled", wartość każdej komórki pamięci w buforze można dowolnie modyfikować. Do buforów można również wczytać
dane z plików w różnych formatach (w tym HEX). Po wybraniu z menu "Command" pozycji "Security and Configuration
Bits...", pojawi się nowe okno służące do odczytywania/modyfikowania ustawień konfiguracyjnych mikrokontrolera (tzw.
fuse bitów). Przy próbie odczytania/zapisania mojego mikrokontrolera ATmega168P, pojawił się komunikat o błędzie
"Device missing or unknown device (-24)". Po naciśnięciu przycisku "Ignore" odczyt/zapis przebiegał prawidłowo.
Jest to spowodowane tylko tym, że program nie rozpoznaje sygnatury zwracanej przez kilka modeli mikrokontrolerów.


Konfiguracja programu Bascom AVR 2.0.7.1
Po instalacji uruchamiamy program i z menu "Options" wybieramy pozycję "Programmer". W nowym oknie "BASCOM-
AVR Options" z rozwijalnej listy "Programmer" wybieramy pozycję "STK200/ STK300 Programmer", w grupie "Parallel"
z listy "LPT-address" wybieramy adres portu równoległego, do którego jest podłączony programator i naciskamy przy-
cisk "OK". Następnie z menu "File" wybieramy pozycję "New" i naciskamy klawisz [F4]. Pojawią się dwa okna informa-
cyjne, które zamykamy naciskając przycisk "OK". W nowym oknie "AVR ISP STK programmer" z rozwijalnej listy "Chip"
wybieramy model mikrokontrolera. Po podłączeniu programatora do systemu docelowego można też z menu "Chip"
wybrać pozycję "Identify", co spowoduje próbę rozpoznania mikrokontrolera przez odczytanie jego sygnatury. Jeśli
uda się rozpoznać mikrokontroler, to z listy automatycznie zostanie wybrany odpowiedni model. Następnie można już
wykonywać takie operacje, jak: odczyt/zapis/weryfikacja, sprawdzenie czystości, czy kasowanie pamięci mikrokontro-
lera. W zakładkach "FlashROM" i "EEPROM", znajdują się przewijalne pola edycyjne (bufory), które zawierają dane
odczytane z pamięci FLASH/EEPROM mikrokontrolera i jednocześnie dane do zaprogramowania. Wartość każdej
komórki pamięci w buforze można dowolnie modyfikować. Do buforów można również wczytać dane z plików (HEX).
Zakładka "Lock and Fuse Bits" służy do odczytywania/modyfikowania ustawień konfiguracyjnych mikrokontrolera (tzw.
fuse bitów).


Konfiguracja programu AVR-ISP 5.6.0.1
Po instalacji uruchamiamy program i naciskamy przycisk "Setup". W nowym oknie "ISP Configuration" z rozwijalnej listy
"Communications Device", wybieramy numer portu równoległego, do którego jest podłączony programator. Rozwijalna
lista "Programmer ISP Speed" służy do ustawiania szybkości transmisji danych i w razie błędów programowania, należy
wybrać z niej pozycję "Medium" lub "Slow". Okno zamykamy naciskając przycisk "OK". Po podłączeniu programatora do
systemu docelowego z rozwijalnej listy "Device" wybieramy model mikrokontrolera, co spowoduje próbę odczytania jego
sygnatury. Jeśli uda się rozpoznać mikrokontroler, to na pasku stanu pojawi się napis "ISP Initialized; Detected Device",
a po nim model wykrytego mikrokontrolera. Niestety rozpoznanie mikrokontrolera, nie powoduje w programie automaty-
cznej zmiany modelu wybranego na liście "Device", co w przypadku wybrania złego modelu, wpływa na rozmiary buforów
pamięci FLASH/EEPROM, a tym samym powoduje zbędne odczytywanie/zapisywanie nieistniejących obszarów pamię-
ci mikrokontrolera. Dlatego z listy "Device", należy zawsze wybrać taki sam model mikrokontrolera, jaki został wykryty
przez program. Następnie można już wykonywać takie operacje, jak: odczyt/zapis/weryfikacja, czy kasowanie pamięci
mikrokontrolera. W zakładkach "Flash Memory" i "EEPROM Memory", znajdują się przewijalne pola edycyjne (bufory),
które zawierają dane odczytane z pamięci FLASH/EEPROM mikrokontrolera i jednocześnie dane do zaprogramowa-
nia. Wartość każdej komórki pamięci w buforze można dowolnie modyfikować. Do buforów można również wczytać
dane z plików (HEX). Zakładka "Fuses & Lock Bits" służy do odczytywania/modyfikowania ustawień konfiguracyjnych
mikrokontrolera (tzw. fuse bitów).


SPIS ELEMENTÓW:

Rezystory:
R1-R9 - 330
R10 - 150
R11-R13 - 100k
R14 - 10
R15, R16 - 470
Kondensatory:
C1-C3 - 100p
C4 - 100n
Układy scalone:
U1 - 74HC244

Złącza:
CON1 - DB25M proste (męskie)
CON2 - IDC10M proste (męskie)
Diody:
D1 - 1N4148
LED1 - zielona 5 mm
LED2 - czerwona 5 mm

Inne:
U1 - podstawka DIP20 zwykła