Kategorie: Obwody mikrokontrolera
Liczba wyświetleń: 23111
Komentarze do artykułu: 0

Mikrokontrolery PIC dla początkujących

 

Na współczesnym rynku istnieje wiele rodzin i serii mikrokontrolerów różnych producentów, w tym AVR, STM32 i PIC. Każda z rodzin znalazła swój własny zakres. W tym artykule opowiem początkującym o mikrokontrolerach PIC, a mianowicie o tym, co to jest i co musisz wiedzieć, aby zacząć z nimi korzystać.

Mikrokontrolery PIC dla początkujących

Co to jest PIC

PIC to nazwa serii mikrokontrolerów produkowanych przez Microchip Technology Inc (USA). Nazwa PIC pochodzi od kontrolera interfejsu urządzeń peryferyjnych.

Mikrokontrolery PIC mają architekturę RISC. RISC - skrócony zestaw instrukcji, stosowany jest również w procesorach do urządzeń mobilnych. Istnieje wiele przykładów jego użycia: ARM, Atmel AVR i inni.

W 2016 roku Microchip kupił Atmel, producenta sterowników AVR. Dlatego oficjalna strona internetowa przedstawia mikrokontrolery rodziny oraz PIC i AVR.

Mikrokontroler PIC16F1xxx

Rodziny

Wśród 8-bitowych mikrokontrolerów PIC składa się z 3 rodzin różniących się architekturą (głębia bitowa i zestaw instrukcji).

  • Poziom podstawowy (PIC10F2xx, PIC12F5xx, PIC16F5x, PIC16F5xx);

  • Średniej klasy (PIC10F3xx, PIC12F6xx, PIC12F7xx, PIC16F6xx, PIC16F7xx, PIC16F8xx, PIC16F9xx);

  • Ulepszony średni zakres (PIC12F1xxx, PIC16F1xxx);

  • High-end lub PIC18 (18Fxxxx, 18FxxJxx i 18FxxKxx).

Porównanie rodzin mikrokontrolerów

Charakterystyki podano w poniższej tabeli.

Funkcje mikrokontrolera PIC

Oprócz 8-bitowych mikrokontrolerów Microchip produkuje 16-bit:

  • PIC24F;

  • DsPIC30 / 33F do przetwarzania sygnałów.

Przedstawiciele 16-bitowej rodziny działają z prędkością od 16 do 100 MIPS (miliony instrukcji na sekundę ukończone). Warto zauważyć i funkcje:

  • cykl maszynowy - 2 cykle;

  • Rozdzielczość ADC - 16 bitów;

  • obsługuje wiele protokołów komunikacyjnych (UART, IrDA, SPI, I2S ™, I2C, USB, CAN, LIN i SENT), PWM i więcej.

Istnieje również rodzina 32-bitowych mikrokontrolerów - PIC32MX, główne cechy:

  • działają na częstotliwości do 120 MHz;

  • Wykonaj do 150 MIPS

  • ADC: 10 bitów, 1 Msps (prędkość kwantyzacji), do 48 kanałów.



Od jakiego PIC na początek?

Początkujący powinni zacząć opanowywać mikrokontrolery PIC z linii 8-bitowej. Ogólnie rzecz biorąc, producent twierdzi, że cechą całej rodziny jest łatwość przenoszenia programów z jednej rodziny do drugiej oraz wyprowadzanie szeregu modeli.

Jednym z najpopularniejszych mikrokontrolerów w amatorskim środowisku radiowym jest PIC16f628A. Jego parametry techniczne są następujące:

  • Jest wbudowany generator zegara. Możesz dostroić się do pracy z częstotliwością 4 lub 8 MHz;

  • 18 pinów, z czego 16 - wejście / wyjście, a 2 - moc;

  • Aby pracować na częstotliwościach do 20 MHz, możesz podłączyć rezonator kwarcowy, ale w tym przypadku nie ma 16, ale pozostało 14 nóżek do wejścia / wyjścia;

  • Oznaczenie zawiera literę F, co oznacza, że ​​używana jest pamięć FLASH o pojemności 2048 słów;

  • Instrukcje 14-bitowe, 35 sztuk;

  • 2 komparatory;

  • 4 wejścia analogowe;

  • Wejścia PORTB mają rezystory podciągające;

  • Dwa 8-bitowe timery i jeden 16-bitowy;

  • Cykl maszynowy - 4 cykle rezonatora kwarcowego lub wewnętrznego oscylatora);

  • 224 bajty pamięci RAM;

  • 128 bajtów EEPROM;

  • USART - port szeregowy;

  • wewnętrzne napięcie odniesienia;

  • zasilany z 3,3 do 5 V.

Powodem jego popularności jest niska cena i możliwość taktowania z wewnętrznego generatora.

Który pinout 16f628 pokazano poniżej:

Pinout w 16f628

Blokowe obwody wewnętrzne tego mikrokontrolera pokazano poniżej.

Struktura mikrokontrolera 16f628

Na co przede wszystkim powinienem zwrócić uwagę w programie?

Ten mikrokontroler ma dwa porty PORTA i PORTB. Każdy pin, każdy z nich może służyć jako wejście i wyjście, a także do podłączania urządzeń peryferyjnych lub aktywowania innych modułów mikrokontrolera.

Rozważ szczegółowo tę część schematu.

Porty MK

Na przykład porty RB0-RB3 - mogą działać jako analogowe. W razie potrzeby źródło zegara jest podłączone do RA6, RA7 (rezonator kwarcowy) Wyjścia samego mikrokontrolera są konfigurowane w trybie wejścia / wyjścia za pomocą rejestru TRIS.

Istnieją polecenia dla tego typu:

TRISA = 0; // Wszystkie piny portu A są ustawione jako wyjścia
TRISB = 0xff; // Wszystkie piny portu B są przypisane jako wejścia
TRISA0 = 1; // Więc oddzielny pin jest przypisany jako wejście (1) lub wyjście (0)
TRISA5 = 1// tutaj 5. wyjście portu A jest przypisane jako wejście

Ogólnie tryby pracy, włączenie WDT (watchdog timer), wybór źródła zegara mikrokontrolera i tak dalej są konfigurowane za pomocą rejestrów specjalnego przeznaczenia - SFR, a pamięć i dane są przechowywane w GFR - w prostych słowach, to jest statyczna pamięć RAM.

W oficjalnym arkuszu danych, na stronach 18-21 znajdziesz 4 banki pamięci dla rejestrów specjalnego przeznaczenia SFR i rejestrów ogólnego przeznaczenia GFR. Znajomość rejestrów jest ważna, więc wydrukuj i poznaj wskazane strony Arkusz danych.

Dla wygody tabele te są przedstawione w formie zdjęć poniżej (numeracja rejestrów, podobnie jak wszystko w elektronice cyfrowej, zaczyna się od 0, więc czwarta liczba to 3).

Rejestry specjalnego przeznaczenia
Rejestry specjalnego przeznaczenia
Rejestry specjalnego przeznaczenia
Rejestry specjalnego przeznaczenia

Jak się połączyć i w jakim języku programować?

Aby uruchomić ten mikrokontroler, wystarczy zastosować plus do Vdd i minus do Vss. Jeśli potrzebujesz rezonatora kwarcowego, to jest on podłączony do pinów 16 i 15 (OSC1 i OSC2) mikrokontrolera PIC16f628, w przypadku innych kontrolerów z większą lub mniejszą liczbą pinów - zajrzyj do arkusza danych. Ale ten punkt musi być wskazany podczas programowania i oprogramowania układowego.

Mówiąc o przenośności i koincydencji pinoutu - na 16f84A - jest podobnie i na wielu innych.

Podłączenie rezonatora kwarcowego

Fragment obwodu z zewnętrznym rezonatorem podłączonym do pic16f628a:

Fragment obwodu z zewnętrznym rezonatorem podłączonym do pic16f628a

Istnieją dwa główne języki programowania mikrokontrolerów PIC - asembler i C, są też inne, na przykład PICBasic itp. Nadal możesz wyróżnić uproszczony język programowania JAL (tylko inny język).

Na przykład poniżej znajduje się program do „migania diod LED” - rodzaj „Hello World” dla mikrokontrolera PIC w C.

Przykład programu mikrokontrolera PIC w C

W linii 1 podłączona jest biblioteka mikrokontrolera PIC, a następnie biblioteka programów opóźniających.

W funkcji głównej (void) początkowe parametry ustawia się na początku, podobnie jak w funkcji Void setup () - w artykułach o arduino. Następnie w liniach 11-16 deklarowana jest nieskończona pętla while (1), podczas której wykonywany jest program „miganie diody LED”.

W tym przykładzie stan portu jest stale odwracany, tj. jeśli było na „0”, to przejdzie do „1” i odwrotnie. W C dla PIC dostępne są następujące polecenia zarządzania poleceniami:

PORTA = 0; // tłumaczy wszystkie piny portu A na niski poziom (log. 0)
PORTB = 0xff; // tłumaczy wszystkie piny portu B na wysoki poziom (log. 1)
RB5 = 1; // Piąty pin portu B jest wysoki

I wygląda na ten sam program, ale już w języku JAL przetłumaczyłem na rosyjskie komentarze twórców wbudowanych przykładów w JALedit (środowisko programistyczne).

Przykładowy program JAL

Istnieje pokusa, aby wybrać JAL i może ci się to wydawać łatwiejsze. Oczywiście możesz realizować na nim dowolne projekty, ale z punktu widzenia korzyści dla Ciebie jako specjalisty jest to język bezużyteczny. Osiągniesz znacznie lepsze wyniki, studiując składnię i zasady programowania w C (większość obecnie popularnych języków jest podobnych do C) lub w asemblerze - jest to język niskiego poziomu, który pozwoli ci zrozumieć zasadę urządzenia i to, co dzieje się w programie w danym momencie.


Jak pracować

Jeśli powiesz, że działa dość ogólnie z dowolnym mikrokontrolerem, potrzebujesz:

1. Edytor tekstu.

2. Kompilator.

3. Program do pobierania oprogramowania układowego do mikrokontrolera.

Przeczytałem nawet stare podręczniki, w których autor, pracując pod DOS, napisał kod, skompilował i sflashował go różnymi sposobami. Teraz dla wszystkich popularnych systemów operacyjnych istnieją środowiska programistyczne, zarówno wysoce wyspecjalizowane (dla konkretnej rodziny mikrokontrolerów lub rodzin jednego producenta), jak i uniwersalne (albo zawierają wszystkie niezbędne narzędzia, albo są połączone jako wtyczki).

Na przykład w serii artykułów o Arduino zbadaliśmy środowisko Arduino IDE, w którym napisaliśmy kod i przy jego pomocy „przelaliśmy” oprogramowanie układowe do „kamienia”. W przypadku mikrokontrolerów PIC dostępne są takie programy jak:

  • MPASM - używany do programowania w języku asemblera od Microchip;

  • MPLAB jest także Microchip IDE dla kontrolerów PIC. Składa się z wielu bloków do testowania, sprawdzania, pracy z kodem i kompilowania programów oraz pobierania do mikrokontrolera. Istnieje również wersja MPLAB X IDE - ma świetną funkcjonalność i jest zbudowana w oparciu o platformę NetBeans;

  • MikroC to uniwersalne środowisko programistyczne (nie tylko dla PIK). Jak sama nazwa wskazuje, jest „wyostrzona” dla programowania w C, a istnieją również programy takie jak MikroBasic i MikroPascal dla odpowiednich języków;

  • JALedit - odpowiedni dla języka JAL, o którym wspomnieliśmy powyżej;

  • I wiele innych mniej znanych.

MPLAB IDE

Jak sflashować mikrokontroler?

Istnieje wiele programistów mikronotrolerów PIC. Oficjalnie uważany za PICkit. Ich 4 wersje. Ale możesz flashować i być uniwersalny, na przykład TL866 (obsługuje prawie wszystko, czego może potrzebować początkujący amator radiowy, a jednocześnie jest bardzo tani).

Programatory do mikronotrolerów PIC

Również w sieci istnieje wiele różnych obwodów programatora dla PIC, oba do pracy przez port COM:

Obwód programatora

Tak jest przez USB (w rzeczywistości również przez com, tylko przez konwerter na IC MAX232).

Obwód programatora

Wniosek

Mikrokontrolery PIC16 nadają się do prostych projektów, takich jak prosta automatyzacja, woltomierze, termometry i inne drobne rzeczy. Ale to nie znaczy, że nie możesz wykonywać złożonych i dużych projektów w tej rodzinie, podałem przykład, dlaczego są one najczęściej używane. Aby uzyskać ogólny pomysł, polecam obejrzeć kilka filmów:

W jednym artykule nie ma sensu rozważać tematów programowania mikrokontrolerów, bez względu na rodzinę. Ponieważ jest to bardzo duża ilość informacji.

Zobacz także na bgv.electricianexp.com:

  • Rodzaje i rozmieszczenie mikrokontrolerów AVR
  • Programowanie mikrokontrolera dla początkujących
  • Czym są mikrokontrolery - przeznaczenie, urządzenie, oprogramowanie
  • Programowalne mikrokontrolery w JavaScript: który wybrać, cechy ...
  • Metody odczytu i zarządzania portami we / wy Arduino

  •