Testy i ćwiczenia, omówione w niniejszej książce były przeprowadzone na
zestawie prototypowym, który nazwaliśmy Microkon4. Główną jego część stanowi
mikrokontroler firmy Microchip: PIC 16F628.
Rys.77.
Schemat blokowy edukacyjnego układu mikroprocesorowego Microkon 4
Szeregowy interfejs RS232 umożliwia programowanie mC w układzie, określane jako ICSP. Jest to bardzo wygodne, gdyż układ nie musi być wyjmowany za każdym razem z podstawki. W opisanych poniżej przykładach zastosowany był programator do kontrolerow PIC. Był on szczegółowo opisany przez: Adama Jurkiewicza i Stanisława Pietraszka w Elektronika Praktyczna. Aktualnie Firma Microchip dostarcza znaczne advanced programator debuger ICD-2. Na rys. 94 został przedstawiony jego schemat zaczerpnięty z Elektroniki Praktycznej .
Rys.94. Schemat ideowy programatora do kontrolerów PIC
Programator
jest stosunkowo prosty i nie można przy jego pomocy przeprowadzić debugowania w
czassie rzeczywistym wypalonego na firmware programu. Bardziej rozbudowane
programy wymagają debugowani w oparciu o programator debuger firmy Microchip.
Programator ICD2 współpracuje z e środowiskiem zintegrowanym MPLAB
i jest dostępny poprzez stronę
internetową www.microchip.com Oczywiście dla prostrzych programów w
zupełności wystarczy nam przedstwiony tu programator. Sercem
tego programatora jest także PIC16F628,
a do komunikacji z portem RS232 komputera PC
zastosowany został translator poziomów MAX 232. Całość zasilana jest napięciem
12 V. Na wyposażeniu jest kabel z
końcówką RS 232 do połączenia z portem szeregowym PC. Na płytce znajdują się jumpery JP1 i JP2.
Jumper JP1 postawiony na ON ustawia tryb
LVP (Low
Voltage Programming).
Płytka testowa Mikrokon4 została szczegółowo omówiona w
poprzednim rozdziale (Rozdział 13). Poniżej przedstawiamy jedynie schemat
blokowy płytki.
Rys.95 Schemat blokowy płytki testowej Mikrokon 4
Podstawową jej częścią jest układ
mikrokontrolera z zegarem sterowanym kwarcem 20 MHz. Port A i port B uzyskują stany
H i L poprzez układy scalone ULN2803
(8- Channel CMOS/TTL Input Driver). Switche SW3
i SW4 oraz oporniki podciągające (w układzie drabinkowym) DRN1
i DRN3 mają za zadanie
ustawienie portów w stan H
i L. Stan H uzyskuje się
przy wyłączeniu switchów. Stany na portach są sygnalizowane przez diody LED D11-D22
(port A) i D15-D26 (port B).
Układ RTC U4
PCF8583 może być dołączony do mikrokontrolera za pomocą przewodów (wąsów) na
czas wykonywania testu. Ma on wyprowadzenia
K1, K 2, K3 i K4 (patrz schemat ideowy rozdz. 13). To samo dotyczy układu RS232 zbudowanego w oparciu o układ U6 MAX232, dołączanego wąsami z
wyprowadzeń: K12, K 13,
K14 , K15, znajdujących się na polu montażowym. Zarówno
układy U1 PCF8574, jak i
pamięć EEPROM 24C02 dołączane są
wąsami do portów kontrolera z pola montażowego. Na opisywanej płytce testowej wykonano także
szereg eksperymentów w oparciu o pastylki
1-Wire firmy Maxim/Dallas. Testy z sensorami sterowanymi przez
mikrokontroler będą jednak przedmiotem
innego opracowania.
Za pomocą
złącza JP2 do płytki testowej
dołączony jest programator. W trakcie programowania wykorzystywany jest
protokół ICSP (In Circuit Serial Programming).
Wszystkie wyprowadzenia spełniają ogólne
wymagania – doprowadzenia do mikrokontrolera
następujących sygnałów:
Tab. 9 Opis
wyprowadzeń dla ICSP
Pin |
Sygnał |
Port |
1 |
VPP |
MCLR |
2 |
VDD |
VDD |
3 |
GND |
VSS |
4 |
DATA |
RB7 |
5 |
CLOCK |
RB6 |
6 |
PGM
(LVP) |
RB3/4/5 |
Należy pamiętać, że napięcie programujące przy trybie HVP, podawane na
pin 4
PIC-a wynosi 13 V. Takie napięcie z pewnością doprowadziłoby do uszkodzenia
pozostałych układów na płytce testowej, dlatego też na moment programowania 4 linie
PIC’a są odłączane od układu za pomocą przekaźników
REL1 i REL2 . Przełączenia w stan programowania
dokonuje się za pomocą klucza Z1.
Podczas programowania płytka testowa Mikrokon jest zasilana z własnego zasilacza, a programator także ze swojego. Krytyczne oczywiście jest w tym momencie dokładne ustawienie zasilania na mikrokonie na 5 V, za co odpowiedzialny jest switching power supply L4960. Poniżej został przedstawiony typowy układ ICSP dla HVP.
Rys.96. Schemat typowego połączenia ICSP dla trybu HVP
Bit LVP znajduje się w rejestrze konfiguracyjnym mikrokontrolera. Ustawienie bitu LVP na wartość 1 umożliwia programowanie PIC-a przy U = 5V dołączonym do MCLR/Vpp jako VIH = 5 V. Natomiast przy High Voltage Programing (HVP) do MCLR/Vpp podawane jest napięcie U = 13 V jako VIHH.
Podczas programowania mikrokontrolera PIC LVP w ICSP są dwa podstawowe tryby:
W przypadku entering mode programowanie/weryfikacja następuje, gdy PGC i PGD przechodzą na poziom L przy równoczesnym poziomie H na PGM i subsekwentnym dźwignięciu napięcia na MCLR/Vpp do VIH = 5 V.
Oczywiście napięcie zasilania PIC Vdd = 5 V jest podczas programowania dołączone. W trybie LVP RB5/PGM (pin 10) jest dedykowany dla procesu programowania i nie może spełnić swojej roli jako rejestr I/O.
Do sterowania procesem programowania z poziomu komputera PC wykorzystywane jest środowisko uruchomieniowe MPLAB IDE, omówione w poprzednich rozdziałach. Programowanie mikrokontrolera wymaga:
- przyłączenia układu do PC
- uruchomienia na PC zainstalowanego uprzednio środowiska MPLAB IDE.
- Zainstalowania programatora JuPIC emulującego programator PICSTART Plus
- Uruchomiemia Srodowiska MPLAB IDE oraz z poziomu tego środowiska programu PICSTART Plus.
- Skonfigurowania programatora
Czynności te opiszemy w formie kroków:
Programmer -> Enable Programmer.
Czasem może zajść potrzeba uaktualnienia oprogramowania OS programatora PICSTART Plus. Jeżeli firmware programatora nie obsługuje danego mikrokontrolera, wówczas pojawia się np. taki komunikat:
This
device requires firmware version 4.30.0 or higher
(patrz rozdział. “Upgrading the PICSTART PlusFirmware OS" w dokumentacji programatora PICSTART Plus).
Jeżeli nie można ustanowić komunikacji z powodu problemów z połączeniem szeregowym, wówczas pojawia się komunikat podobny do poniższego:
"Cannot transmit. Please,
verify connection and retry the previous operation."
Problem z komunikacją może też się pojawić, jeżeli urządzenie jest źle umieszczone w gnieździe ZIFF.
Jeżeli nie można ustanowić komunikacji trzeba sprawdzić poprawność zainstalowania hardware i software, a także poszukać informacji w załączniku B "Troubleshooting" w dokumentacji programatora PICSTART Plus.
Jeżeli mamy skonfigurowany i działający programator, możemy przystąpić do procesu „wypalenia” na mikrokontrolerze przygotowanego uprzednio programu.
Po uruchomieniu programatora pojawia się dodatkowy pasek z narzędziami, jak pokazano na rysunku.
Rys.97. Narzędzia programatora
Narzędzia te, to kolejno:
Ostatnie z narzędzi na pasku pokazuje statystykę: ile było udanych prób programowania, ile nieudanych i ile wszystkich.
Statystykę tę można wyczyścić, wybierając: Programmer -> Reset Program Statistics.
Jeżeli używamy
urządzenie tylko raz programowalne (OTP one-time-programmable), niektóre bity
konfiguracyjne mogą być już ustawione fabrycznie (np. bit oscylatora).
Należy wówczas wybrać: Configure -> Configuration Bits,
aby ustawić bity konfiguracyjne według ustawień fabrycznych, a następnie
wybrać:
Programmer
-> Blank Check OTP.
W ten sposób sprawdzimy, czy wszystkie bity pamięci mają wartość 1, i czy bity
konfiguracyjne zgadzają się z podanymi w oknie dialogowym.
Urządzenia FLASH
są automatycznie wymazywane przed programowaniem. Urządzenia OPT mogą być
wymazywane, natomiast urządzenia EPROM nie mogą być wymazywane, chyba, że jest
to pakiet typu JW (windowed), albo CERQUAD (CL) i nie ma zabezpieczenia
code-protected .
Ostatnia
czynność, to samo programowanie. Wybieramy z menu:
Programmer -> Program
Jeżeli chcemy programować tylko część pamięci programu, wówczas wybieramy: Programmer -> Settings i klikamy zakładkę "Memory Ranges", aby określić zakres pamięci, który chcemy zapisać w pamięci Flash.