Elektronika     Programator mikrokontrolerów PIC (74LS06)        




Jest to prosty programator (zgodny z TAIT Serial Programmer) 8-bitowych mikrokontrolerów PIC (12F,
16F, 18F) firmy Microchip, podłączany do portu równoległego (LPT) komputera PC. Służy do progra-
mowania mikrokontrolerów w systemie (ICSP - In-Circuit Serial Programming), z którego musi być zasi-
lany napięciem stabilizowanym 5V. Posiada dwie diody LED sygnalizujące włączenie zasilania (zielona)
oraz transmisję danych (czerwona). Sygnały programujące są wyprowadzone na standardowe 10-pino-
we złącze ICSP 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 sygnałów programujących.
Mikrokontrolery PIC programowane wysokim napięciem, zwykle wymagają podania napięcia o wartości
ok. 13.2V na wyprowadzenie MCLR (VPP). Dlatego programator zawiera scaloną przetwornicę MC34-
063, podwyższającą (step-up) napięcie 5V z systemu. Nie polecam stosować układów HTC34063 firmy
Hitachi, ze względu na ich słabsze parametry i niestabilność. Wartość napięcia wyjściowego przetwor-
nicy, zależy od stosunku rezystancji rezystorów R13 i R14 oraz potencjometru P1, którym ustawia się
dokładną wartość napięcia programującego (w zakresie ok. 12.5-13.5V). Maksymalne napięcie progra-
mowania jest inne dla różnych modeli mikrokontrolerów PIC i wynosi od 9 do 14V. Zawsze należy spra-
wdzić jego wartość w nocie katalogowej danego modelu. Przekroczenie maksymalnej wartości napięcia
programowania może uszkodzić mikrokontroler, natomiast zbyt niska jego wartość uniemożliwi zaprogra-
mowanie. Aby uzyskać napięcie programowania regulowane potencjometrem P1 w zakresie ok. 8-9V,
należy użyć rezystora R13 o wartości 12k. Elementem wpływającym na wydajność prądową przetwor-
nicy jest cewka L1, o indukcyjności ok. 100 uH. Wykonałem ją nawijając 45 zwojów drutu DNE 0.5 mm
na toroidalnym rdzeniu (ze starej płyty głównej), o średnicy zewnętrznej 13 mm, średnicy otworu 8 mm
i szerokości 5 mm. Innym ważnym elementem jest dioda D1, która powinna mieć krótki czas przełączania
i małą pojemność własną. Nadają się diody Schottky, np. 1N5817, 1N5818, 1N5819, BYV26 (A-G), czy
BYV27 (50-200). Można użyć zwykłej diody prostowniczej 1N4001, ale przy takim samym obciążeniu
prądowym, straty w przetwornicy będą dużo większe niż przy użyciu diody Schottky. W modelowym
programatorze przy obciążeniu napięcia 13.2V prądem 52 mA (w tym dioda LED2 pobierała 5.6 mA),
nastąpił na nim spadek o 0.2V, a pobór prądu z linii zasilającej 5V wynosił ok. 220 mA. W praktyce tylko
starsze mikrokontrolery PIC (12C, 16C, 18C), pobierają typowo 25 mA (maksymalnie 50 mA) z napięcia
programującego (nowsze wymagają tylko odpowiedniego poziomu napięcia).
Układ zmontowałem na płytce dwustronnej (18 przelotek) o wymiarach 70x50 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: IC-Prog 1.06c, WinPIC, PICPgm 1.7.8 oraz Parallel Port PIC Programmer.

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 IC-Prog 1.06c
Program nie wymaga instalacji, a po jego pierwszym uruchomieniu pojawia się okno "Hardware settings", w którym
z rozwijalnej listy "Programmer" wybieramy pozycję "TAIT Serial Programmer", w grupie "Interface" zaznaczamy pole
"Direct I/O", w grupie "Ports" zaznaczamy pole z numerem portu równoległego, do którego jest podłączony programator,
a w grupie "Communication" zaznaczamy pola "Invert Data Out", "Invert Data In" oraz "Invert Clock". Suwak "I/O Delay
(xx)" służy do ustawiania czasu opóźnienia transmisji danych i w razie błędów programowania, należy zwiększyć jego
wartość. Okno zamykamy naciskając przycisk "OK". Później to okno można ponownie otworzyć, wybierając z menu
"Settings" pozycję "Hardware" lub naciskając przycisk [F3]. W systemie Windows NT/2000 lub nowszym mogą pojawić
się okna informujące o błędach, co jest normalne ponieważ te systemy nie zezwalają na bezpośredni dostęp aplikacji
do portu równoległego. Aby temu zapobiec, należy w katalogu z programem umieścić sterownik "icprog.sys". Następnie
z menu "Settings" wybieramy opcję "Options" i w nowym oknie "Options" w zakładce "Misc", zaznaczamy pole "Enable
NT/2000/XP Driver". Pojawią się kolejno dwa okna "Confirm" z pytaniami, o restart programu i o załadowanie stero-
wnika, w których naciskamy przycisk "Yes". Po tych czynnościach główne okno programu, powinno pojawić się już bez
komunikatów o błędach. Programator można wstępnie przetestować. W tym celu z menu "Settings" wybieramy pozycję
"Hardware Check". W nowym oknie "Hardware Check" w grupie "Signals Out" znajdują się pola wyboru. Zaznaczając te
pola aktywuje się odpowiednie sygnały programujące na złączu ICSP programatora. Zaznaczenie pola "Enable MCLR"
powoduje pojawienie się napięcia programującego (13V) na pinie nr 1 złącza ICSP i jednoczesne zaświecenie czer-
wonej diody LED. Zaznaczenie pola "Enable Data Out" lub "Enable Clock" powoduje pojawienie się wysokiego stanu
logicznego (5V) na pinie, odpowiednio nr 7 lub 9 złącza ICSP. Jest jeszcze pole "Enable VCC", które w założeniu włą-
cza/wyłącza napięcie zasilające 5V, ale w moim programatorze nie powoduje ono żadnego efektu, ponieważ napięcie
zasilające jest podłączone na stałe. Przed rozpoczęciem programowania, należy dokładnie wybrać model mikrokontro-
lera z rozwijalnej listy lub z menu "Settings/Device/Microchip PIC". Następnie można już wykonywać takie operacje, jak:
odczyt/zapis/weryfikacja, sprawdzenie czystości, czy kasowanie pamięci mikrokontrolera. Większą część okna progra-
mu zajmują przewijalne pola edycyjne (bufory), które zawierają dane odczytane z pamięci FLASH/EEPROM mikrokon-
trolera i jednocześnie dane do zaprogramowania. Wartość każdej komórki pamięci w buforze można dowolnie modyfi-
kować. Do buforów można również wczytać dane z plików w różnych formatach (w tym HEX). Po prawej stronie okna
znajdują się dane konfiguracyjne (Config word) odczytane z mikrokontrolera, które można modyfikować i następnie
zaprogramować.


Konfiguracja programu WinPIC
Po instalacji uruchamiamy program. Następnie przechodzimy do zakładki "Interface" i w grupie "Interface Type", z roz-
wijalnej listy wybieramy pozycję "Tait, 7406(inverter)+PNP transistor", a z listy "on port" wybieramy numer portu równo-
ległego, do którego jest podłączony programator. Zaznaczenie pola "slow mode (to check for timing problems)", powo-
duje zmniejszenie szybkości transmisji danych, co jest potrzebne w razie występowania błędów programowania. Nastę-
pnie można nacisnąć przycisk "Initialize !", co powinno spowodować wyświetlenie się napisu "Interface tested, OK.".
Programator można wstępnie przetestować za pomocą pól, umieszczonych w grupie "Interface Test". Zaznaczając te
pola aktywuje się odpowiednie sygnały programujące na złączu ICSP programatora. Zaznaczenie pola "Vpp (+13V)"
powoduje pojawienie się napięcia programującego (13V) na pinie nr 1 złącza ICSP i jednoczesne zaświecenie czerwo-
nej diody LED. Zaznaczenie pola "Data (to PIC)" lub "Clock" powoduje pojawienie się wysokiego stanu logicznego (5V)
na pinie, odpowiednio nr 7 lub 9 złącza ICSP. Jest jeszcze pole "Vdd on/off", które w założeniu włącza/wyłącza napięcie
zasilające 5V, ale w moim programatorze nie powoduje ono żadnego efektu, ponieważ napięcie zasilające jest podłą-
czone na stałe. Przed rozpoczęciem programowania, należy dokładnie wybrać model mikrokontrolera z rozwijalnej listy
"Part" w zakładce "Device, Config". Następnie można już wykonywać takie operacje, jak: odczyt/zapis/weryfikacja, spra-
wdzenie czystości, czy kasowanie pamięci mikrokontrolera. W zakładkach "Code" i "Data" znajdują się przewijalne pola
(bufory), które zawierają dane odczytane z pamięci FLASH/EEPROM mikrokontrolera i jednocześnie dane do zaprogra-
mowania. Po zaznaczeniu w menu "Edit" pozycji "Enable HEX editor", 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 formacie HEX (INHX8M). W zakładkach
"Device, Config" i "Config Memory" znajdują się dane konfiguracyjne (Config word) odczytane z mikrokontrolera, które
można modyfikować i następnie zaprogramować.


Konfiguracja programu PICPgm 1.7.8
Po instalacji uruchamiamy program i z menu "Hardware", wybieramy pozycję "Hardware Selection/Configuration...".
W nowym oknie "Programmer Selection/Configuration", z rozwijalnej listy "Programmer Selection" wybieramy pozycję
"Tait Classic PIC Programmer", z listy "Programmer Connection" wybieramy port równoległy, do którego jest podłączony
programator, w grupie "Pin Configuration" odznaczamy pola "Invert" przy "MCLR/Vpp" i "PGM/Vdd", a zaznaczamy przy
"Clock", "Data Out" oraz "Data In". Następnie w tej samej grupie w polu "Pin" przy "MCLR/Vpp" ustawiamy wartość 5,
a przy "PGM/Vdd" wartość 4. Suwak "Timing Delay Factor" służy do ustawiania czasu opóźnienia transmisji danych
i w razie błędów programowania, należy przesunąć go w prawo (w kierunku napisu "slow"). Programator można wstę-
pnie przetestować za pomocą pól umieszczonych w grupie "Hardware Test", które staną się aktywne po naciśnięciu
przycisku "Enable Test". Zaznaczając te pola aktywuje się odpowiednie sygnały programujące na złączu ICSP progra-
matora. Zaznaczenie pola "MCLR/Vpp" powoduje pojawienie się napięcia programującego (13V) na pinie nr 1 złącza
ICSP i jednoczesne zaświecenie czerwonej diody LED. Zaznaczenie pola "Data Out" lub "Clock" powoduje pojawienie
się wysokiego stanu logicznego (5V) na pinie, odpowiednio nr 7 lub 9 złącza ICSP. Jest jeszcze pole "PGM/Vdd", które
w założeniu włącza/wyłącza napięcie zasilające 5V, ale w moim programatorze nie powoduje ono żadnego efektu, po-
nieważ napięcie zasilające jest podłączone na stałe. Po zakończeniu testów odznaczamy wszystkie pola i naciskamy
przycisk "Disable Test". Okno zamykamy naciskając przycisk "OK", a w kolejnym oknie "Save Configuration changes?"
naciskamy przycisk "Tak". Przed rozpoczęciem programowania, należy dokładnie wybrać model mikrokontrolera z roz-
wijalnej listy. Po podłączeniu programatora do systemu docelowego można też z menu "Command" wybrać pozycję
"Autodetect PIC", co spowoduje próbę rozpoznania mikrokontrolera przez odczytanie jego sygnatury. Jeśli uda się roz-
poznać mikrokontroler, to w zakładce "Options" w grupie "Device Information", pojawią się informacje o nim (model,
sygnatura, pojemność pamięci FLASH i EEPROM). Następnie można już wykonywać takie operacje, jak: odczyt/zapis/
weryfikacja, sprawdzenie czystości, czy kasowanie pamięci mikrokontrolera. W zakładkach "Code Mem" i "Data Mem",
znajdują się przewijalne pola edycyjne (bufory), które zawierają dane odczytane z pamięci FLASH/EEPROM mikrokon-
trolera i jednocześnie dane do zaprogramowania. Wartość każdej komórki pamięci w buforze można dowolnie modyfi-
kować. Do buforów można również wczytać dane z plików (HEX). W zakładkach "Config Mem" i "Config Bits" znajdują
się dane konfiguracyjne (Config word) odczytane z mikrokontrolera, które można modyfikować i następnie zaprogra-
mować.


Konfiguracja programu Parallel Port PIC Programmer
Program istnieje w dwóch wersjach: jedna obsługuje mikrokontrolery z rodziny 12F/16F (36 modeli), a druga z rodziny
18F (20 modeli). Po instalacji uruchamiamy program i z menu "Options", wybieramy pozycję "Change Parallel Port Num-
ber". W nowym oknie, w polu tekstowym wpisujemy numer portu równoległego, do którego jest podłączony programator,
a następnie naciskamy przycisk "OK". W razie występowania błędów programowania, należy wydłużyć czas programo-
wania. W tym celu z menu "Options" wybieramy pozycję "Change Default Programming Time" i w nowym oknie, w polu
tekstowym wpisujemy większą wartość, a następnie naciskamy przycisk "OK". Programator można wstępnie przetesto-
wać. W tym celu z menu "Hardware" wybieramy pozycję "Check". W nowym oknie "Check Hardware" znajdują się pola
wyboru. Zaznaczając te pola aktywuje się odpowiednie sygnały programujące na złączu ICSP programatora. Zaznacze-
nie pola "Enable VPP line (D3)" powoduje pojawienie się napięcia programującego (13V) na pinie nr 1 złącza ICSP
i jednoczesne zaświecenie czerwonej diody LED. Zaznaczenie pola "Enable DATA OUT line (D0)" lub "Enable CLOCK
line (D1)" powoduje pojawienie się wysokiego stanu logicznego (5V) na pinie, odpowiednio nr 7 lub 9 złącza ICSP. Jest
jeszcze pole "Enable VDD line (D2)", które w założeniu włącza/wyłącza napięcie zasilające 5V, ale w moim programato-
rze nie powoduje ono żadnego efektu, ponieważ napięcie zasilające jest podłączone na stałe. Przed rozpoczęciem pro-
gramowania, należy dokładnie wybrać model mikrokontrolera. W tym celu z menu "Options" wybieramy pozycję "Change
Microcontroller Model" i w nowym oknie, w polu tekstowym wpisujemy numer, który odpowiada danemu modelowi mikro-
kontrolera z wyświetlonej listy i naciskamy przycisk "OK". Następnie można już wykonywać takie operacje, jak: odczyt/za-
pis/weryfikacja, sprawdzenie czystości, czy kasowanie pamięci mikrokontrolera. Większą część okna programu zajmują
przewijalne pola (bufory), które zawierają dane odczytane z pamięci FLASH/EEPROM mikrokontrolera i jednocześnie
dane do zaprogramowania. Niestety nie można modyfikować ich zawartości. Do buforów można wczytać dane z plików
w formacie HEX (Intel HEX). W polu "Config. Word (2007h)" znajdują się dane konfiguracyjne (Config word) odczytane
z mikrokontrolera, które można modyfikować i następnie zaprogramować.


SPIS ELEMENTÓW:

Rezystory:
R1, R2 - 100
R3-R8 - 10k
R9 - 2.2k
R10 - 470
R11 - 150
R12A-R12D - 1
R13 - 20k (patrz tekst)
R14 - 2.2k/1%

Potencjometry:
P1 - 2.2k
Kondensatory:
C1, C2 - 470p
C3 - 1n
C4 - 100n
C5 - 100n/16V
C6 - 100u/10V
C7 - 100u/16V

Cewki:
L1 - 100 uH (opis w tekście)
Diody:
D1 - BYV26
LED1 - zielona 5 mm
LED2 - czerwona 5 mm

Tranzystory:
T1 - BC557

Układy scalone:
U1 - 74LS06
U2 - MC34063
Złącza:
CON1 - DB25M proste (męskie)
CON2 - IDC10M proste (męskie)

Inne:
U1 - podstawka DIP14 zwykła
U2 - podstawka DIP8 zwykła