Rodzina mikrokontrolerów PIC18FQ10 – 8 bitów i wiele peryferiów
Nowa rodzina 8-bitowych mikrokontrolerów PIC18FQ10 firmy Microchip są reklamowane jako zoptymalizowana do pracy w układach sterowania pracujących w czasie rzeczywistym. Układy sterowania w czasie rzeczywistym kojarzą się z wydajnymi mikrokontrolerami z wbudowanym szybkim, 32-bitowym rdzeniem, dużymi zasobami, systemem RTOS lub jedną z dystrybucji Linuxa. W tym kontekście nawet stosunkowo szybka jednostka 8-bitowa nie powinna mieć szans na dorównanie klasycznym układom sterowania w czasie rzeczywistym. Co oczywiste, rdzeń PIC18Q10 nie ma takich możliwości. Czyżby dział marketingu tak poważnej firmy jak Microchip trochę się zagalopował w reklamie swojego produktu? Nic z tych rzeczy. Dzięki zastosowaniu unikalnych układów peryferyjnych pracujących niezależnie od rdzenia mikrokontrolera (Core Independent) można zbudować układy sterowania reagujące bardzo szybko na przychodzące zdarzenia. Rola rdzenia sprowadza się do konfiguracji układów peryferyjnych, ewentualnego zainicjowania pracy i reakcji na wykonane zadanie, najczęściej poprzez przyjęcie zgłoszonego przerwania. Układy Core Independent można dodatkowo łączyć między sobą wewnętrznymi programowanymi ścieżkami sygnałowymi, tworząc rozbudowane układy potrafiące wykonywać nawet skomplikowane zadania. Działanie układów peryferyjnych opartych na sprzęcie pozwala odciążyć procesor od wykonywania zadań czasowo krytycznych i wymagających dużej mocy. Sam procesor może się skupić na wykonywaniu niekrytycznych czasowo złożonych systemowych zadań. Tak zbudowany system można z czystym sumieniem nazwać układem sterowania w czasie rzeczywistym. Nie będzie tak uniwersalny jak wspomniane szybkie sterowniki programowe pracujące pod kontrolą systemów RTOS, ale do wielu wymagających zastosowań będzie odpowiedni.
Wyposażenie mikrokontrolerów PIC18FQ10 – zależnie od typu – jest dość bogate i może zawierać:
- Wbudowany oscylator RC o częstotliwości taktowania do 64MHz. Oprócz niego są do dyspozycji zewnętrzne oscylatory kwarcowe, ceramiczne i możliwość taktowania zewnętrznym sygnałem zegarowym
- Do 128 kB pamięci programu Flash
- Do 1 kB nieulotnej pamięci EEPROM
- Do 3618 bajtów pamięci danych SRAM
- 10-bitowy zaawansowany przetwornik ADC z modułem obróbki danych i maksymalnie 35 liniami wejściowymi
- 4 liczniki 16-bitowe
- Generator CWG – Complementary Waveform Generator
- Dwa komparatory
- Moduł wykrywania przejścia przez zero – Zero Cross Detect
- Zaawansowany licznik watchdog – Windowed Watch Dog Timer
- Układ przypisywania wyprowadzeń mikrokontrolera do linii układów peryferyjnych PPS – Peripherial Pin Select
- DSM – Data Signal Modulator
- Do 8 układów konfigurowalnych komórek logicznych CLC – Configurable Logic Cells
- 5-bitowy przetwornik cyfrowo analogowy DAC
- Układy transmisyjne EUSART, SPI i I2C
W układach sterowania coraz większy nacisk kładzie się na problem bezpieczeństwa działania. Odpowiedzialne układy sterowania powinny być zabezpieczone przed błędnym zadziałaniem wynikającym z błędów pamięci programu lub zakłóceń elektrycznych (przepięć). Zawartość pamięci Flash jest kontrolowana przez wbudowany sprzętowy moduł CRC współpracujący ze skanerem pamięci. Moduł zapewnia automatyczne generowanie wielomianów kontrolnych oraz weryfikację zawartości pamięci programu i pamięci danych (nieulotnej). Można go również skonfigurować do wyliczania kontrolowania 16-bitowego wielomianu CRC przy przesyłaniu danych komunikacyjnych. Niezgodność CRC jest interpretowana jako wykrycie uszkodzenia pamięci lub jako przekłamanie w transmisji danych, zależnie od konfiguracji.
Znaną metodą nadzoru nad prawidłowym wykonywaniem programu jest stosowanie licznika watchdog. Prawidłowo napisany program wykorzystujący licznik watchdog pozwala na przywrócenie poprawnego działania mikrokontrolera przez wymuszenie zerowania. Zablokowanie wykonywania kodu może być spowodowane przez skok napięcia zasilania spowodowany przepięciem lub impulsowym poborem dużego prądu z układu zasilania. Może to być również zmiana temperatury, a także inne czynniki. Watchdog jest ostatnią linią obrony przed takimi zdarzeniami. W mikrokontrolerach PIC18FQ10 wbudowano rozbudowany, zmodyfikowany licznik nazwany WWDT (Windowed Watchdog Timer). Działanie tego układu pokazano na rys. 2.
Jednym z nowszych i ciekawszych modułów peryferyjnych PIC18FQ10 jest zaawansowany 12-bitowy przetwornik analogowo–cyfrowy z wbudowanymi własnymi źródłami napięcia referencyjnego i niezależny programowany generator taktujący procesem konwersji. To co odróżnia ten przetwornik od klasycznego modułu ADC, to rozbudowane tryby pracy operujące na danych wyjściowych konwersji:
- Tryb podstawowy – przetwornik pracuje bez żadnych obliczeń na danych wyjściowych
- Tryb akumulacji – po każdej konwersji jej wynik zapisany w rejestrze ACC jest gromadzony (dodawany) do 16-bitowego rejestru ADACC (dla konwersji 10-bitowej) lub 18-bitowego (dla konwersji 12-bitowej). Rejestr ADCNT zlicza, ile próbek zostało zgromadzonych.ADACC przepełni się zależnie od wartości ACC po kilku, a maksymalnie po 64 próbkach. Wystąpienie przepełnienia jest sygnalizowane ustawieniem się bitu ADAOV. Wartość akumulowana może być przesuwana w prawo o wartość zapisaną w rejestrze ADCRS i zapisywana do rejestru ADFLT
- Tryb uśredniania – jest podobny do trybu akumulacji. Jednak gdy liczba próbek zliczana w ADCNT jest równa wartości zapisanej w rejestrze ADRPT, to wartość z rejestru ADFLT staje się średnią wartością sygnału wejściowego za ADCNT próbek. Średnia wartość jest poprawnie obliczana dla ADRPT równe ADRPT=2^ADCRS
- Filtrowanie dolnoprzepustowe – charakterystyka tłumienia filtra zależy od częstotliwości próbkowania. Maksymalna częstotliwość sygnału próbkowanego powinna być równa połowie częstotliwości próbkowania (z twierdzenia Nyquista). Rząd filtru jest programowany w zakresie od 1 do 6
Rys. 3. Moduł ADC w konfiguracji z filtrowaniem dolnoprzepustowym
Moduł Zero Cross Detect wykrywa przejście sygnału napięcia przemiennego przez zero (potencjał ziemi). Można go użyć do sterowania triakiem lub do pomiaru okresu sygnału przemiennego itp. Sterowanie mocą z użyciem triaka w momencie przejścia przez zero charakteryzuje się minimalnym poziomem zakłóceń EMI.
Rys. 4. Przykład zastosowania modułu ZCD do sterowania mocą
Generator sygnału komplementarnego CWG (Complementary Waveform Generator) ma wbudowaną dodatkową funkcję dodawania czasów rising edge deadband i falling edge deadband (rys. 5). Źródłem sygnału wejściowego może być wyjście generatora PWM, generatora NCO lub jedno z wyjść konfigurowanego układu CLC. Sygnał wyjściowy jest komplementarny, z możliwością dodawania programowanego czasu nieczułości (dead band) zarówno dla zbocza opadającego jak i narastającego. Pozwala to na przykład efektywnie sterować sygnałem PWM układami mostkowymi zasilającymi silniki elektryczne.