Mikrokontrolery i ich zastosowania

Post on 16-Oct-2021

4 views 0 download

Transcript of Mikrokontrolery i ich zastosowania

Mikrokontroleryi ich zastosowania

Wstępne uwagi

Wstępny program wykładu:

• Układy sterowania;układy programowalne.• System binarny i heksadecymalny.• Mikroprocesor i mikrokontroler - podobieństwa i różnice.• Charakterystyka przykładowego mikrokontrolera na przykładzie

układu z rodziny HC05 (Motorola/Freescale).• Sposoby pisania programu dla mikrokontrolera, narzędzia

programowe i sprzętowe.• Sprzęganie mikrokontrolera z urządzeniami zewnętrznymi.

Układ sterowania -podstawowe pojęcia

• Układ o stałym algorytmie działania:działanie układu określone jest przezbudowę układu; każdorazowa zmianarealizowanego zadania wymagaprzebudowy całego układu.

WEJ WYJ

"Sztywny"algorytm dzia lania

Układ programowalny• Sposób działania określony jest poprzez

algorytm umieszczony w pamięci układuWEJ WYJ

a lgorytm dz ia lan ia(p rogram )

P AMIĘĆPROGRAMU

Modyfikacja działania U.P.nie wymaga zmiany jegostruktury!

Pierwsze przykłady - krosnamechaniczne (XIX w.);Większe rozpowszechnienie- dopiero po wynalezieniumikroprocesora (lata 70-teXX w.).

System (kod) dziesiętny

Używany w życiu codziennym, podstawą systemu jestliczba 10

Np. 1895 = 1*10^3+8*10^2+9*10^1+5*10^0

Do wyrażenia dowolnej liczby naturalnej potrzeba 10wartości ze zbioru {0,1,2,...,9}.

Liczby zapisane w systemie dziesiętnym często oznaczanesą przyrostkiem DEC.

System bardzo niedogodny do stosowania w technicecyfrowej!

System (kod) binarny(dwójkowy)

Podstawą tego systemu (kodu) jest liczba 2. Liczbyzapisane w systemie binarnym często oznaczane sąprzyrostkiem BIN.

Do wyrażenia dowolnej liczby naturalnej wystarczają 2wartości = 0 oraz 1.

1011BIN=1*2^3+0*2^2*1*2^1+1*2^0 = 11DEC

System łatwy do zastosowania w technice cyfrowej!

Każda z pozycji wewnątrz liczby binarnejnazywana jest bitem; bit może przyjąć wartość 0lub 1. W zapisie liczbowym bit pierwszy od lewejnazywamy najbardziej znaczącym (MSB - MostSignificant Bit) a pierwszy od prawej najmniejznaczącym (LSB - Least Significant Bit).

1010 -> MSB=1, LSB=0.

Inne systemy liczbowe

•Kod szesnastkowy (heksadecymalny) - oznaczenie HEX;podstawą jest liczba 16 (w zapisie dziesiętnym).

•Kod ósemkowy (oktalny) - oznaczenie OCT; podstawą jestliczba 8 [kod rzadko używany].

Niedogodności kodu binarnegoZnaczna długość zapisywanych wyrażeń:

254DEC = 11111101BIN ; przy użyciu n cyfr binarnych (bitów)można zapisać 2^n możliwych wartości.

Np. przy użyciu 8 bitów = 256DEC możliwych wartości.

Z pomocą przychodzi kod szesnastkowy

254DEC = FDHEX

Sposób konwersji BIN->HEX : liczbę binarną dzielimy napaczki po 4 bity, zaczynając od prawej (czyli od LSB);następnie każdą paczkę zamieniamy na liczbę szesnastkowąwedług następującej tabeli:

DEC BIN HEX OCT0 00000000 0 01 00000001 1 12 00000010 2 23 00000011 3 34 00000100 4 45 00000101 5 56 00000110 6 67 00000111 7 78 00001000 8 109 00001001 9 1110 00001010 A 1211 00001011 B 1312 00001100 C 1413 00001101 D 1514 00001110 E 1615 00001111 F 1716 00010000 10 20

„Paczki” 4-bitowe określamy jako „nible” natomiast 8-bitowejako bajty (byte), 16-bitowe jako słowa (word).

W technice mikroprocesorowej wykorzystywany jest główniekod binarny. Wartości 1 przydzielany jest stan wysokinapięcia (stąd oznaczenie H = High), natomiast wartości 0stan niski (L=Low).

Informacje wewnątrz procesora przechowywane są w tzw.rejestrach. Z pewnym przybliżeniem rejestr możnapotraktować jako komórkę specjalizowanej pamięci oustalonej pojemności (liczbie bitów). Liczbę tę nazywamydługością rejestru.

Mikroprocesor i mikrokontroler -- podobieństwa i różnice

MIKROPROCESOR:• duży pobór prądu (>1A)• duża moc obliczeniowa• duża liczba niezbędnych układów

pomocniczych• dość wysoka cena

• MIKROKONTROLER:• niewielki pobór prądu (<10mA)• mała lub średnia moc obliczeniowa• minimalna liczba niezbędnych

elementów pomocniczych• niewielka cena (<1 US$).

Dodatkowe cechy:• możliwość przejścia w stan uśpienia,• sprzętowe zabezpieczenia przed

zawieszeniem się programu(watchdog).

Najważniejsi producenci mikrokontrolerów

• Microchip - procesory rodziny PIC• Philips - procesory rodz. 8051,ARM• Freescale (do 07.2004 jako Motorola) -

rodziny HC05,08,11,16,32...• Atmel - 8051, AVR• Hitachi - Renesas• ST Microelectronics - ST6,ST7...

Uzupełnienie - udział mikrokontrolerów (MCU) w rynku

Rynek elementów półprzewodnikowych w r. 2006 - ok. 246 mld US$

Rynek mikrokontrolerów - ok. 26 mld US$ (przychody ze sprzedaży)

Cechy rynku:

•Ponad 40 producentów MCU

•Ponad 50 oferowanych architektur MCU

•Żadna z architektur nie przekracza 5% udziału w całym rynku

•Proporcje udziału poszczególnych grup zastosowań:

-zast. przemysłowe: 9 mld US$

-zast. konsumenckie: 6 mld US$

-zast. motoryzacyjne: 11 mld US$

Procesory rodziny HC05 -wstępne informacje

Procesor 68HCJ1A - wersja w obudowie DIP

Charakterystyka przykładowego mikrokontrolera na przykładzieukładu z rodziny 68HC05 (Motorola/Freescale):

• Architektura wewnętrzna• Mapa pamięci• Lista rozkazów rodziny 68HC05 - wprowadzenie• Sposoby pisania programu dla mikrokontrolera, narzędzia

programowe i sprzętowe.

Procesor 68HCJ1A - wersja w obudowie DIP

Opis wyprowadzeń:

-Zerowanie procesora , sygnał aktywny w stanieniskim.

- wejście zewnętrznego przerwania niemaskowalnego

-wyprowadzenia zewnętrznego, dwukierunkowegoportu danych (portu A) - 7 bitów

-wyprowadzenia zewnętrznego, dwukierunkowegoportu danych (portu B) - 5 bitów

OSC1,2 -

VCC

VSS

wejścia do podłączenia rezonatora kwarcowego lubceramicznego

Zasilanie +

Zasilanie -

Rejestry CPU

Uproszczony opis pracy procesora - kolejne czynności

•Po resecie - sprawdzenie stanu komórek o adresach 7FEhex oraz7FFhex (wektor resetu)

•Przejście pod adres w pamięci, który zapisany jest w komórkach7FE oraz 7FF

•Pobranie rozkazu

•Zdekodowanie rozkazu

•Wykonanie rozkazu

•Pobranie następnego rozkazu

Lista rozkazów procesora HC05 - grupy instrukcji

• Instrukcje typu rejestr/pamięć• instrukcje typu czytaj-modyfikuj-zapisz• instrukcje skoków i rozgałęzień• instrukcje manipulacji bitami• instrukcje sterujące

Dokładniejsze informacje - dokumentacja procesora.

Charakterystyka przykładowego mikrokontrolera na przykładzie układuz rodziny 68HC05 (Motorola/Freescale) - ciąg dalszy:

• Lista rozkazów rodziny 68HC05 - dokończenie.• Wybrane techniki programowania w asemblerze; metody pisania

programu dla mikrokontrolera, narzędzia programowe i sprzętowe.• Sprzęganie mikrokontrolera z urządzeniami wejścia/wyjścia (I/O);

obsługa sygnałów analogowych i cyfrowych• Wybrane architektury mikrokontrolerów• Programowanie mikrokontrolera w języku wysokiego poziomu -

wprowadzenie• kompatybilność elektromagnetyczna a mikrokontrolery - wybrane

zagadnienia

Lista rozkazów procesora HC05 - grupy instrukcji

• Instrukcje typu rejestr/pamięć• instrukcje typu czytaj-modyfikuj-zapisz• instrukcje skoków i rozgałęzień• instrukcje manipulacji bitami• instrukcje sterujące

Instrukcje rejestr - pamięćPrzetwarzają dane z rejestrów CPU i komórek pamięci. Większość

używa 2 argumentów - jeden z rejestru CPU, drugi z komórkipamięci.

Instrukcje Czytaj-Modyfikuj-ZapiszPrzetwarzają dane z rejestrów CPU lub komórek pamięci. Instrukcja

odczytuje zawartość rejestru, przetwarza ją i wynik zapisuje zpowrotem do rejestru.

Instrukcje skoków i rozgałęzieńUmożliwiają zmianę normalnej kolejności wykonywania rozkazów

wchodzących w skład programu.

Najważniejsze z nich to JMP (Jump = skok bezwarunkowy) oraz JSR (Jump to Subroutine = skok dopodprogramu).

JMP = skok bez zapamiętania adresu powrotu

JSR = skok do podprogramu z zapamiętaniem adresu powrotu. Adres ten przechowywany jest w wydzielonymobszarze pamięci (na stosie procesora). Adres wierzchołka stosu przechowywany jest w rejestrze SP (StackPointer).

Ważne instrukcje - BRCLR oraz BRSET : skok warunkowy wykonywany po sprawdzeniu stanu bitu w obszarzepierwszych 256 bajtów przestrzeni adresowej procesora.

Przykłady zastosowania:

BRSET 4,PORTA, ALARM ; jeśli stan bitu nr 4 portu A (PA4) jest wysoki (PA4=1), to skocz do etykiety ALARM

BRCLR 2,PORTB, KONIEC ; jeśli bit PB2=0 to skocz do etykiety KONIEC.

Przykład zastosowania instrukcji skoku

Org rom

start: lda #$06

sta ddra

lda ddra

jsr czekaj

lda #$01

sta porta

jsr czekaj ;podprogram opóźnienia

petla: inca

sta porta

jsr czekaj

jmp petla

Czekaj: sta $00c0 ; zapamiętaj A w komórce pamięci oadresie 00c0 hex

lda #$80 ; wartość 80hex do akumulat.

Skok: Deca ; zmniejsz zawartość akumulatora o 1.

bpl skok ; jeśli flaga N=0 (tzn. jeśli A>0)

lda $00c0; przywróć zawartość A

rts ; powrót do programu głównego

Instrukcje manipulacji na bitachUmożliwiają zapis lub odczyt dowolnego bitu z obszaru pierwszych256 bajtów przestrzeni adresowej procesora; do tej grupy można

również zaliczyć wybrane instrukcje skoków warunkowych

Przykład zastosowania instrukcji operacji bitowych

BSET 4,PORTA ; ustaw bit nr 4 portu A (PA4) w stan wysoki (PA4=1) bez sprawdzania warunków

BCLR 2,PORTB; skasuj bit PB2 (tzn. PB2=0) bez sprawdzania warunków

Instrukcje tej grupy są bardzo przydatne przysterowaniu pojedynczych wyjść/wejść procesora

Instrukcje sterująceMają wpływ na zawartość rejestrów oraz na sposób pracyprocesora (np. wejście w tryb obniżonego poboru mocy).

Sprzęganie mikrokontrolera zurządzeniami wejścia/wyjścia (I/O);

Podstawowe zagadnienie: jak wprowadzić do procesora (MCU) lubwyprowadzić z niego sygnał sterujący. Pojawiają się tu następująceproblemy:

a) dostosowanie poziomów napięć i prądów sygnałów do wymagańprocesora

b) ochrona przed zakłóceniami oraz ich skutkami.

c) konwersja postaci sygnału (np. z postaci szeregowej na równoległą,zmiana protokołu sygnału).

d) zapewnienie właściwych uwarunkowań czasowych (np. czas reakcji nazdarzenie krytyczne).

Przykład zastosowania - pilot RTV zrealizowany przyużyciu procesora HC05

Źródło - nota aplikacyjna AN463 Freescale Semiconductors

Przy sterowaniu obciążeń indukcyjnych pojawiają się specyficzne problemy -przepięcia mogące uszkodzić porty procesora; ponadto wydajność prądowaportu jest zwykle niewystarczająca np. do załączenia przekaźnika; dlatego

zalecane jest stosowanie tranzystorów pośredniczących i diodantyprzepięciowych; poniżej prosty przykład na bazie procesora atMega128

(moduł Mmnet firmy Propox)

Sterowanie urządzeń mocy - wybrane zagadnieniaPrzy sterowaniu urządzeń zasilanych napięciem 230V AC lub wyższym pojawia się

problem bezpieczeństwa operatora oraz zabezpieczenia mikrokontrolera przeduszkodzeniami. Najlepszym rozwiązaniem jest separacja galwaniczna (oddzielenie

elektryczne urządzeń).

Rozwiązanie 1 - optoizolacja = użycie transoptora

Elementem wykonawczym często jest tyrystor lub triakjego główną zaletą jest brak elementów mechanicznych

i stąd duża trwałość (liczba cykli łączeniowych >108)

Przykład aplikacji - minirobotzadanie nawigacyjne = śledzenie czarnej linii narysowanej na podłożu

Źródło: Seattle Robotics Society

Przykład aplikacji - minirobotzadanie nawigacyjne = śledzenie czarnej linii narysowanej na podłożu

Przy okazji - inne zastosowanie transoptora - czujnik optycznypodłoża

Schemat blokowy układu sterowania

Inne architektury procesorów

Mikrokontrolery AVR (Atmel)

Nowości:

wbudowanyUART (układtransmisjiszeregowej)

ProgramowanieISP (w systemie)

Narzędzie potrzebne do pracy z systemem =programator ISP

Koszt elementów <10 PLN

Układ docelowy do współpracy z programatorem

Procesory AVR -atMega (Atmel)

Nowości:wbudowany

przetwornik A/C

Mocnorozbudowany układczasowy (timery z

możliwościągeneracji PWM).

Dalsze zagadnienia:

• Wybrane architektury mikrokontrolerów - konstrukcjezaawansowane

• Programowanie mikrokontrolera w języku wysokiego poziomu -wprowadzenie

• kompatybilność elektromagnetyczna a mikrokontrolery - wybranezagadnienia - 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 133MHz;

•Dodatkowe bloki wbudowane wstrukturę procesora, np. MMU -Moduł Zarządzania Pamięcią

•Pipelining, czyli jednoczesnaobsługa kilku rozkazów(przetwarzanie potokowe, 3 rozk.)

•Kompatybilność z różnymisystemami operacyjnymi(Embedded Linux, Windows CE,Symbian, Palm OS).

•Zastosowania: drukarki, prostepalmtopy, aparaty cyfrowe,telefony GSM, sprzęt medyczny

Uproszczony schemat blokowy procesora rodziny ARM9

Wybrane cechy:

•Częstotliwość zegara do 250MHz;

•Dodatkowe bloki wbudowane wstrukturę procesora, np. MMU -Moduł Zarządzania Pamięcią

•Pipelining, czyli jednoczesnaobsługa kilku rozkazów(przetwarzanie potokowe, 5 rozk.)

•Kompatybilność z różnymisystemami 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 mocyprzy 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 nadzasobami procesora

•Możliwość ręcznejoptymalizacji algorytmu

•Mały rozmiar programu(kodu) wynikowego

Wady:

•Mała produktywność pracyprogramisty

•Nieczytelny kod źródłowy

•Bardzo trudneprogramowanie np.złożonych operacjimatematycznych

Porównanie wyglądu kodu (fragmenty)

Asembler:

lda $#0xf5 ; załaduj do A wartość

;f5 hex

sta porta ; zawartość akumulatora

prześlij do portu A

;---------------------------

inc porta

??????? (brak gotowej procedury!)

Język C:

porta=0xf5;

porta++;

y=sin(x);

Programowanie w języku C:

Zalety:

•Szybkość tworzenia programu

•duża przenośność kodu

•łatwe programowanie złożonychalgorytmów

•łatwa obsługa operacji wej/wyj

•wielka liczba dostępnych bibliotek

Wady:

•Nieco większa objętośćkodu źródłowego (przestajebyć to obecnie problemem).

•Dość drogie narzędziaprogramistyczne(ale częstodostępne są wersjedarmowe)

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. II2002

3) Strostroup - Język C++ (dla ambitnych!).

Programowanie w języku C: przykładowe programy dla procesora rodziny8051 (© Krzysztof Kardach & Jacek Majewski)

/**************************************************************************Program zapala lub gasi diody LED dołączone do portu P3 w zależności odstanu 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ówlicznika 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 doportu 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 dlaprocesoró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 Gumstixwww.gumstix.com

Kompatybilność elektromagnetyczna a mikrokontrolery

-wybrane zagadnienia

Literatura:

•Intel - Application Note AP-125

•ST - Application Note AN1015 i inne

Definicja kompatybilnościelektromagnetycznej (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ściEMC

• Niestabilność systemu - np. resetowaniesterownika przy zmianach napięcia zasilania- załączenie innego odbiornika w siecipowoduje zawieszenie programu

• zakłócanie pracy innych urządzeń.

Wszystkie urządzenia sprzedawane w UEmuszą 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ążeniaR1, R2 powoduje przepięcie indukcyjne.

Wyładowania iskrowe• Częste źródło problemów w układach

motoryzacyjnych (układ zapłonowy - wysokienapięcie).

• Występują również w układach zawierającychsilniki komutatorowe (iskrzenia naszczotkach).

• Użycie w takich warunkach sterownikamikroprocesorowego wymaga specjalnychśrodków zaradczych.

Dalsze informacje

• Intel - nota aplikacyjna AP-125

Programowe metody polepszenianiezawodności systemów

mikroprocesorowych• Specjalna konstrukcja programu -

sprawdzanie w pętli, czy nie nastąpiłozakłócenie pracy programu

• Przydatne jest użycie watchdoga (w raziezawieszenia programu w ciągu ms generujesprzętowy sygnał reset).

Dalsze informacje -

• Nota ST Microelectronics = AN1015