Wdrażanie mikrokontrolerów przeznaczonych do konkretnych zadań upraszcza złożone projekty

Wdrażanie mikrokontrolerów przeznaczonych do konkretnych zadań upraszcza złożone projekty

Specjalizowane mikrokontrolery, przeznaczone do określonych zadań, pomagają uprościć proces projektowania aplikacji. Odpowiednio dobrany układ może odciążyć działania podstawowego mikrokontrolera lub mikroprocesora realizując określone zadania bez jego udziału. Takie podejście zmniejsza czas potrzebny do uruchomienia aplikacji oraz zwiększa jej wydajność i sprawność.

W dzisiejszym świecie, w nowoczesnych urządzeniach coraz powszechniejsze są duże 32-bitowe mikrokontrolery (MCU) i mikroprocesory (MPU) na których działają systemy operacyjne czasu rzeczywistego (RTOS). Jednak pojedynczy duży mikrokontroler obsługujący złożoną aplikację może mieć niewystarczające zasoby do realizowania małych zadań, które nie są złożone, ale wymagają zachowania odpowiedniego harmonogramu czasowego. Rozbudowanie systemu o mniejsze układy, takie jak 8- i 16-bitowe MCU, może być idealnym rozwiązaniem – wyręczą one duży 32-bitowy mikrokontroler ze specyficznych zadań a jednocześnie w ten sposób napędzane są innowacje i rozwój w całym spektrum mikrokontrolerów od 8-bitowych do 32-bitowych.

Wiele zadań jest łatwiej wykonać, jeśli niektóre z tych zadań rozdzielimy na podprocesory, które obsługują tylko 1 lub 2 z tych zadań i wymagają przy tym niewielkiego nadzoru. To zwalnia zasoby procesora głównego i zmniejsza złożoność oprogramowania, jednocześnie poprawiając wydajność i czas realizacji. Na przykład, do utworzenia ekspandera we/wy można użyć 8-bitowego MCU. Ekspandery I/O nie są skomplikowanymi urządzeniami, ale zużywają dużo czasu procesora ze względu na częstą obsługę przerwań. Używając odpowiedniego MCU do tego zadania, większe urządzenie może zmniejszyć użycie linii we/wy i przerwań, które musi obsłużyć.

Dodatkowo zestaw funkcji ekspandera we/wy jest ustawiany w oprogramowaniu, co pozwala na jego specyficzne dostosowanie i dostrojenie do aplikacji. Największą zaletą tworzenia ekspandera we/wy przy użyciu 8-bitowego MCU jest jego elastyczność. Zestaw funkcji ekspandera we/wy typu ASIC (specjalizowany układ scalony – Application-Specific Integrated Circuit) jest zdefiniowany na stałe w układzie, podczas gdy mikrokontroler definiuje swoje zachowanie na podstawie wykonywanego oprogramowania. Ta elastyczność umożliwia nawet dynamiczne dostosowanie konfiguracji do potrzeb aplikacji końcowej.

Implementacja zaawansowanego ekspandera we/wy

Zaawansowany ekspander we/wy działa w oparciu o strukturę bazującą na tabeli lookup (struktura przechowująca wcześniej przygotowane dane). Przed odczytem lub zapisem wysyłany jest adres wirtualny. Adres ten nie jest skorelowany z rejestrami na mikrokontrolerze – jest tylko specyficzny dla tablicy lookup (rysunek 1). Oznacza to, że funkcje nie znajdujące się w rejestrach sprzętowych mikrokontrolera mogą być dodawane w sposób przeźroczysty.

Rysunek 1. Tabela Lookup zaawansowanego ekspandera we/wy

Wpisy w tabeli można również łatwo przestawić do określonych zastosowań. Kolejną zaletą tej struktury jest możliwość dodawania uprawnień do tabeli. Na przykład, aby utworzyć rejestr tylko do odczytu, po prostu pomiń wpis w tablicy wyszukiwania zapisu.

Rysunek 2. Pamięć przechowywania konfiguracji

Ta bardziej złożona struktura nadaje się również do niestandardowych funkcji. Polecenie operacji na pamięci – „MEM OP”, umożliwia mikrokontrolerowi zapisanie lub załadowanie do pamięci bieżącej konfiguracji wejść i wyjść ogólnego przeznaczenia – GPIO (rysunek 2). W ten sposób można również zresetować konfigurację GPIO do parametrów ustawionych podczas kompilacji. Mikrokontroler można ustawić tak, aby wczytywał zapisane ustawienia po włączeniu zasilania. Wtedy mikrokontroler próbuje załadować ustawienia z konfiguracji 0 (rysunek 3). Jeśli konfiguracja nie przejdzie weryfikacji sumy kontrolnej, MCU powróci do parametrów ustawionych podczas kompilacji. Ta funkcja może zostać wyłączona w oprogramowaniu, jeśli nie jest pożądana.

Rysunek 3. Budowa polecenia operacji na pamięci

Zaletą rozwiązania bazującego na MCU jest ekstremalna elastyczność. W przeciwieństwie do ASIC dostępnych na rynku, rozwiązanie z MCU można skonfigurować z niestandardowymi funkcjami specyficznymi dla danego zastosowania. Opisana dalej aplikacja została opracowana dla rodziny MCU ogólnego przeznaczenia PIC16F15244. Jej dod źródłowy jest dostępny na stronie Microchip Discover (discover.microchip.com) i Github.

Przetwornik wartości napięcia na częstotliwość (V/F)

Konwerter napięcia na częstotliwość (V/F) demonstruje użycie sprzętowych urządzeń peryferyjnych do stworzenia funkcji niezależnej od rdzenia, która normalnie musiałaby być realizowana za pomocą zewnętrznego układu scalonego. Jedną z największych zalet takiego rozwiązania jest to, że urządzenia peryferyjne są konfigurowane w oprogramowaniu, co ułatwia modyfikowanie sposobu działania. Kolejną korzyścią jest to, że konwerter jest zaimplementowany w mikrokontrolerze, co zmniejsza listę elementów i wymaganą powierzchnię projektową.

Jednym z wyzwań związanych z podejściem bazującycm na MCU jest to, że nie działa tak dobrze, jak rozwiązanie analogowe, ponieważ rozdzielczość wyjścia jest z natury ograniczona przez przetwornik ADCC. Nominalnie ADCC jest 12-bitowy, ale został skonfigurowany do nadpróbkowania w 14-bitowej rozdzielczości. Podobnie, wbudowany oscylator sterowany numerycznie (NCO), który syntetyzuje częstotliwość wyjściową, ma skończoną rozdzielczość i może mieć jitter na wyjściu, w zależności od wartości zmierzonej przez ADC.

Rysunek 4. Schemat blokowy rozwiązania

W ramach realizacji tego rozwiązania istnieją trzy odrębne bloki urządzeń peryferyjnych – blok próbkowania analogowego, blok oscylatora wyjściowego i generator cyklu pracy (rysunek 4).

Blok próbkowania analogowego

Za konwersję analogowo-cyfrową odpowiada blok analogowego próbkowania (rysunek 5). Aby uzuskać na  wyjściu 100 kHz przy ograniczeniach częstotliwości urządzenia, przetwornik ADCC zostałoskonfigurowany tak, aby gromadzić wiele próbek, a następnie uśredniać, aby uzyskać 14-bitowy wynik z nadpróbkowaniem.
Wadą tego nadpróbkowania jest dodatkowy szum statystyczny dodany do wyniku. Szum jest kompensowany przez uśrednienie nadpróbkowania i dodanie histerezy.

Rysunek 5. Implementacja analogowego bloku próbkowania

Aby zaimplementować histerezę, wykorzystywana jest funkcja progowego przerwania ADCC (dla uproszczenia, omówione zostaną tylko niektóre szczegóły dotyczące używa funkcji przerwania progowego). Kiedy ADCC zakończy obliczanie uśrednionego nadpróbkowania, wynikowa wartość jest porównywana z rejestrem wartości zadanej. Jeśli różnica między nimi jest większa lub mniejsza niż ustawione progi, to wyzwalane jest przerwanie. Procesor maskuje to przerwanie i nie ma na nie wpływu, jednak przerwanie to przesyła kopię uśrednionego wyniku nadpróbkowania w trybie bezpośredniego dostępu do pamięci (DMA) do rejestru nastaw ADCC, który aktualizuje punkt środkowy histerezy. Jeśli progi nie zostaną przekroczone, ta kopia DMA nie jest uwzględniana i nie spowoduje aktualizacji bloku oscylatora wyjściowego.

Blok oscylatora wyjściowego

Blok oscylatora wyjściowego tego rozwiązania odpowiada za generowanie sygnału zegarowego o żądanej częstotliwości wyjściowej. Ten sygnał wyjściowy jest wewnętrznie podłączony do generatora cyklu pracy, który zmniejsza o połowę częstotliwość wyjściową, ale tworzy wyjście cyklu pracy 50%. Z tego powodu blok oscylatora wyjściowego pracuje z podwójną częstotliwością na wyjściu (rysunek 6).

Rysunek 6. Struktura bloku oscylatora wyjściowego

Sercem bloku oscylatora wyjściowego jest oscylator sterowany numerycznie (NCO). Urządzenie peryferyjne NCO działa poprzez dodanie wartości przyrostu do akumulatora na zboczu narastającym zegara wejściowego. Przepełnienie akumulatora służy do wyprowadzenia sygnału wyjściowego. W tym przykładzie NCO2 został skonfigurowany do wewnętrznego tworzenia wymaganej częstotliwości zegara wejściowego, aby uzyskać wyjście o częstotliwości 100 kHz z wejścia 14-bitowego. Wynik 14-bitowy jest używany, ponieważ natywny wynik 12-bitowy z ADCC nie jest wystarczająco duży, aby wygenerować 100 kHz bez zewnętrznego źródła zegarowego (tabela 1).

Jeśli częstotliwość wyjściowa NCO2 zostanie zmieniona lub zostanie użyte alternatywne źródło, częstotliwość wyjściowa zostanie przeskalowana do innego zakresu wyjściowego. Na przykład, jeśli NCO2 zostanie zredukowany do 1,28 MHz, wyjście osiąga maksimum przy 10 kHz (tabela 2).

Generator cyklu pracy

Ten blok odpowiada za wytworzenie przebiegu o wypełnieniu 50%. Ta funkcja jest opcjonalna – dane wyjściowe można wykorzystać bezpośrednio, chociaż wypełnienie będzie się różniło w szerokim stopniu. Ten generator jest zaimplementowany przy użyciu jednej z konfigurowalnych komórek logicznych CLC. Są to małe bloki dyskretnej, konfigurowalnej logiki, podobne do pojedynczej komórki FPGA (Field Programmable Gate Array). CLC mogą być używane jako dyskretne bramki logiczne, takie jak AND-OR lub OR-XOR. Mogą być również skonfigurowane jako zatrzaski lub przerzutniki. W tym rozwiązaniu CLC został zaimplementowany jako przerzutnik J-K z funkcją Reset.

Rysunek 7. Schemat blokowy generatora cyklu pracy

Sygnały J i K są utrzymywane na poziomie logicznym wysokim. Blok oscylatora wyjściowego jest używany jako zegar dla przerzutnika. Każdy wejściowy impuls zegarowy powoduje przełączenie wyjścia, co generuje 50% współczynnik wypełnienia (uwaga – jitter częstotliwości z bloku oscylatora wyjściowego wpłynie na cykl pracy).
Timer 6 jest używany jako timer watchdog. Jeśli wyjście nie generuje zbocza (wznoszącego lub opadającego), wówczas timer przepełni się i wygeneruje impuls zegarowy do CLC. Kontroluje to dolną stronę zakresu częstotliwości wyjściowej. Zamiast osiągać wartość DC, wyjście przełącza się w połowie częstotliwości timera – 6 Hz.

Wnioski

Do realizacji przykładu wybrano rodzinę układów PIC18-Q43 ze względu na dużą liczbę używanych urządzeń peryferyjnych. Kod źródłowy tego projektu jest dostępny na Microchip Discover (discover.microchip.com) i Github.

Chociaż wysokowydajne mikrokontrolery i mikroprocesory nie znikną, 8- i 16-bitowe mikrokontrolery są nieocenionym narzędziem do wykonywania małych, specjalistycznych zadań. Zadania niekoniecznie są złożone, ale mogą być czasochłonne lub krytyczne czasowo. Odciążając zadania urządzenia 32-bitowego uzyskujemy prostsze implementacje, które poprawiają niezawodność, zmniejszają zużycie pamięci i zmniejszają zużycie energii.

Robert Perkel

Linki do stron internetowych:

Artykuł ukazał się w
Elektronika Praktyczna
czerwiec 2022

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik lipiec 2022

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec - sierpień 2022

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje lipiec 2022

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna lipiec 2022

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich sierpień 2022

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów