Mikrokontrolery w mechatronice Wykład 4
Program wykładu nr 4: Wybrane architektury mikrokontrolerów - konstrukcje zaawansowane Programowanie mikrokontrolera w języku wysokiego poziomu - wprowadzenie kompatybilność elektromagnetyczna a mikrokontrolery - wybrane zagadnienia - ciąg dalszy systemy operacyjne czasu rzeczywistego - wprowadzenie
Procesory rodziny ARM Opracowanie - firma ARM (Wielka Brytania) www.arm.com brak własnej produkcji, udostępnianie na zasadach licencyjnych innym producentom (obecnie ponad 40 firm). Oferowane jest kilka rodzin procesorów, najbardziej popularne są procesory rodziny ARM7 oraz ARM9.
Uproszczony schemat blokowy procesora rodziny ARM7 Wybrane cechy: Częstotliwość zegara do 133 MHz; Dodatkowe bloki wbudowane w strukturę procesora, np. MMU - Moduł Zarządzania Pamięcią Pipelining, czyli jednoczesna obsługa kilku rozkazów (przetwarzanie potokowe, 3 rozk.) Kompatybilność z różnymi systemami operacyjnymi (Embedded Linux, Windows CE, Symbian, Palm OS). Zastosowania: drukarki, proste palmtopy, aparaty cyfrowe, telefony GSM, sprzęt medyczny
Uproszczony schemat blokowy procesora rodziny ARM9 Wybrane cechy: Częstotliwość zegara do 250 MHz; Dodatkowe bloki wbudowane w strukturę procesora, np. MMU - Moduł Zarządzania Pamięcią Pipelining, czyli jednoczesna obsługa kilku rozkazów (przetwarzanie potokowe, 5 rozk.) Kompatybilność z różnymi systemami operacyjnymi (Embedded Linux, Windows CE, Symbian, Palm OS). Zastosowania: konsole do gier, zaawans. palmtopy, telefony 3G, routery sieciowe
Dalszy rozwój rodziny rdzeni procesorów ARM (mapa drogowa) Dalszy rozwój technologii, zmniejszenie zużycia mocy: np. dla ARM11 - pobór mocy przy Ucc=1,2V nie przekracza 0.4 mw/mhz; dla f=500 MHz P<=0,2W Spokrewnione/ bazujące na ARM rodziny - Intel XScale
Programowanie mikrokontrolerów w języku wysokiego poziomu - wprowadzenie Programowanie w języku asemblera: Zalety: Pełne panowanie nad zasobami procesora Możliwość ręcznej optymalizacji algorytmu Mały rozmiar programu (kodu) wynikowego Wady: Mała produktywność pracy programisty Nieczytelny kod źródłowy Bardzo trudne programowanie np. złożonych operacji matematycznych
Porównanie wyglądu kodu (fragmenty) Asembler: Język C: lda $#0xf5 ; załaduj do A wartość ;f5 hex sta porta ; zawartość akumulatora prześlij do portu A ;--------------------------- inc porta porta=0xf5; porta++;??????? (brak gotowej procedury!) y=sin(x);
Programowanie w języku C: Zalety: Szybkość tworzenia programu duża przenośność kodu łatwe programowanie złożonych algorytmów łatwa obsługa operacji wej/wyj wielka liczba dostępnych bibliotek Wady: Nieco większa objętość kodu źródłowego (przestaje być to obecnie problemem). Dość drogie narzędzia programistyczne(ale często dostępne są wersje darmowe)
Programowanie w języku C - przykładowa literatura: 1) Kernighan, Ritchie - Język C; wyd. WNT 1985+wznow. 2) Kardach, Majewski - Mikrokontrolery jednoukładowe 8051; programowanie w języku C w przykładach, Wyd. PWr 1995, wyd. II 2002 3) Strostroup - Język C++ (dla ambitnych!).
Programowanie w języku C: przykładowe programy dla procesora rodziny 8051 ( Krzysztof Kardach & Jacek Majewski) /************************************************************************** Program zapala lub gasi diody LED dołączone do portu P3 w zależności od stanu przycisków P1 (gdy przycisk wciśnięty to odpowiednia dioda świeci). **************************************************************************/ sfr P1= 0x90; /* definicja adresu portu P1 */ sfr P3= 0xB0; /* definicja adresu portu P2 */ void main(void) { data char i; while (1) { i=p3; /* odczyt stanu portu P3 i kopiowanie tego stanu do zmiennej i */ P1=i; /* kopiowanie stanu zmiennej i do portu P1 */ } }
/************************************************************************** Ćwiczenie 2 Program symuluje działanie 8-bitowego licznika binarnego. Ekspozycja stanów licznika odbywa się na diodach LED (DDS) dołączonych do portu P1. **************************************************************************/ #include <io51.h> /* zbiór definiujący adresy rejestrów procesora 8051 */ void main(void) { int i; } while (1) { P1++; /* zwiększanie zawartości portu P3 */ for(i=0;i<0x7fff;i++){}; /* opóźnienie czasowe */ }
/************************************************************************** Ćwiczenie 3 Program symuluje działanie 8-bitowego licznika binarnego. Ekspozycja stanu licznika prezentowana jest na diodach LED, dołączonych do portu P1 (DDS). Program wywołuje podprogram opóźnienia czasowego - Delay. **************************************************************************/ #include <io51.h> /* zbiór definiujący adresy rejestrów procesora 8051 */ #define SPEED 0x7fff /* definicja stałej */ void Delay(int time) /* podprogram opóźnienia czasowego */ { int i; for(i=0;i<time;i++){}; /* opóźnienie czasowe */ } void main(void) { char k; } while (1) { P1=~--k; /* zmniejszanie zawartości portu P1 */ /* negacja zapewnia świecenie diody gdy odpowiedni bit portu P1 jest w stanie 1 (high) */ Delay(SPEED); }
Przykładowe narzędzie - kompilator ICC-AVR firmy ImageCraft dla procesorów AVR:
Wybór opcji kompilatora:
Wybór opcji programatora:
Przydatne narzędzie : AVR Calc (kalkulator konfiguracyjny)
Perspektywy rozwoju
Rozwiązania Embedded Linux - minimoduł firmy Gumstix www.gumstix.com
Kompatybilność elektromagnetyczna a mikrokontrolery -wybrane zagadnienia Literatura: Intel - Application Note AP-125 ST - Application Note AN1015 i inne
Definicja kompatybilności elektromagnetycznej (EMC) Odpornośc na zakłócenia przedostające się z zewnątrz do układu Niski poziom zakłóceń generowanych Badania EMC - norma ISO/IEC 61000
Objawy niekompatybilności EMC Niestabilność systemu - np. resetowanie sterownika przy zmianach napięcia zasilania - załączenie innego odbiornika w sieci powoduje zawieszenie programu zakłócanie pracy innych urządzeń. Wszystkie urządzenia sprzedawane w UE muszą spełniać wymagania dot. EMC
Należy odróżniać EMS od EMC
Przykładowe źródła zakłóceń Impulsy zakłócające z obwodu zasilania Wyładowanie elektrostatyczne w obudowę urządzenia Model zastępczy obwodu zasilania - wyłączenie obciążenia R1, R2 powoduje przepięcie indukcyjne.
Wyładowania iskrowe Częste źródło problemów w układach motoryzacyjnych (układ zapłonowy - wysokie napięcie). Występują również w układach zawierających silniki komutatorowe (iskrzenia na szczotkach). Użycie w takich warunkach sterownika mikroprocesorowego wymaga specjalnych środków zaradczych.
Dalsze informacje Intel - nota aplikacyjna AP-125
Programowe metody polepszenia niezawodności systemów mikroprocesorowych Specjalna konstrukcja programu - sprawdzanie w pętli, czy nie nastąpiło zakłócenie pracy programu Przydatne jest użycie watchdoga (w razie zawieszenia programu w ciągu ms generuje sprzętowy sygnał reset).
Dalsze informacje - Nota ST Microelectronics = AN1015