1. Mikroprocesorowy układ edukacyjny  Microkon 4 

 

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

 

2.  Programowanie w układzie (ICSP)

 

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).  

 

 

3. Ustawienia płytki testowej Mikrokon4 do programowania

 

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    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.

 

 

 

4. Praca z programatorem PICSTART Plus

 

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:

 

  1. W MPLAB IDE wybieramy Configure-> Select Device. Wówczas w oknie dialogowym pojawia się wsparcie dla każdego mikrokontrolera: zielony wskaźnik oznacza wsparcie mikrokontrolera przez dane narzędzie. Żółty wskaźnik oznacza ograniczone wsparcie, zaś czerwony wskaźnik oznacza brak wsparcia. Mikrokontroler PIC16F628 posiada wsparcie programatora PICSTART Plus.
  2. Wybieramy w  MPLAB IDE:
                           Programmer -> Select Programmer -> PICSTART Plus
    W linii statusu pojawia się napis PICSTART Plus. Gdy wybrany jest PICSTART Plus jako programator, wówczas powinien być wybrany Debugger: None.
  3. Konfiguracja portu szeregowego: Należy wybrać:
                            Programmer -> Settings
    W zakładce Communications spośród 4 portów COM trzeba zaznaczyć właściwy port. Można wybrać domniemany port COM1. MPLAB zapamiętuje numer portu do następnej sesji.
  4. Należy ponownie wybrać mikrokontroler, który ma być programowany:
                     Configure -> Select Device
  5. Po sprawdzeniu właściwej komunikacji PC z programatorem należy wybrać:

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:

  1. Sprawdzenie, czy mikrokontroler jest niezapisany, tzn. czy wszystkie bity mają wartość 1. Narzędzie to sprawdza też bity konfiguracyjne, czy mają wartość 1 (układ w stanie niezaprogramowanym).
    To samo, co wybranie: Programmer -> Blank Check All
    Przed przeprowadzeniem Blank Check należy upewnić się, że, mikrokontroler jest włożony do gniazda  ZIFF programatora zachowując układ: pin 1 do pinu 1, a także czy srebrna dźwignia gniazda jest spuszczona, zabezpieczając urządzenie.

 

  1. Czyta zawartość pamięci mikrokontrolera. To samo, co:
    Programmer -> Read

 

  1. Programuje (wypala kod programu w pamięci Flash).
    To samo, jak:
    Programmer -> Program

  2. Weryfikuje, czy urządzenie zostało właściwie zaprogramowane, podobnie, jak:
    Programmer -> Verify

  3. Wymazuje całą pamięć Flash urządzenia, podobnie, jak polecenie:
    Programmer -> Erase Flash Device

 

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.