Seria K mikrokontrolerów Microchip PIC24 – powrót do 5 V
Zestaw Microstick można dołączyć do układu docelowego zawierającego elementy peryferyjne np. wyświetlacz, klawiaturę, przekaźniki, obwody analogowe itp. przez wlutowanie w płytkę lub przez połączenie za pomocą popularnych gniazd z rastrem 2,54 mmm przystosowanych łączenia z listwami goldpinów. Z praktycznego punktu widzenia to bardzo wygodne rozwiązanie: pozwala bowiem użyć w docelowej płytce zamiast mikrokontrolera modułu Microstick i po uruchomieniu urządzenia zamontować w jego miejsce mikrokontroler w obudowie SDIP28. Jeżeli potrzebujemy typowego rozstawu DIP28, to można sobie wlutować dodatkową listwę goldpinów w wolny rząd padów oznaczony jako P3.
Zestaw Microstick for PIC24 5V K-series to dobrze pomyślany i wykonany minimoduł uruchomieniowy. Jego główne zalety:
|
Programator/debuger umieszczony w drugiej części płytki jest zasilany (tak jak i programowany mikrokontroler) ze złącza mini USB. Prezentowany zestaw występuje w dwóch wersjach napięciowych (dla 3,3 V i 5 V), dlatego wyposażono go w stabilizator napięcia +3,3 V. W takim przypadku stabilizator napięcia zasilającego trzeba „przekonfigurować” poprzez wlutowanie rezystora 0? z pozycji R37 (bypass stabilizatora +3,3 V) i wlutowanie go w pozycję R38. Mikrokontroler programatora/debugera łączy się z aplikacją sterującą MPALB IDE poprzez port USB z jednej strony i z programowanym mikrokontrolerem poprzez interfejs programujący ICSP z drugiej strony.
Interfejs do programowania-debugowania ICSP firmy Microchip składa się z 2 linii (PGED i PGEC), może pracować w 2 trybach: z programowaniem wysokonapięciowym i niskonapięciowym. Przy programowaniu wysokonapięciowym interfejs ICSP jest aktywowany przez podanie napięcia na wejście zerowania MCLR o wartości ok. +8…9 V (nowsze mikrokontrolery) lub +12…13 V (starsze mikrokontrolery). Jest to bardzo rozpowszechniona metoda, ale wygenerowanie napięcia wyższego niż napięcie zasilające mikrokontroler jest zawsze kłopotliwe, bo wymaga stosowania przetwornicy napięciowej. Przez to programator jest bardziej rozbudowany, trudniejszy w wykonaniu i droższy. Od jakiegoś czasu Microchip równolegle stosuje programowanie niskonapięciowe wymagające aktywnego wejścia MCLR. Programator wbudowany w zestaw Microstick obsługuje tylko programowanie niskonapięciowe. Dlatego zaleca się by bity konfiguracyjne w trakcie używania programatora konfigurowały linię MCLR/RA5 jako wejście MCLR a nie jako linię GPIO (bit MCLRE w rejestrze konfiguracyjnym FPOR). W przeciwnym przypadku programowanie będzie możliwe tylko przez zewnętrzne programatory typu PICkit3 lub MPLAB ICD3 w trybie wysokonapięciowym . Tryb wysokonapięciowy pozwala zaprogramować mikrokontroler niezależnie od konfiguracji linii MCLR/RA5.
Ponieważ mikrokontroler PIC24FV15KM202 wyposażono w 2 porty ICSP, to w zestawie zastosowano mechaniczny przełącznik pozwalający dołączać linie PGED i PGEC programatora do jednej z dwóch par linii I/O mikrokontrolera „użytkownika”: PGED0 i PGEC0 lub PGED1 i PGEC1. Numer aktynego portu ICSP mikrokontrolera określają bity FICD1:FICD0 w rejestrze konfiguracyjnym FICD.
Ze strony producenta można ściągnąć projekt przeznaczony dla środowiska MPLAB X z programem demonstracyjnym. Program to może zbyt duże słowo, bo jest to prosta procedura powodująca miganie diodą LED umieszczoną na module. Testy działania tego programu rozpoczynamy od dołączenia modułu do portu USB, uruchomienia MPLAB X i otwarcia projektu testowego (rysunek 4).
Rys. 4. Okno właściwości projektu w MPLAB X
Żeby pakiet MPLAB X mógł się połączyć przez USB z programatorem/debugerem zestawu Microstick trzeba wybrać w oknie Hardware Tools okna właściwości projektu (File->Project properties->Hardware Toll ->Microchip Starter kits ->PKOB).
Program przykładowy jest bardzo prosty (listing 1), ale warto przeanalizować ustawienie bitów konfiguracyjnych łącznie z dołączonymi komentarzami. Może to nas uchronić przed przykrymi niespodziankami w czasie użytkowania tego modelu mikrokontrolera.
List. 1. Ustawienie bitów konfiguracyjnych w programie testowym
_FBS ( BWRP_OFF & // Boot Segment Write Protect (Disabled) BSS_OFF // Boot segment Protect (No boot Flash segment) ) _FGS ( GWRP_OFF & // General Segment Flash Write Protect (General segment may be written) GCP_OFF // General Segment Code Protect (No Protection) ) _FOSCSEL ( FNOSC_FRCDIV & // Oscillator Select (8MHz FRC with Postscaler (FRCDIV)) SOSCSRC_ANA & // SOSC Source Type (Analog Mode for use with crystal) LPRCSEL_HP & // LPRC Power and Accuracy (High Power/High Accuracy) IESO_ON // Internal External Switch Over bit (Internal External Switchover mode enabled (Two-speed Start-up enabled)) ) _FOSC ( POSCMOD_NONE & // Primary Oscillator Mode (Primary oscillator disabled) OSCIOFNC_IO & // CLKO Enable Configuration bit (CLKO output signal enabled) POSCFREQ_MS & // Primary Oscillator Frequency Range Configuration bits (Primary oscillator/external clock frequency between 100kHz to 8MHz) SOSCSEL_SOSCHP & // SOSC Power Selection Configuration bits (Secondary Oscillator configured for high-power operation) FCKSM_CSECME // Clock Switching and Monitor Selection (Clock Switching and Fail-safe Clock Monitor Enabled) ) _FWDT ( WDTPS_PS32768 & // Watchdog Timer Postscale Select bits (1:32768) FWPSA_PR128 & // WDT Prescaler bit (WDT prescaler ratio of 1:128) FWDTEN_OFF & // Watchdog Timer Enable bits (WDT disabled in hardware; SWDTEN bit disabled) WINDIS_OFF // Windowed Watchdog Timer Disable bit (Standard WDT selected (windowed WDT disabled)) ) // Warning: // Always enable MCLRE_ON config bit setting so that the MCLR pin function will // work for low-voltage In-Circuit Serial Programming (ICSP). The Microstick // programming circuitry only supports low-voltage ICSP. If you disable MCLR pin // functionality, a high-voltage ICSP tool will be required to re-program the // part in the future. _FPOR ( BOREN_BOR3 & // Brown-out Reset Enable bits (Enabled in hardware; SBOREN bit disabled) PWRTEN_ON & // Power-up Timer Enable (PWRT enabled) I2C1SEL_PRI & // Alternate I2C1 Pin Mapping bit (Default SCL1/SDA1 Pins for I2C1) BORV_V18 & // Brown-out Reset Voltage bits (Brown-out Reset at 1.8V) MCLRE_ON // MCLR Pin Enable bit (RA5 input disabled; MCLR enabled) ) _FICD ( ICS_PGx3 // ICD Pin Placement Select (EMUC/EMUD share PGC3/PGD3) )
W czasie testów lekko zmodyfikowałem program, tak by czas gaszenia i zapalania diody był różny. Po kliknięciu na ikonę Make and Program Device wykonywana jest automatycznie kompilacja i jeżeli nie ma błędów, to jej wynik jest automatycznie przesyłany do pamięci Flash mikrokontrolera. Debugowanie uruchamia się z menu Debug->Debug Projects. Pakiet MPLAB X automatycznie kompiluje program z opcją Debug, a po kompilacji (bez błędów) automatycznie ładuje go do pamięci Flash mikrokontrolera.
Nie wszystko w prezentowanym zestawie jest idealne. Po pierwsze wbudowanego programatora-debuggera nie można wykorzystać wprost jako programatora innych mikrokontrolerów. Producent nie przewidział dodatkowego złącza z wyprowadzonymi sygnałami portu ICSP. Może nie jest to zbyt duża uciążliwość, bo zawsze można wyjąć mikrokontroler z podstawki i w jego miejsce włożyć drugą podstawkę z przylutowanymi przewodami.
Również cena – pomimo tego, że nie jest wysoka – nie nastraja zbyt optymistycznie. Zestawy można kupić w sklepie Microchip Direct w cenie ok. 30 USD. Znając nasze realia, cena zakupu w naszym kraju nie będzie niższa niż 120…140 PLN. W porównaniu z konkurencyjnymi modułami na przykład dla mikrokontrolerów STM32 z wbudowanym programatorem-debugerem STLink/v2 to 2 razy drożej.
Trzeba sobie jednak zdawać sprawę, że taka cena dla komercyjnego zastosowania nie jest wysoka. Jeżeli potrzebujemy takiego mikrokontrolera do projektu, to zakup prezentowanego zestawu spowoduje, że czas potrzebny do przygotowania wstępnego projektu można skrócić tak bardzo jak to tylko możliwe. A to już olbrzymia oszczędność, bo czas programisty jest zazwyczaj bardzo drogi.