laboratorium komputerowe sterowanie w elektronice...

24
Komputerowe Sterowanie w Elektronice Przemysłowej 1 Autorzy: Rafał Kotas, Piotr Krasiński LABORATORIUM Komputerowe Sterowanie w Elektronice Przemysłowej

Upload: lekiet

Post on 28-Feb-2019

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

1

Autorzy: Rafał Kotas, Piotr Krasiński

LABORATORIUM

Komputerowe Sterowanie

w Elektronice Przemysłowej

Page 2: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

2

Niniejsza instrukcja nie jest kompletnym źródłem informacji niezbędnych do

wykonania zaproponowanych ćwiczeń. Zawarte są w niej jedynie wskazówki na co należy

zwrócić szczególną uwagę przy programowaniu mikrokontrolera. Podstawowymi źródłami

informacji, z których należy korzystać są: nota katalogowa mikrokontrolera oraz nota

katalogowa płyty dydaktycznej wyposażonej we wspomniany mikrokontroler oraz peryferia.

Potrzebna do wykonania poniższych ćwiczeń dokumentacja znajduje się we wskazanej

lokalizacji: C:\Atmel\Dokumentacja AVR\ lub na stronach internetowych:

1) www.atmel.com

2) www.kamami.pl

3) www.atmel.com

Literatura:

o Mikrokontrolery AVR ATmega w praktyce / Rafał Baranowski

o Wyświetlacze graficzne i alfanumeryczne w systemach mikroprocesorowych / Rafał

Baranowski

o Sztuka programowania mikrokontrolerów AVR : podstawy / Andrzej Pawluczuk

o Sztuka programowania mikrokontrolerów AVR : przykłady / Andrzej Pawluczuk

Mapa połączeń płyty dydaktycznej:

PA0 -> CON7 (P2) – potencjometr analogowy [zielony – 1]

PA1 -> CON7 (TEM) – termistor [zielony – 1]

PA2 – PA7 -> CON13 (D4, D5, D6, D7, E, RS) – char LCD [zielony – 6]

CON13 (RW) -> GND – char LCD [zielony – 1]

PB0-PB3 -> CON19 (SW0, SW1, SW2, SW3) – klawiatura [czerwony – 4]

PB4, PB6, PB7-> CON8 (CS, SIO, SCK) – termometr cyfrowy [czerwony – 3]

PB5 -> CON7 (SPK) – brzęczek [czerwony – 1]

PC6-PC7 -> CON9 (6, 7) – LED-y: LED6, LED7 [niebieski – 2]

PD0 -> CON7 (RxD) – transmisja szeregowa [niebieski – 1]

PD1 -> CON7 (TxD) – transmisja szeregowa [niebieski – 1]

PD2-PD6 -> CON9 (0, 1, 2, 3, 4, 5) – LED-y: LED0, LED1, LED2, LED3, LED4, LED5

[niebieski – 6]

PC0, PC1 -> CON7 (SCL,SDA) [niebieski – 2]

Page 3: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

3

Wstęp teoretyczny do ćwiczeń 1-5 Każdy mikrokontroler integruje w swojej strukturze kilka elementów, nazywanych

zasobami. Niemal w każdym mikrokontrolerze z rodziny AVR występuje pewna grupa

zasobów. Są to:

pamięć RAM,

pamięć programu,

rejestry robocze,

jednostka centralna CPU (Central Processing Unit),

rejestry wejścia/wyjścia.

Pamięć RAM jest ulotną pamięcią przewidzianą, do zapamiętywania informacji powstałej

podczas realizacji programu. W pierwszej chwili po włączeniu zasilania zawartość pamięci

RAM trzeba traktować jako przypadkową. Przed jej właściwym użyciem należy ją

zainicjować, czyli ustawić zmienne programu przy użyciu danych początkowych. Do tej

pamięci dostęp jest ograniczony i możliwy wyłącznie z poziomu programu. Wynika z tego, iż

jedynie program może zapisywać dane do pamięci oraz odczytywać z niej dane. Pamięć

programu nie jest pamięcią ulotną. Przewidziana jest ona do przechowywania kodu programu

w postaci binarnych kodów rozkazów programu. Wykonywanie tych rozkazów w ściśle

określonej kolejności, sprawia, że mikrokontroler spełnia zaprogramowane zadanie.

Najważniejszym elementem wchodzącym w skład struktury mikrokontrolerów jest jednostka

centralna. Element ten odpowiedzialny jest za realizację programu. Kody rozkazów pobierane

z pamięci programu dekodowane są przez CPU, a następnie są wykonywane czynności

związane z tą instrukcją. Bardzo ważnym fragmentem CPU jest rejestr nazywany licznikiem

rozkazów. Wskazuje on miejsce w programie, w którym obecnie znajduje się jego wykonanie.

Wszystkie mikrokontrolery posiadają również pewien zestaw wskaźników, nazywanych

inaczej rejestrem flag. Do tego rejestru należą m.in. flagi: przeniesienia C (carry flag)

i globalnego zezwolenia na przerwania I (interrupt enable flag). Zasobami mikrokontrolerów

AVR, które biorą udział w operacjach arytmetycznych i logicznych są tzw. rejestry robocze.

Wszystkie operacje realizowane przez mikrokontroler wykonywane są właśnie na tych

rejestrach.

Do zajęć przygotowano płyty dydaktyczne wyposażone w mikrokontroler ATmega32.

Główną jego cechą, która zadecydowała o takim wyborze jest dostępna ilość portów,

wbudowany przetwornik A/C, a także dostępność, niski koszt i łatwość programowania.

ATmega32 jest 8–bitowym mikrokontrolerem z rodziny AVR. Rdzeń mikrokontrolera AVR

posiada bogaty zestaw instrukcji z 32 rejestrami ogólnego przeznaczenia, które mają symbole

od R0 do R31. Rejestry te, z punktu widzenia programu, znajdują się na początku

wewnętrznej pamięci RAM. Bezpośrednie podłączenie wszystkich 32 rejestrów do jednostki

arytmetyczno-logicznej (ALU), pozwala na jednoczesny dostęp do dwóch niezależnych

rejestrów w jednej instrukcji wykonywaj w czasie jednego cyklu maszynowego. Taka

architektura zwana architekturą RISC jest zdecydowanie bardziej wydajna i efektywna, gdyż

pozwala na szybszą pracę w porównaniu z konwencjonalnymi mikrokontrolerami

o architekturze typu CISC. ATmega32 posiada wbudowane: 32K bajty wewnętrznej

programowalnej pamięci typu FLASH z możliwością odczytu podczas zapisu, 1K bajt

EEPROM, 2K bajty SRAM, 32 rejestry robocze, 8-kanałowy, 10-bitowy przetwornik ADC,

Watchdog – programowalny licznik z wewnętrznym oscylatorem, SPI - port równoległy,

JTAG, programowany szeregowo USART, dwa 8-bitowe liczniki, jeden licznik 16-bitowy,

4-kanałowy PWM oraz komparator analogowy. Możliwe są następujące częstotliwości pracy:

Page 4: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

4

1, 2, 4, 8 albo 16 MHz. Istnieje również możliwość podłączenia do mikroprocesora kwarcu

w celu uzyskania precyzyjnej częstotliwości pracy. Do poprawnej pracy mikrokontroler

ATmega32 wymaga napięcia zasilającego od 4,5 do 5,5 V. Mikrokontroler posiada

wbudowane obwody, kontrolujące prawidłowość napięcia zasilającego. W przypadku, gdy

napięcie niespodziewanie obniży się poniżej wartości zadanej, mikrokontroler zostaje

zresetowany i pozostaje w tym stanie do czasu powrotu prawidłowego napięcia zasilającego.

Mikrokontroler ten wyposażony jest w 6 różnych trybów pracy w uśpieniu. Dzięki temu

posiada wiele niezbędnych konfiguracji, w których możliwe jest oszczędzanie energii.

Podczas aktywnej pracy mikrokontrolera pobiera on około 1,1 mA. Po przejściu w jeden

z trybów uśpienia pobór prądu spada poniżej 0,4 mA. Istnieje również ustawienie

mikrokontrolera do pracy w trybie niskiego poboru mocy (Power-Down). W trybie tym

mikrokontroler zapamiętuje zawartość rejestrów, ale zatrzymuje oscylator, uniemożliwiając

wykonywanie instrukcji, aż do wystąpienia następnego przerwania lub sprzętowego resetu.

ATmega32 produkowana jest w trzech rodzajach obudów (w tym SMD). Posiada 4 8-bitowe

porty wejścia/wyjścia A, B, C i D. Osobne wyprowadzenia są przydzielone do podłączenia

mikrokontrolera do zasilania, masy, zewnętrznego źródła odniesienia dla przetwornika ADC,

zewnętrznego kwarcu, a także do sprzętowego resetu. Rejestry wejścia/wyjścia są zbiorem

rejestrów przeznaczonych do komunikacji ze „światem zewnętrznym”. Służą one również do

kontroli i konfigurowania wbudowanych w mikrokontroler bloków funkcjonalnych.

Odpowiednie zapisy w poszczególnych rejestrach decydują o tym, które bity portów

równoległych spełniają rolę wejść, a które rolę wyjść.

W mikrokontrolerach AVR w przestrzeni rejestrów wejścia/wyjścia znajduje się wskaźnik

stosu SP (Stack Pointer). Przede wszystkim służy on do zachowania rejestrów

wykorzystanych w procedurze obsługi przerwania (instrukcja push i pop). Wskaźnik stosu

w mikrokontrolerach AVR jest rejestrem o charakterze adresowym. W przypadku

mikrokontrolerów z rodziny AVR wskaźnik stosu SP jest adresem pierwszego, wolnego do

zapisu miejsca w pamięci RAM. Do obsługi mikrokontrolerów ATmega32 stworzono wiele

programów, środowisk narzędziowych i oprogramowania. Są to m.in. kompilatory C,

debuggery i programatory.

Rys.1. Adresy rejestrów roboczych

mikrokontrolera ATmega32

Rys. 2. Adresy portów i rejestrów I/O

mikrokontrolera ATmega32

Page 5: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

5

Ćwiczenie 1 Temat: Obsługa rejestrów i portów mikrokontrolera – operacje podstawowe

Zadanie: Na porcie PB ustawić żądaną informację o dowolnej treści. Skontrolować działanie

przy użyciu symulatora wbudowanego w AVR Studio.

Język: Asembler

Zasoby: port PB

Ćwiczenie 2 Temat: Obsługa rejestrów i portów mikrokontrolera – operacje podstawowe

Zadanie:

1) Na odpowiednim porcie ustawić żądaną informację o dowolnej treści. Skontrolować

działanie przy użyciu diod LED na płycie dydaktycznej.

2) Odmierzanie czasu – pętla opóźniająca i wykorzystanie przerwań. Wyświetlić na

buforze LED dowolną dynamiczną informację – pulsowanie, miganie itp.

Język: Asembler

Zasoby: port PD2-PD7, port PC6-PC7

Ćwiczenie 3 Temat: Obsługa rejestrów i portów mikrokontrolera.

Zadanie: Obsługa klawiatury. W zależności od ustawienia klawiatury wyświetlać

odpowiednią informację na buforze LED.

Język: Asembler

Zasoby: port PB0-PB3, port PD2-PD7, port PC6-PC7

Ćwiczenie 4 Temat: Generacja dźwięków za pomocą brzęczyka.

Zadanie: 1) Wykorzystać programy do odmierzania czasu do generacji dźwięku w zakresie

słyszalnym.

2) Przyporządkować klawiszom różne dźwięki.

Język: Asembler

Zasoby: port PB5, port PB0-PB3

Ćwiczenie 5 Temat: Generacja dźwięków za pomocą brzęczyka oraz wyświetlanie informacji na diodach

LED.

Zadanie: Wygenerować dźwięk oraz ustawić dowolną informację na diodach LED. Napisać

obsługę klawiatury.

Język: C

Zasoby: port PB5, port PB0-PB3

Page 6: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

6

Wstęp teoretyczny do ćwiczenia 6 Wszystkie mikrokontrolery z rodziny AVR wyposażone są w przetwornik analogowo-

cyfrowy (ADC). Najczęściej jest to jeden przetwornik, który posiada kilka

multipleksowanych wejść. Programista posiada możliwość wyboru, z którego wejścia

w danym momencie chce korzystać. Przetwornik może pracować w dwóch trybach:

1. Tryb ciągły, konwersja wykonywana automatycznie co określony czas;

2. Wyzwalanie ręczne.

Mikrokontroler Atmega32, posiada jeden 10-bitowy przetwornik ADC. Wynik

konwersji przechowywany jest w rejestrach ADCH i ADCL. Istnieje możliwość odczytu

8-bitowego. Do konfiguracji przetwornika wykorzystywane są dwa rejestry:

• ADCMUX

• ADCSRA

Podłączanie przetwornika analogowo-cyfrowego

W układach elektronicznych, w których występują sygnały analogowe często

wprowadza się rozdział napięć zasilających na napięcia „analogowe” i „cyfrowe”. Tak samo

postępuje się z masą, prowadząc „masę cyfrową” i „masę analogową” osobno na płytce.

Zabiegi takie wynikają z faktu, że układy cyfrowe w których występuje częste kluczowanie są

źródłami szumu. Szum ten przedostający się na linie zasilania i masy może zakłócać sygnały

analogowe i wprowadzać błędy pomiaru.

Jednym z typowych rozwiązań oddzielenia zasilania analogowego od cyfrowego jest

układ pokazany na rysunku poniżej. Jak wiadomo, cewkę w przypadku prądu stałego można

rozpatrywać jako zwarcie. Dla prądów wysokiej częstotliwości jest ona „oporem”.

Kondensatory stanowią przerwę w obwodzie dla prądu stałego jednak są dogodną drogą dla

prądu zmiennego. Cały ten układ powoduje więc, że prąd stały może swobodnie płynąć od

źródła do odbiorników natomiast prąd zmienny (wynikający z zakłóceń) jest zwierany do

masy.

Rys. 3. Rozdzielenie zasilania analogowego i cyfrowego.

W przypadku masy nie wprowadza się elementów filtrujących pomiędzy masę

cyfrową i analogową. Prowadzi się natomiast te sygnały osobno na ścieżkach płytki

drukowanej zwierając je w tylko jednym miejscu na płytce drukowanej. Mikrokontrolery

z rodziny AVR posiadają oddzielne piny dla analogowych i cyfrowych sygnałów

zasilających. W wielu mikrokontrolerach napięcie z wejścia analogowego wykorzystywane

jest jako napięcie zasilające port A. (sprawdź w karcie katalogowej). Z tego powodu, jeśli nie

wykorzystujemy przetwornika ADC a zamierzamy korzystać z portu A, należy pin AVCC

połączyć z napięciem cyfrowym. Takiego połączenia można też dokonać jeśli nie zależy nam

na dużej dokładności konwersji analogowo-cyfrowej.

Page 7: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

7

Rys. 4. Przykładowe sygnały podane na wejście ADC

Mikrokontrolery z rodziny AVR posiadają wejście napięcia odniesienia do

przetwornika ADC (VREF). Podczas projektowania układu wykorzystującego przetwornik

ADC należy wziąć pod uwagę jakie będą sygnały podawane na jego wejście. Na rysunku 4

pokazano dwa przykładowe sygnały. Wartość sygnału o dużej amplitudzie (a) zmienia się w

zakresie około 0 – 5V. Dlatego, napięcie odniesienia dla przetwornika nie może być niższe

niż 5V. W przypadku niższego napięcia odniesienia przetwornik dawałby fałszywe wyniki

lub mógłby nawet zostać uszkodzony. W drugim przypadku, wartość sygnału nie przekracza

wartości 1V (b). Duża część zakresu pomiarowego przetwornika jest więc nie wykorzystana

a sygnał jest próbkowany z mniejszą rozdzielczością niż jest to dostępne. Z tego powodu, jeśli

mamy pewność, że sygnał nie będzie przekraczał wartości 1V, najlepszym rozwiązaniem jest

podanie napięcia odniesienia wynoszącego 1V. Istnieją trzy możliwości podania napięcia

odniesienia do przetwornika:

1. Zewnętrzne napięcie podane na pin VREF

2. VREF połączone wewnątrz mikrokontrolera do AVCC

3. Wewnętrzne źródło napięcia 2,56V

W dokumentacji zestawu startowego należy zwrócić uwagę na sposób podłączenia

pinu VREF. Jak widać, jest do niego podłączony kondensator. Należy też zwrócić uwagę jaki

sygnał może zostać podany na wejście przetwornika. Może on mieć wartość nawet 5V.

Dlatego jest tylko jedno ustawienie bitów REFS1, REFS0 właściwe dla zestawu

uruchomieniowego ZL15AVR.

Rejestr ADCMUX

Mikrokontrolery z rodziny AVR, najczęściej posiadają wiele wejść do przetwornika

ADC. W szczególności w mikrokontrolerze AtMega32 każdy pin portu A może być użyty

jako wejście przetwornika. Podczas konfiguracji przetwornika, musimy więc określić, który

z pinów ma być użyty jako wejście ADC. Do ustawienia wejścia używane są bity MUX[4..0].

Przetwornik ADC w mikrokontrolerze Atmega32 posiada rozdzielczość 10 bitów. Aby

zapisać wynik konwersji wykonanej przy użyciu tego przetwornika, potrzebne są dwa

8-bitowe rejestry (ADCH i ADCL). Ponieważ zapisujemy wartość 10-bitową do dwóch

rejestrów (16-bitów), pozostaje 6 bitów zbędnych, które uzupełniane są zerami. Istnieje

możliwość wyboru, czy wartość rejestrów za zostać wyjustowania do prawej lub lewej strony.

- ADLAR = 0, justowanie do prawej, odczyt 10-bitowy

ADCH 0 0 0 0 0 0 1 1

ADCL 1 1 1 1 1 1 1 1

- ADLAR = 1, justowanie do lewej, odczyt 8-bitowy

ADCH 1 1 1 1 1 1 1 1

ADCL 1 1 0 0 0 0 0 0

Page 8: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

8

Justowanie do prawej strony ma sens kiedy zależy nam na największej dostępnej

dokładności i odczytujemy pełen, 10-bitowy, wynik. Musimy odczytać oba rejestry

a następnie ich zawartość skleić ze sobą. Jeśli nie zależy nam na pełnej dokładności, możemy

odczytywać tylko wartość 8-bitową. W takim przypadku justujemy wynik do lewej

i odczytujemy jedynie wartość rejestru ADCH.

Rejestr ADCSRA

Jeśli chcemy używać przetwornika, musimy go najpierw włączyć. Służy do tego bit

ADEN. Przetwornik ADC w mikrokontrolerach AVR może pracować w dwóch trybach:

1. Wyzwalanie ręczne

2. Praca ciągła

W przypadku wyzwalanie ręcznego musimy ręcznie ustawić bit, który uruchomi

konwersję (ADSC), następnie sprawdzić flagę (ADIF), która mówi czy konwersja się

zakończyła. Następnie możemy odczytać wynik z rejestrów ADCH i ADCL.

Przykładowy program

Jest to przykładowe podejście przy wykorzystaniu jednego wejścia przetwornika ADC,

odczycie 10-bitowym i ręcznym wyzwalaniu:

int main()

{

ustawienie rejestru ADCMUX

while(1)

{

Ustawienie rejestru ADCSRA (uruchomienie konwersji)

Sprawdzenie flagi informującej o ukończeniu konwersji

Odczytanie zawartości rejestrów ADCH i ADCL

Przeliczenie wartości rejestrów na oczekiwane jednostki

Wyświetlenie wyniku

}

}

Ćwiczenie 6 Temat: Obsługa 10-bitowego przetwornika ADC wbudowanego w mikrokontroler.

Zadanie: W zależności od ustawienia pokrętła potencjometru analogowego P2 wyświetlić

wyskalowaną wartość tego napięcia na diodach LED.

Język: C

Zasoby: port PA0, port PD2-PD7, port PC6-PC7

Page 9: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

9

Wstęp teoretyczny do ćwiczenia 7 Transmisja szeregowa RS- 232

Złącze RS-232 jest podstawowym złączem wykorzystywanym w transmisji

szeregowej. Znaki składające się z pięciu do ośmiu bitów mogą być przesyłane w sposób

szeregowy bit po bicie. Aby przesłać dane przez złącze RS-232 należy zaopatrzyć je w dwa

dodatkowe bity sterujące, mianowicie:

• Bit startu, który wyznaczy rozpoczęcie nadawania;

• Bit stopu, wyznacza koniec procesu nadawania pojedynczego znaku.

Wykorzystywany jest tutaj również bit parzystości, w celu detekcji błędów. Jest to

jednak czynność stosowana coraz rzadziej, ponieważ lepszym rozwiązaniem okazuje się być

algorytm sum kontrolnych, zapewnia on znacznie większy poziom detekcji błędów

w przesyłanym znaku. Bit parzystości kontroluje stosunek zer do jedynek w znaku. W

transmisji szeregowej asynchronicznej stosuj się dwa bity stopu, służy to zwiększeniu odstępu

pomiędzy przesyłanymi znakami. Urządzenia DCE (Data Communication Equipment ) są to

np. modemy lub też inne urządzenia, które służą w pośredniczeniu w transmisji szeregowej

danych. Urządzenia zaś DTE (Data Terminal Equipment) to komputery lub inne urządzenia,

które są nadawcami lub odbiorcami informacji.

Przesyłanie danych przez magistralę RS-232 zwykle za pomocą kabla. Przy tym

połączeniu może być realizowane jedno z kilku połączeń w zależności od złącza, które

zastosowane jest w komputerze (9 lub 25 pin):

- DB-9 BD-9

RDX(2) ------------- TDX(3)

TDX(3) ------------- RDX(2)

GND(5) ------------- GND(5)

- DB-9 DB-25

RDX(2) ------------ TDX(2)

TDX(3) ------------ RDX(3)

GND(5) ------------ GND(7)

- DB-25 DB-25

RDX(3) ------------ TDX(2)

TDX(2) ------------ RDX(3)

GND(7) ------------ GND(7)

Szybkość transmisji szeregowej

Nawet w transmisji asynchronicznej urządzenia nadawcze i odbiorcze muszą być

w jakiś sposób ,,zsynchronizowane'' – muszą więc pracować z ,,jednakową szybkością'' (to

znaczy wiedzieć ile ,,trwa'' transmisja pojedynczego bitu). Szybkość transmisji podawana jest

w bitach na sekundę - bps (ang. bits per second). Najczęściej używane szybkości w transmisji

szeregowej mieszczą się w następującym szeregu: 75, 110, 150, 300, 600, 1200, 2400, 4800,

9600, 19200, 38400, 57600 oraz 115200 bps. Urządzenia nadawcze i odbiorcze muszą zatem

pracować z jednakową szybkością. Zazwyczaj jest ona taka sama w obu kierunkach.

Szeregowa transmisja asynchroniczna

Transmisja rozpoczyna się od przesłania bitu startu (bit STB) następnie przesyłany jest

znak (oznaczony CB) – zwykle 7 lub 8 bitów danych, transmisję kończy bit stopu (STB). Po

czasie martwym procedura jest powtarzana.

Na początku transmisji przesyłany jest jednostkowy impuls (zero lub jeden), musi on

być przeciwny do sygnału zastosowanego w czasie martwym. Odbiorca takiego bitu

Page 10: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

10

startowego wie że w takim odcinku czasu będą nadawane następne bity tworzące przesyłaną

informację następuje więc krótkie zsynchronizowanie nadawcy z odbiorcy. Bity stopu

w zależności od rodzaju zastosowanego rozwiązania trwają od jednej do kilku jednostek

czasu.

Do podstawowych wad transmisji asynchronicznej należą:

- istnienie czasu martwego, które ogranicza wydajność przesyłu nawet do 60% ;

- szybkość transmisji jest ograniczona do kilkudziesięciu Kb/s.

Zaletami takiej transmisji są:

- niezależność zegarów nadawcy i odbiorcy;

- zamknięcie transmisji w ścisłych ramach czasowych.

Transmisja nazywana jest asynchroniczną, gdyż zakłada się, że dane mogą pojawiać

się w dowolnej chwili i będą natychmiast transmitowane do odbiorcy. Z tego też powodu

rozpoczęcie transmisji danych musi być zasygnalizowane w jakiś sposób. W tym celu

używamy dodatkowych dwóch bitów:

- bit startu – 0

- bit stopu - 1.

Znak A wysyłany w sposób szeregowy ,,wygląda'' następująco: 1 _ __

0 __| |_____| |

SP 1 00000 1T

Oznaczenia użyte w powyższym wykresie to:

S - bit startu,

P - bit parzystości,

T - bit stopu.

Szeregowa transmisja synchroniczna

W transmisji synchronicznej ciąg znaków zerojedynkowych o ściśle określonym

czasie trwania i ilości dokonuje zsynchronizowania nadawcy i odbiorcy. Początek nadawania

to ciąg synchronizujący (zazwyczaj jest to nie więcej niż 25 impulsów) – SYNC. Po

synchronizacji następuje przesłanie danych (DATA). Synchronizacja jest powtarzana tylko

wtedy, gdy następuje rozsynchronizowanie – co może się objawiać wzrostem błędów

w transmisji.

Zalety transmisji synchronicznej to:

- brak przerw w transmisji;

- nielimitowana szybkość transmisji.

Wadami takiej transmisji są:

- konieczność synchronizowania zegarów nadawcy i odbiorcy;

- urządzenia nadawczo-odbiorcze muszą być wyposażone w bufory.

Sposób postępowania dla mikrokontrolera

Mikrokontroler ATmega32 wyposażony jest w USART (Universal Synchronous and

Asynchronous serial Receiver Transmitter), który może pracować jako RS232. Aby

skorzystać z portu szeregowego RS232, należy wcześniej odpowiednio skonfigurować

mikrokontroler. Do tego celu służą rejestry:

• UBRRH - USART Baud Rate Register High,

• UBRRL - USART Baud Rate Register Low,

Page 11: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

11

- Bit URSEL (bit 7 w UBRRH) musi być ustawiony na 0.

- Bity 6:4 w UBRRH są zarezerwowane i należy je zerować.

- Szybkość transmisji wynosi:

- Wartość UBRR obliczamy ze wzoru:

• UCSRA - USART Control and Status Register A,

- Bit 7 – Ustawiony, gdy w buforze odbiorczym są nieprzeczytane dane. Może służyć

do wyzwolenia przerwania.

- Bit 6 – Ustawiany, gdy zakończy sie nadawanie ramki. Może służyć do wyzwolenia

przerwania. Zerowany przez wpisanie 1 lub przy wywołaniu przerwania.

- Bit 5 – Ustawiony, gdy rejestr nadawczy jest pusty. Może służyć do wyzwolenia

przerwania.

- Bit 4 – Błąd ramki.

- Bit 3 – Przepełnienie kolejki odbiorczej.

- Bit 2 – Błąd parzystości.

- Bit 1 – Podwojenie prędkości transmisji, tylko dla trybu asynchronicznego.

- Bit 0 – Włączenie trybu komunikacji wieloprocesorowej.

• UCSRB - USART Control and Status Register B,

- Bit 7 – Włączenie przerwania, gdy odebrano dane (ustawiony bit RXC).

- Bit 6 – Włączenie przerwania, gdy zakończono nadawanie (ustawiony bit TXC).

- Bit 5 – Włączenie przerwania, gdy rejestr nadawczy pusty (ustawiony bit UDRE).

- Bit 4 – Włączenie odbiornika, zmiana funkcji nogi PD0 na RxD.

- Bit 3 – Włączenie nadajnika, zmiana funkcji nogi PD1 na TxD.

- Bit 2 – Liczba przesyłanych bitów.

- Bit 1 – Dziewiąty odbierany bit.

- Bit 0 – Dziewiąty nadawany bit.

• UCSRC - USART Control and Status Register C,

- Bit 7 – musi być ustawiony na 1.

- Bit 6 – Tryb pracy:

- 0 – asynchroniczny

- 1 – synchroniczny

Page 12: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

12

- Bity 5:4 – Tryb parzystości:

- 00 – bez bitu parzystości

- 01 – wartość zarezerwowana

- 10 – bit parzystości (ang. even parity)

- 11 – bit nieparzystości (ang. odd parity)

- Bit 3 – Liczba bitów stopu:

- 0 – jeden bit

- 1 – dwa bity

- Bity 2:1 – Liczba przesyłanych bitów.

- Bit 0 – Polaryzacja sygnału zegara, dotyczy trybu synchronicznego.

Po zainicjalizowaniu mikrokontrolera można używać transmisji szeregowej

wykorzystując odpowiednie funkcje i polecenia operujące na rejestrze UDR.

• UDR - USART I/O Data Register:

- Są osobne rejestry nadawczy i odbiorczy (USART pracuje w trybie full duplex),

widziane pod tym samym adresem wejścia-wyjścia.

- Zapis dokonywany jest do rejestru nadawczego.

- Odczyt dotyczy bufora odbiorczego.

- Odbierane bity są gromadzone w rejestrze odbiorczym.

- Odebrane dane są dodatkowo buforowane w dwuelementowej kolejce FIFO.

Ćwiczenie 7 Temat: Komunikacja za pomocą portu szeregowego RS232.

Zadanie:

1) Należy uruchomić port szeregowy kontrolera.

2) Zrealizować funkcję echa dla konsoli: znaki wpisywane za pomocą klawiatury

komputerowej powinny być przesyłane za pośrednictwem portu szeregowego

mikrokontrolera i wyświetlane na ekranie komputera (okno terminala)

3) Echo buforowane: dane wpisane za pomocą klawiatury powinny być gromadzone w

buforze o wielości 128 bajtów w pamięci RAM kontrolera, zaś wysłane po wciśnięciu

klawisza ENTER lub przepełnieniu bufora.

Język: C

Zasoby: port PD0, port PD1

Page 13: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

13

Wstęp teoretyczny do ćwiczenia 8-9 Alfanumeryczny wyświetlacz LCD, na którym są wyświetlane parametry w trakcie

pracy, składa się z dwóch linii po szesnaście znaków. Układ ten posiada wbudowany

sterownik zgodny z HD44780, który umożliwia pracę wyświetlacza w jednym z dwóch

trybów – magistrala danych może być ośmiobitowa lub czterobitowa. Na zajęciach

wykorzystywać będziemy magistralę czterobitową, która pozwala na oszczędzenie 4 portów

mikrokontrolera. Wadą tej magistrali jest bardziej rozbudowana i skomplikowana obsługa

programowa. Rysunek przedstawia rozmieszczenie wyprowadzeń wyświetlacza, a tabela

zawiera opis ich funkcji.

Rys. 5. Wyprowadzenia alfanumerycznego wyświetlacza LCD

Nr Symbol Funkcja

1 GND Masa

2 Vcc Zasilanie

3 Kontrast Regulacja kontrastu

4 RS Wybór rejestru

5 R/W 1 – odczyt, 0 – zapis

6 E Sygnał zezwalający enable

7 D0 Linia danych D0

8 D1 Linia danych D1

9 D2 Linia danych D2

10 D3 Linia danych D3

11 D4 Linia danych D4

12 D5 Linia danych D5

13 D6 Linia danych D6

14 D7 Linia danych D7

15 LED_A Anoda podświetlania

16 LED_C Katoda podświetlania

Tabela 1. Funkcje wyprowadzeń wyświetlacza LCD

LCD 2x16

Page 14: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

14

W wykorzystanym wyświetlaczu jest wbudowane podświetlanie (linie 15 i 16), które

zrealizowano za pomocą diod LED. Podświetlanie wymagało dodania rezystora

ograniczającego prąd, którego nie ma w module wyświetlacza. Bez rezystora ograniczającego

wyświetlacz świeciłby bardzo jasno, wydzielając przy tym dużo ciepła. Prowadziłoby to do

nadmiernego nagrzewania się matrycy oraz skróciłoby jej żywotność, a także mogłoby

spowodować szybsze odparowanie ciekłego kryształu. Do linii CONTRAST dołączono

potencjometr tak jak na rysunku, co umożliwia regulację kontrastu. Standardowo kontrast

regulowany jest przyłożeniem napięcia z zakresu od 0 do napięcia zasilania, gdzie zero

odpowiada maksymalnemu kontrastowi, a napięcie zasilania - minimalnemu.

Wyświetlacz LCD posiada następujące rejestry:

- DataWR - rejestr danych przeznaczony do zapisu informacji;

- DataRD - rejestr danych przeznaczony do odczytu informacji;

- ControlRD - rejestr stanu wyświetlacza (Status) przeznaczony do odczytu;

- ControlWR - rejestr sterujący wyświetlacza (Control) przeznaczony do zapisu;

O wyborze, do którego rejestru nastąpi zapis lub odczyt decydują linie 4 i 5 (D/C

i R/W). Linia 6 (E-enable) uaktywnia wymianę informacji z wyświetlaczem. Wyświetlacz

zawiera dwa rodzaje wewnętrznej pamięci, które mogą być kontrolowane: pamięć DD

(Display Data) i pamięć CG (Character Generator). Dostęp do tych pamięci odbywa się przez

wymienione wyżej rejestry. Pamięć CG składa się z dwóch części: pamięci CG ROM

zawierającej przygotowane przez producenta kody znaków oraz pamięci CG RAM

przeznaczonej na kody znaków dowolnie zdefiniowane.

Aby wyświetlacz zaczął funkcjonować zawsze na początku programu po załączeniu

zasilania należy go zainicjować, czyli wysłać kilka rozkazów sterujących w ściśle

określonych odstępach czasu. Rozkazy oraz wszystkie zależności są zamieszczone w aplikacji

sterownika HD44780. Przykładowa sekwencja inicjalizacji wyświetlacza LCD znajduje się na

rysunku .

Page 15: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

15

Rys. 6. Przykładowa programowa inicjalizacja modułu LCD

Po prawidłowym zainicjowaniu startu wyświetlacza można przejść do komunikacji z

tym modułem, która odbywa się przy wykorzystaniu magistrali czterobitowej. Każde

wysyłane do LCD słowo składa się z ośmiu bitów, funkcja odpowiedzialna za wysyłanie

danych do modułu dzieli je na dwie części czterobitowe i wysyła najpierw cztery starsze bity,

a następnie cztery młodsze.

Page 16: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

16

Ćwiczenie 8 Temat: Obsługa wyświetlacza char LCD.

Zadanie:

1) Zainicjalizować wyświetlacz LCD.

2) Wyświetlić na wyświetlaczu LCD napis statyczny.

3) Zrealizować funkcję „reklamy świetlnej”: stopniowe wyświetlanie kolejnych liter

napisu, przewijanie w lewo i prawo, migotanie napisu (negatyw).

Język: C

Zasoby: port PA2 – PA7

Ćwiczenie 9 Temat: Obsługa 10-bitowego przetwornika ADC wbudowanego w mikrokontroler.

Zadanie: Pomiar temperatury przy użyciu termistora. Wyświetlenie przeliczonej wartości

temperatury na wyświetlaczu char LCD.

Język: C

Zasoby: port PA1, port PA2 – PA7

Page 17: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

17

Wstęp teoretyczny do ćwiczenia 10 Jednym z dwóch najpopularniejszych magistral do podłączania urządzeń

peryferyjnych w systemach mikroprocesorowych jest magistrala Serial Peripherial Interface

(SPI). Pozwala ona w prosty sposób komunikować się mikrokontrolerowi z takimi

peryferiami jak przetworniki ADC i DAC, czujniki temperatury, drivery diod, pamięci

EEPROM itp. Mikrokontrolery z rodziny AVR posiadają wbudowaną obsługę tej magistrali

co znacznie ułatwia programowanie układów korzystających z SPI.

Część sprzętowa magistrali SPI

Magistrala SPI korzysta z architektury master-slave. Jedno w urządzeń (MASTER)

inicjalizuje transmisję i generuje sygnał zegarowy. Drugie (SLAVE) odpowiada. Transmisja

może toczyć się w trybie full-duplex, to znaczy jednoczesne nadawanie i odbieranie. Służą do

tego dwie linie sygnałowe:

• MOSI (Master Out, Slave In)

• MISO (Master In, Slave Out)

Sygnał zegara przesyłany jest linią SCK.

Do magistrali może być podłączonych wiele urządzeń. Wykorzystują one wspólnie

linie MISO, MOSI i SCK. Koniecznym jest poprowadzenie oddzielnych linii Chip Select

(CS), służących do wyboru, które urządzenie ma być w danej chwili aktywne. Przykładowy

układ wykorzystujący magistralę SPI pokazany jest na rysunku 7.

Rys. 7. Przykładowe połączenie SPI

SPI posiada kilka trybów pracy. Przed korzystaniem z tej magistrali należy ustawić:

1. Kolejność bitów (MSB pierwszy lub LSB pierwszy),

2. Polaryzację zegara,

3. Fazę zegara,

4. Częstotliwość pracy magistrali.

Różne układy peryferyjne mogą wymagać innych ustawień. Z tego powodu może się zdarzyć,

że ustawienia magistrali trzeba zmieniać przed odwołaniem się do kolejnego urządzenia

peryferyjnego.

Programowanie interfejsu SPI

Do konfiguracji SPI w mikrokontrolerach AVR służą rejestry:

• SPCR - aby używać SPI, należy je najpierw włączyć (bit SPE). Kolejne bity tego

rejestru pozwalają ustawić, kolejność bitów, fazę i polaryzację zegara, częstotliwość

transmisji oraz czy mikrokontroler ma być masterem czy slavem.

• SPSR - w tym rejestrze znajduje się bit informujący o zakończeniu transmisji.

Znajduje się tutaj też bit odpowiedzialny za uruchomienie podwajania częstotliwości zegara

magistrali.

Rejestr, do którego zapisywane są dane do wysłania oraz rejestr w którym

przechowywane są dane odebrane noszą tą samą nazwę (SPDR). Należy jednak pamiętać, że

Page 18: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

18

są to tak naprawdę dwa oddzielne rejestry. Kiedy mikrokontroler pracuje w trybie master,

transfer inicjowany jest zapisaniem danej do rejestru SPDR. W tym samym czasie następuje

odbiór. Jeśli chcemy jedynie odebrać dane z zewnątrz, to co zostanie zapisane do rejestru

SPDR nie ma znaczenia.

Sposób programowania int main()

{

ustawienie rejestru SPCR

ustawienie rejestru SPSR

zapisanie do rejestru SPDR (wykonanie transmisji)

Sprawdzenie flagi ukończenia transmisji

Odczytanie danej z rejestru SPDR

}

Ćwiczenie 10 Temat: Cyfrowy pomiar temperatury przy użyciu termometru cyfrowego TC77.

Zadanie: Zrobić pomiar temperatury i wyświetlić tę wartość na wyświetlaczu char LCD.

Porównać wartość tej temperatury z temperaturą pomierzoną przy użyciu termistora.

Język: C

Zasoby: port PA2 – PA7, port PB4, PB6, PB7

Page 19: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

19

Wstęp teoretyczny do ćwiczenia 11 Wyświetlacze 7-segmentowe zbudowane są z diod LED. Składają się z siedmiu

segmentów + kropka (a, b, ..., g, dt), za pomocą których możemy przedstawić dowolną cyfrę

dziesiętną, a także niektóre litery.

Rys. 8. Wygląd zewnętrzny wyświetlacza 7-segmentowego

W celu zmniejszenia liczby wyprowadzeń, łączy się LED-y ( diody ) na dwa sposoby:

łącząc wszystkie katody ( wyświetlacz 7-segmentowy ze wspólną katodą ) albo wszystkie

anody ( wyświetlacz 7-segmentowy ze wspólną anodą ).

Rys. 9. Schematy podłączenia wyświetlaczy 7-segmentowych

Cyfry kodujemy tak, aby w siedmiobitowym słowie binarnym każdy bit odpowiadał

jednemu z segmentów. Tablica stanów linii portów układu wyświetlacza umożliwiająca

wyświetlanie cyfr:

Wspólna anoda Wspólna katoda

cyfra h g f e d c b a cyfra h g f e d c b a

0

1

2

3

4

5

6

7

8

9

.

0 0 1 1 1 1 1 1

0 0 0 0 0 1 1 0

0 1 0 1 1 0 1 1

0 1 0 0 1 1 1 1

0 1 1 0 0 1 1 0

0 1 1 0 1 1 0 1

0 1 1 1 1 1 0 1

0 0 0 0 0 1 1 1

0 1 1 1 1 1 1 1

0 1 1 0 1 1 1 1

1 0 0 0 0 0 0 0

0

1

2

3

4

5

6

7

8

9

.

1 1 0 0 0 0 0 0

1 1 1 1 1 0 0 1

1 0 1 0 0 1 0 0

1 0 1 1 0 0 0 0

1 0 0 1 1 0 0 1

1 0 0 1 0 0 1 0

1 0 0 0 0 0 1 0

1 1 1 1 1 0 0 0

1 0 0 0 0 0 0 0

1 0 0 1 0 0 0 0

0 1 1 1 1 1 1 1

Tabela 2. Stany linii portów układu wyświetlacza 7-segmentowego umożliwiająca

wyświetlanie cyfr.

Zaletą tych wyświetlaczy jest bardzo dobra czytelność nawet w całkowitych

ciemnościach. Wadą – duży pobór mocy (2..3 mW na segment dla najbardziej

energooszczędnych wyświetlaczy), co bardzo ogranicza ich zastosowanie w sprzęcie

zasilanym bateryjnie.

Page 20: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

20

Wyświetlacze statyczne

Statyczne sterowanie wyświetlaczem informacji jest najprostszym sposobem

wykorzystania wyświetlacza LED (lub pojedynczych diod). Jednocześnie sposób ten jest

najrzadziej stosowany ze względu na konieczność zarezerwowania tylu linii wyjściowych

portu mikrokontrolera ile będzie wykorzystywanych niezależnie elementów wyświetlacza.

Sposób ten polega na ciągłym podtrzymywaniu (do momentu zmiany informacji)

odpowiednich stanów logicznych, którym odpowiada świecenie lub wygaszenie diod LED.

Z tego powodu obsługa wyświetlacza statycznego jest niezwykle prosta a sam mikrokontroler

obciążony jest tylko w momencie zmian przekazywanej informacji.

Stosowanie wyświetlaczy ze wspólnym wyprowadzeniem anod poszczególnych

segmentów jest dużo bardziej popularne, ponieważ zazwyczaj bardziej wydajnym prądowo

poziomem logicznym linii portów wejścia-wyjścia jest poziom niski. Gwarantuje to

prawidłowe zaświecenie wyświetlacza. Warto nadmienić, że dla miniaturowych wyświetlaczy

niskoprądowych jest wymagany niski prąd o wartości 2..3mA. Można też wykorzystać

wyświetlacz ze wspólną katodą, którą wówczas łączymy z masą. Jednak stosowany

mikrokontroler musi mieć wyjścia portów w układzie przeciwsobnym, tzn. o odpowiedniej

wydajności linii w stanie wysokim. Dla obu wariantów różna będzie interpretacja logiczna

stanu wyświetlacza: dla wspólnej anody zaświecenie danego segmentu uzyskamy ustawiając

poziom niski na odpowiadającej mu linii, natomiast dla wyświetlacza ze wspólną katodą

świeceniu odpowiada poziom wysoki na wyprowadzeniu mikrokontrolera.

Włączone szeregowo rezystory R1…R8 ograniczają maksymalny prąd płynący przez

wyświetlacz. Ich wartość dobieramy w zależności od wymagań stosowanego wyświetlacza

oraz z uwzględnieniem możliwości portu mikrokontrolera (470 – 1k).

Czasami zdarza się tak, że wydajność prądowa portu wykorzystywanego

mikrokontrolera jest niewystarczająca do bezpośredniego dołączenia wyświetlacza, wówczas

jedynym wyjściem z sytuacji jest zastosowanie pośredniczącego układu wzmacniającego,

mogącego obsłużyć kilka niezależnych linii.

Obsługa pojedynczego statycznego wyświetlacza 7segmentowego pociąga za sobą

konieczność rezerwacji ośmiu linii portu mikrokontrolera. Jeżeli stosowany mikrokontroler

ma niewiele wyprowadzeń lub też jest wykorzystywany w bardzo rozbudowanym systemie,

może się okazać, że nie jest możliwe gospodarowanie takiej liczby wyprowadzeń.

Rozwiązaniem tego problemu jest układ wyświetlacza statycznego sterowanego przy użyciu

trzech linii, z możliwością regulacji jasności świecenia.

Układem pośredniczącym może być wówczas rejestr szeregowo – równoległy

74LS164, który realizuje przekształcenie wyświetlanej informacji z postaci szeregowej,

przesyłanej z mikrokontrolera linią DATA w takt zegara CLK, do postaci równoległej,

wymaganej przez wyświetlacz. Układ ten nie jest w pełni statyczny, w skutek chwilowego

wygaszania wyświetlacza za pomocą tranzystora, co umożliwia wprowadzenie dodatkowej

cechy funkcjonalnej. Jest nią możliwość sterowania w sposób programowy jasnością

świecenia wyświetlacza. Regulację jasności można uzyskać poprzez dobór czasów włączania

i wyłączania wyświetlacza. W rozwiązaniu standardowym wyłączanie wyświetlacza następuje

na niezbędny do zapisania rejestru czas, co w praktyce jest nierozróżnialne dla oka. Jeżeli

jednak z odpowiednio dużą częstotliwością: 30…40Hz generowalibyśmy na wyprowadzeniu

ON przebieg prostokątny o zmieniającym się wypełnieniu , to uzyskalibyśmy efekt ciągłego

świecenia wyświetlacza o jasności zależnej właśnie od wypełnienia przebiegu sterującego.

Wyświetlacze multipleksowane (dynamiczne)

Zasada ich działania polega na współdzieleniu wyprowadzeń mikrokontrolera przez

połączone w grupy wyświetlacze siedmiosegmentowe i dołączeniu dodatkowych układów

sterujących zasilaniem poszczególnych grup. Odpowiednio szybkie zapalenie i gaszenie

Page 21: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

21

kolejnych grup oraz bezwładność ludzkiego wzroku dają w efekcie złudzenie świecenia

całego wyświetlacza.

Rys. 10. Układ wyświetlacza multipleksowanego

Do portu mikrokontrolera zostają dołączone równolegle (za pośrednictwem

rezystorów ograniczających prąd) cztery jednakowe wyświetlacze siedmiosegmentowe ze

wspólną anodą. W przypadku sterowania statycznego (anody dołączone bezpośrednio do

plusa zasilania) działanie takiego układu byłoby co najmniej dyskusyjne – polegałoby na

wyświetlaniu tej samej informacji na wszystkich wyświetlaczach. Sytuacja taka nie będzie

jednak mieć miejsca, gdyż anody poszczególnych wyświetlaczy są dołączone do zasilania za

pośrednictwem niezależnych tranzystorów T1…T4, sterowanych czterema liniami

mikrokontrolera W1…W4. Włączenie napięcia zasilania konkretnego wyświetlacza (wraz

z wyłączeniem pozostałych) następuje wyłącznie wtedy, gdy na linie portu D0…D7 są

wystawiane dane przeznaczone dla danego wyświetlacza.

Sposób postępowania:

1. włączamy 1-szy wyświetlacz

2. wyświetlamy cyfrę tysięcy

3. wyłączamy 1-szy wyświetlacz

4. włączamy 2-gi wyświetlacz

5. wyświetlamy cyfrę setek

6. wyłączamy 2-gi wyświetlacz

7. włączamy 3-ci wyświetlacz

8. wyświetlamy cyfrę dziesiątek

9. wyłączamy 3-ci wyświetlacz

10. włączamy 4-ty wyświetlacz

11. wyświetlamy cyfrę jedności

12. wyłączamy 4-ty wyświetlacz

Gdy czas wyświetlania będzie odpowiednio krótki (rzędu kilku, kilkunastu milisekund)

będziemy mogli zobaczyć wszystkie 4 cyfry na raz, ponieważ ludzkie oko nie jest w stanie

zaobserwować tak szybkich zmian

Obsługa wszystkich pozycji następuje cyklicznie. Czas trwania pojedynczego cyklu

powinien być tak dobrany, aby częstotliwość świecenia każdego wyświetlacza nie była

mniejsza niż 30…40 Hz (aby przekroczyć możliwość rejestrowania zmian przez ludzkie oko).

Najlepszą sytuacją jest gdy częstotliwość ta wynosi 100Hz, co pozwala na wyświetlanie

informacji pozbawione efektu migotania znanego z ekranów monitorów i telewizorów. Dalsze

zwiększanie częstotliwości odświeżania nie poprawia już jakości wyświetlania, powoduje za

Page 22: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

22

to wzrost zakłóceń radioelektrycznych generowanych przez wyświetlacz oraz niepotrzebnie

marnuje moc obliczeniową mikrokontrolera.

W układzie wyświetlacza dynamicznego ważny jest dobór wartości rezystorów

ograniczających. Najłatwiej jest przyjąć wartości czterokrotnie mniejsze niż w statycznym

układzie sterowania takiego wyświetlacza. Często jednak taki wybór daje w efekcie zbyt

jasne, oślepiające wręcz świecenie wyświetlaczy. Spowodowane jest to, tym , że chociaż

teoretycznie prąd płynący przez wyświetlacz ma czterokrotnie większa wartość i płynie

czterokrotnie krócej, dając taką samą wartość średnią jak przy sterowaniu statycznym, to

jednak efektywność wyświetlaczy LED pracujących przy większych prądach jest dużo

wyższa (więcej energii jest zamienianej na światło). W praktyce okazuje się, że wartość

rezystorów należy zwiększyć o 50 – 100%, aby uzyskana jasność była porównywalna z

jasnością świecenia wyświetlacza przy sterowaniu statycznym.

Cechy multipleksowanego sterowania wyświetlaczy:

Zalety:

- niewielka liczba wykorzystywanych wyprowadzeń mikrokontrolera

- duża jasność świecenia z możliwością regulacji

- prosty układ połączeń i łatwe projektowanie płytki drukowanej

Wady:

- konieczność zarezerwowania ciągłej mocy obliczeniowej mikrokontrolera do obsługi

takiego układu i znaczna komplikacja oprogramowania

- generacja zakłóceń radioelektrycznych związana z przełączaniem pozycji

wyświetlacza, co sprawia, że konfiguracja ta jest niezbyt chętnie stosowana w

urządzeniach zawierających precyzyjne podzespoły analogowe o dużej czułości

Ćwiczenie 11 Temat: Obsługa wyświetlacza 7-segmentowego.

Zadanie:

1) Uruchomić wyświetlacz 7-segmentowy i wyświetlić stałą wartość.

2) Zmieniać wartość (np. inkrementacja) wyświetlaną na wyświetlaczu 7-segmentowym

poprzez wciśnięcie przycisku SW0.

Język: C

Zasoby: port PB0, port P… - P...

Page 23: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

23

Wstęp teoretyczny do ćwiczenia 12 Najpopularniejszymi magistralami do podłączania urządzeń peryferyjnych w

systemach mikroprocesorowych są magistrale Serial Peripherial Interface (SPI) oraz I2C.

Najczęściej spełniają one podobne funkcje i wykorzystywane są jako platforma komunikacji

mikrokontrolerów z urządzeniami peryferyjnymi. Może być również wykorzystana przy

komunikacji pomiędzy np. modułami bardziej rozbudowanego systemu. Mikrokontrolery z

rodziny AVR posiadają wbudowaną obsługę magistrali I2C. Ponieważ nazwa „I2C” jest

zastrzeżona przez firmę Philips, inni producenci często stosują inne nazwy. Firma Atmel

używa nazwy Two Wire (serial) Interface (TWI).

Część sprzętowa magistrali I2C

Magistrala I2C składa się jedynie z dwóch dwukierunkowych linii: Serial Data Line

(SDL) oraz Serial Clock Line (SCL). Linie te są wspólne dla wszystkich urządzeń

podłączonych do magistrali. W przeciwieństwie do SPI, nie jest konieczne prowadzenie

dodatkowych linii adresujących, ponieważ w I2C urządzenia są wybierane poprzez adresy

nadawane liniami danych. Do linii SDL i SCL muszą być podłączone rezystory podciągające.

Podobnie jak w przypadku SPI, tutaj również urządzenia dzielone są na master i slave.

W jednej chwili tylko jedno urządzenie może spełniać rolę mastera. Urządzenia mogą jednak

zmieniać swoją rolę. Magistrala ta nie pozwala na jednoczesne nadawanie i odbieranie.

Magistrala może pracować z różnymi prędkościami. Należy więc sprawdzić w dokumentacji

użytych podzespołów jaka jest ich maksymalna dopuszczalna prędkość zegara na magistrali.

Rys. 11. Przykładowy system oparty na magistrali I2C

Protokół I2C

Rys. 12. Przykładowa transmisja

Master generuje warunek startu. Następnie nadawany jest adres urządzenia, które ma

się komunikować z masterem. Po adresie występuje bit informujący, czy master zamierza do

slave'a zapisywać czy go odpytywać. Następnie slave generuje bit ACK, który informuje

o tym, że adres został poprawnie odebrany i slave jest gotowy do wykonania transmisji.

Następnie wysyłane są bity danych. Po każdym bajcie nadawany jest przez odbiornik bit

ACK. Transmisja kończona jest w momencie, kiedy podczas wysokiego stanu na linii zegara

wystąpi zbocze narastające na linii danych.

Page 24: LABORATORIUM Komputerowe Sterowanie w Elektronice …fiona.dmcs.pl/~pzajac/pliki/KSEP/KSEP_instrukcja.pdf · o Sztuka programowania mikrokontrolerów AVR : ... Asembler Zasoby: port

Komputerowe Sterowanie w Elektronice Przemysłowej

24

Programowanie interfejsu I2C

Do konfiguracji interfejsu I2C w mikrokontrolerach AVR służą rejestry:

1. TWBR - liczba zapisana w tym rejestrze używana jest do obliczenia prędkości

transmisji.

2. TWCR - w tym rejestrze znajdują się bity odpowiedzialne za:

• Uaktywnienie interfejsu TWI (TWEN)

• Generację bitu ACK (TWEA)

• Generację sekwencji startu (TWSTA)

• Generację sekwencji stopu (TWSTO)

• Informowanie o zakończeniu transmisji i wywołujące przerwanie

(TWINT)

• Informujące o kolizji na magistrali (TWWC)

• Uaktywniające przerwanie (TWIE)

3. TWSR - w tym rejestrze znajdują sęi bity informujące o statusie interfejsu TWI oraz

ustawiające preskaler częstotliwości.

4. TWAR - w tym rejestrze przechowywany jest adres slave mikrokontrolera.

Dane znajdują się w rejestrze TWDR.

Porównanie interfejsów SPI i I2C

Poniżej przedstawione są ważniejsze zalety obu interfejsów.

Magistrala SPI

• Transmisja w trybie Full-Duplex

• Większa przepustowość niż w I2C

• Duża możliwość dopasowania protokołu do własnych potrzeb

• Możliwość przesyłania danych o dowolnej długości (nie tylko 8-bit)

• Mały pobór mocy

• Przy rozbudowanym systemie zabiera dużo pinów na sygnały Chip select

• Brak potwierdzeń i kontroli poprawności transmisji

• Tylko jeden master w systemie

Magistrala I2C

• Używa tylko dwóch linii

• Każe urządzenie może być masterem

• Sprzętowe sprawdzanie poprawności transmisji

Ćwiczenie 12 Temat: Obsługa RTC (zegar czasu rzeczywistego)

Zadanie:

1) Wysyłać datę / czas na wyświetlacz 7-segmentowy.

2) Rozszerzyć ppkt 1 o funkcję ustawiania czasu.

Język: C

Zasoby: port PC0, port PC1