Badanie modułów wewnętrznych mikrokontrolera 311[07].Z4.02

Podobne dokumenty
MIKROPROCESORY architektura i programowanie

MIKROPROCESORY architektura i programowanie

Hardware mikrokontrolera X51

Architektura mikrokontrolera MCS51

LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH

Architektura mikrokontrolera MCS51

ĆWICZENIE. TEMAT: OBSŁUGA PRZETWORNIKA A/C W ukontrolerze 80C535 KEILuVISON

Ćwiczenie 9 Częstościomierz oparty na µc 8051(8052)

Instytut Teleinformatyki

TECHNIKA MIKROPROCESOROWA

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Start Bity Bit Stop 1 Bit Par Rys. 1

ad a) Konfiguracja licznika T1 Niech nasz program składa się z dwóch fragmentów kodu: inicjacja licznika T1 pętla główna

Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

Technika mikroprocesorowa I Wykład 4

Układy czasowo-licznikowe w systemach mikroprocesorowych

Instytut Teleinformatyki

Ćwiczenie 2 Transmisja a szeregowa µc 8051(8052) - PC

Zerowanie mikroprocesora

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.

Instytut Teleinformatyki

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Przykładowe pytania DSP 1

Wstęp Architektura... 13

4 Transmisja szeregowa, obsługa wyświetlacza LCD.

dokument DOK wersja 1.0

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Metody obsługi zdarzeń

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Programowanie mikrokontrolerów. 8 listopada 2007

Systemy wbudowane. Wprowadzenie. Wprowadzenie. Mikrokontroler 8051 Budowa

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8

Pracownia elektryczno-elektroniczna klasa IV

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

MIKROKONTROLERY I MIKROPROCESORY

Ćwiczenie 6 Komunikacja z komputerem (łącze RS232)

architektura komputerów w 1 1

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

Przetwarzanie AC i CA

interfejs szeregowy wyświetlaczy do systemów PLC

PC 3 PC^ TIMER IN RESET PC5 TIMER OUT. c 3. L 5 c.* Cl* 10/H CE RO WR ALE ADO AD1 AD2 AD3 AD4 A05 A06 LTJ CO H 17 AD7 U C-"

dwójkę liczącą Licznikiem Podział liczników:

1. Poznanie właściwości i zasady działania rejestrów przesuwnych. 2. Poznanie właściwości i zasady działania liczników pierścieniowych.

Przerwania, polling, timery - wykład 9

Opis czytnika TRD-FLAT CLASSIC ver Naścienny czytnik transponderów UNIQUE w płaskiej obudowie

Odbiór i dekodowanie znaków ASCII za pomocą makiety cyfrowej. Znaki wysyłane przez komputer za pośrednictwem łącza RS-232.

Uproszczony schemat blokowy zespołu 8-bitowego timera przedstawiono na rys.1

WFiIS CEL ĆWICZENIA WSTĘP TEORETYCZNY

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Informacje ogólne o układzie 8051.

LICZNIKI PODZIAŁ I PARAMETRY

Opis czytnika TRD-80 CLASSIC ver Moduł czytnika transponderów UNIQUE z wbudowaną anteną

Przetwarzanie A/C i C/A

Praktyka Techniki Mikroprocesorowej. Mikrokontroler ADuC834

Państwowa Wyższa Szkoła Zawodowa

Programowanie w językach asemblera i C

U 2 B 1 C 1 =10nF. C 2 =10nF

Instrukcja do ćwiczenia : Matryca komutacyjna

Interfejsy komunikacyjne pomiary sygnałów losowych i pseudolosowych. Instrukcja do ćwiczenia laboratoryjnego

Opis mikrokontrolera AT89C2051

Ćw. 7: Układy sekwencyjne

Zapoznanie się z podstawowymi strukturami liczników asynchronicznych szeregowych modulo N, zliczających w przód i w tył oraz zasadą ich działania.

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

Organizacja typowego mikroprocesora

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Układy czasowo-licznikowe w systemach mikroprocesorowych

Część I - Sterownik przerwań 8259A i zegar/licznik 8253

f we DZIELNIKI I PODZIELNIKI CZĘSTOTLIWOŚCI Dzielnik częstotliwości: układ dający impuls na wyjściu co P impulsów na wejściu

LABORATORIUM nr 2. Temat: Obsługa wyświetlacza siedmiosegmentowego LED

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

Przerwania w architekturze mikrokontrolera X51

Mikrokontroler Intel dr inż. Wiesław Madej

Zagadnienia zaliczeniowe z przedmiotu Układy i systemy mikroprocesorowe elektronika i telekomunikacja, stacjonarne zawodowe

PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA

Obszar rejestrów specjalnych. Laboratorium Podstaw Techniki Mikroprocesorowej Instytut Mikroelektroniki i Optoelektroniki PW

Ćwiczenie 7 Matryca RGB

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

Laboratorium Komputerowe Systemy Pomiarowe

Komunikacja w mikrokontrolerach Laboratorium

Układy sekwencyjne. 1. Czas trwania: 6h

2. Architektura mikrokontrolerów PIC16F8x... 13

Architektura komputerów

Opis czytnika TRD-55 CLASSIC ver Moduł czytnika transponderów UNIQUE z zewnętrzną anteną

1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro

Kod produktu: MP01105

Research & Development Ultrasonic Technology / Fingerprint recognition

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

Wstęp działanie i budowa nadajnika

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

LICZNIKI Liczniki scalone serii 749x

BEZDOTYKOWY CZUJNIK ULTRADŹWIĘKOWY POŁOŻENIA LINIOWEGO

Programowany układ czasowy

(57) Tester dynamiczny współpracujący z jednej strony (13) B1 (12) OPIS PATENTOWY (19) PL (11) PL B1. (54) Tester dynamiczny

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Opis układów wykorzystanych w aplikacji

Ćwiczenie 23. Cyfrowe pomiary czasu i częstotliwości.

Transkrypt:

MINISTERSTWO EDUKACJI NARODOWEJ Danuta Pawełczyk Badanie modułów wewnętrznych mikrokontrolera 311[07].Z4.02 Poradnik dla ucznia Wydawca Instytut Technologii Eksploatacji Państwowy Instytut Badawczy Radom 2006

Recenzenci: mgr inż. Elżbieta Małgorzata Majka mgr inż. Anna Kembłowska Opracowanie redakcyjne: mgr inż.danuta Pawełczyk Konsultacja: mgr inż. Gabriela Poloczek Korekta: Poradnik stanowi obudowę dydaktyczną programu jednostki modułowej 311[07].Z4.02 Badanie modułów wewnętrznych mikrokontrolera zawartego w modułowym programie nauczania dla zawodu technik elektronik. Wydawca Instytut Technologii Eksploatacji Państwowy Instytut Badawczy, Radom 2006 1

SPIS TREŚCI 1. Wprowadzenie 3 2. Wymagania wstępne 6 3. Cele kształcenia 7 4. Materiał nauczania 8 4.1. Układy czasowe T0, T1 i T2 8 4.1.1. Materiał nauczania 8 4.1.2. Pytania sprawdzające 15 4.1.3. Ćwiczenia 15 4.1.4. Sprawdzian postępów 18 4.2. Port szeregowy 19 4.2.1. Materiał nauczania 19 4.2.2. Pytania sprawdzające 22 4.2.3. Ćwiczenia 22 4.2.4. Sprawdzian postępów 24 4.3. Przetwornik analogowo cyfrowy 25 4.3.1. Materiał nauczania 25 4.3.2. Pytania sprawdzające 28 4.3.3. Ćwiczenia 28 4.3.4. Sprawdzian postępów 30 4.4. Układ przerwań 31 4.4.1. Materiał nauczania 31 4.4.2. Pytania sprawdzające 35 4.4.3. Ćwiczenia 36 4.4.4. Sprawdzian postępów 37 5. Sprawdzian osiągnięć 38 6. Literatura 44 2

1. WPROWADZENIE Poradnik będzie Ci pomocny w przyswajaniu wiedzy z zakresu badania modułów wewnętrznych mikrokontrolera. W poradniku zamieszczono: - wymagania wstępne wykaz umiejętności, jakie powinieneś mieć już ukształtowane, abyś bez problemów mógł korzystać z poradnika, - cele kształcenia wykaz umiejętności, jakie opanujesz podczas pracy z poradnikiem, - materiał nauczania podstawowe wiadomości teoretyczne niezbędne do opanowania treści jednostki modułowej, - zestaw pytań przydatny do sprawdzenia, czy już opanowałeś podane treści, - ćwiczenia, które pomogą Ci zweryfikować wiadomości teoretyczne oraz ukształtować umiejętności praktyczne, - sprawdzian postępów, - literaturę uzupełniającą, - sprawdzian osiągnięć przykładowy zestaw zadań i pytań. Pozytywny wynik sprawdzianu potwierdzi, że dobrze pracowałeś podczas zajęć i że nabyłeś wiedzę i umiejętności z zakresu tej jednostki modułowej, W materiale nauczania zostały omówione zagadnienia zakresu badania modułów wewnętrznych mikrokontrolera, ich budowy oraz sposobu programowania. Podczas poznawania modułów mikrokontrolera niewątpliwie pomocny będzie nauczyciel, który pomoże Ci w przypadku pojawienia się problemów. Z rozdziałem Pytania sprawdzające możesz zapoznać się: - przed przystąpieniem do rozdziału Materiał nauczania poznając wymagania wynikające z zawodu, a po przyswojeniu wskazanych treści, odpowiadając na te pytania sprawdzisz stan swojej gotowości do wykonywania ćwiczeń, - po opanowaniu rozdziału Materiał nauczania, by sprawdzić stan swojej wiedzy, która będzie Ci potrzebna do wykonywania ćwiczeń. Kolejny etap to wykonywanie ćwiczeń, których celem jest uzupełnienie i utrwalenie wiadomości z zakresu badania modułów mikrokontrolera. Wykonując ćwiczenia przedstawione w poradniku lub zaproponowane przez nauczyciela, będziesz poznawał budowę, sposób programowania i użytkowania modułów mikrokontrolera, takich jak układy czasowe, port szeregowy, przetwornik A/C i układ przerwań. Po wykonaniu zaplanowanych ćwiczeń, sprawdź poziom swoich postępów wykonując Sprawdzian postępów. W tym celu: - przeczytaj pytania i odpowiedz na nie, - podaj odpowiedź wstawiając X w podane miejsce, wpisz Tak, jeśli Twoja odpowiedź na pytanie jest prawidłowa, wpisz Nie, jeśli Twoja odpowiedź na pytanie jest niepoprawna. Odpowiedzi Nie wskazują luki w Twojej wiedzy, informują Cię również, jakich zagadnień jeszcze dobrze nie poznałeś. Oznacza to także powrót do treści, które nie są dostatecznie opanowane. Poznanie przez Ciebie wszystkich lub określonej części wiadomości będzie stanowiło dla nauczyciela podstawę przeprowadzenia sprawdzianu poziomu przyswojonych wiadomości i ukształtowanych umiejętności. W tym celu nauczyciel może posłużyć się zadaniami testowych. W poradniku jest zamieszczony sprawdzian osiągnięć, który zawiera przykład takiego testu oraz instrukcję, w której omówiono tok postępowania podczas przeprowadzania 3

sprawdzianu i przykładową kartę odpowiedzi, w której, w przeznaczonych miejscach wpisz odpowiedzi na zadania lub zakreśl właściwe odpowiedzi spośród zaproponowanych. Bezpieczeństwo i higiena pracy W czasie pobytu w pracowni musisz przestrzegać regulaminów, przepisów bezpieczeństwa i higieny pracy oraz instrukcji przeciwpożarowych, wynikających z rodzaju wykonywanych prac. Przepisy te poznasz podczas trwania nauki. 4

311[07].Z4 Badanie układów mikroprocesorowych 311[07].Z4.01 Pisanie i uruchamianie programów w asemblerze 311[07].Z4.02 Badanie modułów wewnętrznych mikrokontrolera 311[07].Z4.03 Badanie układów zewnętrznych mikrokontrolera Schemat układu jednostek modułowych 5

2. WYMAGANIA WSTĘPNE Przystępując do realizacji programu jednostki modułowej, powinieneś umieć: omawiać architekturę systemu mikroprocesorowego, stosować rozkazy mikrokontrolera, pisać, kompilować i poprawiać programy w języku asemblera, używać zestawu uruchomieniowego do uruchamiania programu, korzystać z różnych źródeł informacji. 6

3. CELE KSZTAŁCENIA Po zrealizowaniu programu jednostki modułowej powinieneś umieć: scharakteryzować wewnętrzne układy funkcjonalne mikrokontrolera, takie jak: liczniki, UART, system przerwań, przetwornik analogowo cyfrowy, zaprogramować licznik w poszczególnych trybach pracy, zmierzyć czas i częstotliwość z wykorzystaniem liczników, wykorzystać licznik do generowania wielofazowych periodycznych sygnałów prostokątnych o zadanych współczynnikach wypełnienia, napisać program z wykorzystaniem przerwań od wybranych źródeł z wykorzystaniem poziomów, priorytetów, możliwości blokowania, napisać program pozwalający na pracę portu szeregowego w określonym trybie z określoną szybkością, zaprogramować przetworniki A/C, zaprogramować inne elementy wewnętrzne wybranego mikrokontrolera. 7

4. MATERIAŁ NAUCZANIA 4.1. Układy czasowe T0, T1 i T2 4.1.1. Materiał nauczania Jednym z podstawowych rodzajów układów peryferyjnych umieszczanych wewnątrz mikrokontrolera są układy czasowo licznikowe. Układy takie zliczają impulsy zewnętrzne, spełniając funkcję licznika (counter) lub impulsy wewnętrzne w celu odmierzania opóźnień lub generowania przebiegów o zadanej częstotliwości i wypełnieniu, spełniają wówczas role czasomierza (timer). Mikrokontrolery rodziny 51 są wyposażone w dwa 16 bitowe układy czasowe. Mogą one zliczać impulsy zegarowe lub zewnętrzne doprowadzane do wejść T0 P3.4 lub T1 P3.5. Liczniki mogą pracować w jednym z czterech trybów. W celu programowego sterowania układów czasowych stosowane są rejestry TMOD (adres 89H) i TCON (adres 88H dostępny bitowo). TMOD: GATE C/ T M1 M0 GATE C/ T M1 M0 T1 T0 znaczenie bitów: M1,M0 ustawienie trybu pracy: 00- tryb 0, 01- tryb 1, 10 tryb 2, 11 tryb 3. C/ T realizowana funkcja: C/ T =1 funkcja licznika impulsów zewnętrznych, C/ T =0 funkcja czasomierza. GATE uaktywnienie bramkowania zliczania zewnętrznym sygnałem INT0 lub INT1 np. zaprogramowanie T0 zliczającego impulsy wewnętrzne w trybie pracy 2, a licznika T1 zliczającego impulsy zewnętrzne w trybie 1, wymaga wpisania do rejestru TMOD następującego słowa: 0 0 1 0 0 1 0 1 TCON: TF1 TR1 TF0 TR0 bity związane z przerwaniami zewnętrznymi znaczenie bitów: TF1 bit przepełnienia od licznika T1, wywołuje przerwanie, TR1 bit włączający (1) lub wyłączający (0) licznik T1, TF0 bit przepełnienia od licznika T0, wywołuje przerwanie, TR0 bit włączający (1) lub wyłączający (0) licznik T0. 8

Tryby pracy układów czasowo licznikowych: Tryb 0 układ czasowy pracuje jako 13 bitowy licznik/ czasomierz liczący w przód, po przepełnieniu (same jedynki) ustawia znacznik TFi i liczy dalej od 0, pojemność licznika 2 13 =8192. Rys. 1 Układ czasowy T0 w trybie 0: [5,s.37] Tryb 1 układ czasowy pracuje tak jak w trybie 0, ale jako licznik/ czasomierz 16 bitowy, pojemność licznika 2 16 =65536. Rys. 2 Układ czasowy T0 w trybie 1: [5,s.37] Tryb 2 praca z autodoładowaniem liczy tylko część TLi (8 bitowy), część THi przechowuje wartość początkową, która jest przepisywana do części TLi po każdorazowym przepełnieniu licznika, jednocześnie ustawiany jest znacznik TFi, pojemność licznika 2 8 =256. Rys. 3 Układ czasowy T0 w trybie 2: [5,s.38] 9

Tryb 3 jest różny dla liczników T0 i T1. Licznik T0 pracuje jako dwa niezależne liczniki 8 bitowe TH0 i TL0 (tak jak w trybie 0 i 1), Część TL0 jest sterowana bitami sterującymi związanymi z licznikiem T1, a część TH0 z licznikiem T0; tryb ten jest używany wówczas, gdy licznik T1 jest wykorzystany do taktowania transmisji szeregowej, a potrzebne są dwa niezależne liczniki. Rys. 4 Układ czasowy T0 w trybie 3 [5,s.38] Jeżeli realizowana jest funkcja czasomierza ( C/ T=0), to zawartość licznika jest zwiększana w każdym cyklu maszynowym. Cykl maszynowy jest wykonywany w ciągu 12 taktów zegarowych. Jeżeli realizowana jest funkcja licznika ( C/ T=1) odpowiednie wejście T0 lub T1 jest próbkowane w każdym cyklu maszynowym. Jeżeli w dwóch kolejnych próbkach zostanie wykryta zmiana 1 na 0 na wejściu (opadające zbocze impulsu) to w następnym cyklu maszynowym nastąpi zwiększenie zawartości licznika o 1. Do wykrycia zmiany na wejściu potrzeba 2 cykli maszynowych, czyli maksymalna częstotliwość zliczanych impulsów wynosi f XTAL /24. W niektórych sytuacjach przydatne jest zastosowanie mikrokontrolera wyposażonego w dodatkowy układ czasowy T2. Taka konieczność pojawia się na przykład wtedy, kiedy licznik T1 taktuje transmisję szeregową, a potrzebne są 2 dodatkowe liczniki. Zamiast korzystać z trybu 3 pracy licznika T0 można wykorzystać dodatkowy licznik T2. Licznik T2 posiada dodatkowo kilka bardzo użytecznych funkcji, które zostaną opisane poniżej. Układ czasowo licznikowy T2 jest dodatkowym zasobem wielu mikrokontrolerów rodziny 51, na przykład mikrokontrolera SAB 80C535. Oprócz układu czasowego T2 mikrokontroler ten, w stosunku do podstawowej rodziny 51, posiada dodatkowe porty równoległe oraz wbudowany przetwornik A/C. W związku z dodatkowymi zasobami rozbudowany został również układ przerwań. Będzie o tym mowa w dalszej części poradnika. 10

Mikrokontroler SAB 80C535 jest rozbudowaną wersją mikrokontrolera 80C51: watchdog RAM 256x8 P0 we/wy 8-bitowy przetwor nik A/C T2 T0 T1 CPU 8051 U A R T P1 P2 we/wy we/wy P6 P5 P4 ROM 8kx8 P3 we/wy we ac we/ wy we/ wy Rys.5. Dodatkowe zasoby mikrokontrolera SAB 80C535 Rys. 6. Układ czasowy T2 [1, s.108] Licznik może pracować w trzech trybach, określanych skrótem CCR: C Compare (porównanie), C Capture (zapamiętanie wartości chwilowej), R Reload (autodoładowanie wartości początkowej). 11

Z obsługą licznika T2 są związane linie portu P1: P1.0 P1.3 wyjścia impulsów o modulowanej szerokości impulsu (MSI)/ wejścia przerwań INT3#...INT6, P1.5/T2EX sprzętowe ustalenie momentu wpisania wartości początkowej do licznika T2, P1.7/T2 wejście impulsów zewnętrznych/ wejście bramkujące zliczanie impulsów wewnętrznych. Z licznikiem T2 związane są rejestry komparatorów CRC, CC1, CC2, CC3, w których przechowywane są wartości chwilowe. W trybie autodoładowania rejestr CRC przechowuje wartość początkową. Przerwania od licznika T2 są generowane w momencie: przepełnienia licznika, zrównania wartości chwilowej licznika z wartością wpisaną do rejestru komparatora. Tryby pracy licznika: Tryb porównania (compare) W czterech niezależnych komparatorach porównywana jest wartość licznika T2 z wartościami rejestrów CRC, CC1, CC2, CC3. Wynik porównania przedstawiony jest w postaci stanów linii portu P1 oraz ustawienia znaczników przerwań IEX3 IEX6. Linie portu P1 przyjmują wartość logiczną 1 w momencie wystąpienia równości zawartości licznika T2 z rejestrami komparatora. Tabela 1 Związek linii portu P1 z rejestrami komparatora i przerwaniami linia portu rejestr komparatora przerwanie P1.0 CRC IEX3 P1.1 CC1 IEX4 P1.2 CC2 IEX5 P1.3 CC3 IEX6 Zerowanie bitu portu P1.x następuje po przepełnieniu licznika T2. Jeżeli równocześnie licznik T2 pracuje w trybie autodoładowania rejestr CRC przechowuje wartość początkową, jako rejestry komparatora mogą być wykorzystywane rejestry CC1, CC2, CC3. stan licznika wart. rej. CRC, CCx stan P1.x przerwanie od komparatora przerwanie od przepełnienia Rys. 7 Zależności czasowe na wyjściach portu P1: [1, s.109] 12

Ze względu na sposób sterowania liniami portu P1 wyróżnia się następujące tryby porównania: Tryb 0 porównania Tryb sprzętowy wartość wpisana do rejestru CRC w trybie autodoładowania decyduje o częstotliwości generowanych impulsów, a wpisana do rejestrów CC1, CC2, CC3 o wypełnieniu. Zaprogramowany i uruchomiony licznik T2 pracuje autonomicznie, tzn. generuje impulsy na wyjściach portu P1 niezależnie od jednostki arytmetyczno logicznej. Zatrzymanie licznika jest możliwe tylko sprzętowo poprzez reset mikrokontrolera lub odłączenie zasilania. Tryb 1 porównania Tryb programowy zmiana linii P1.0 P1.3 jest dokonywana programowo przez wpis danej do bufora portu. Tryb zapamiętywania wartości chwilowej (capture) Do zapamiętania wartości chwilowej licznika T2 może być użyty każdy z rejestrów CRC, CC1, CC2, CC3. Operacja ta jest realizowana sprzętowo, dzięki czemu w trakcie jej wykonywania nie następuje zatrzymanie licznika. Licznik T2 może pracować w 2 trybach zapamiętywania: Tryb 0 zapamiętywania: Moment zapamiętania wartości chwilowej jest wyznaczany sygnałem zewnętrznym. Wpisanie wartości chwilowej licznika T2 do odpowiedniego rejestru CRC, CC1, CC2, CC3 oraz wpisanie jedynki na pozycję odpowiedniego znacznika przerwania IEX3 IEX6 spowodowane jest aktywnym zboczem sygnałów INT3#...INT6. Tryb 1 zapamiętywania: Zapamiętanie wartości chwilowej w rejestrach CRC, CC1, CC2, CC3 spowodowane jest wpisaniem dowolnej wartości do mniej znaczących rejestrów CRCL, CCL1, CCL2, CCL3. W tym trybie zapamiętywania przerwania nie są wykorzystywane. Tryb autodoładowania (reload) Autodoładowanie licznika T2 oznacza przepisanie wartości początkowej, zawartej w 16 bitowym rejestrze CRC do rejestru licznika T2. Tryb 0 autodoładowania: W trybie 0 przepisanie wartości z rejestru CRC do licznika T2 odbywa się wskutek przepełnienia licznika T2. Przepełnienie licznika powoduje ustawienie flagi przerwania TF2. Tryb 1 autodoładowania: W trybie 0 przepisanie wartości z rejestru CRC do licznika T2 odbywa się wskutek wystąpienia opadającego zbocza sygnału T2EX na wejściu P1.5. Jeśli znacznik EXEN2 w rejestrze IEN1 ma wartość 1 to jednocześnie zostanie wygenerowane przerwanie. Sterowanie pracą licznika T2 Sygnał taktujący licznik może pochodzić ze źródła wewnętrznego lub zewnętrznego. Niezależnie od wybranego trybu pracy i źródła taktowania po każdym przepełnieniu licznika generowane jest przerwanie wewnętrzne. Jest to sygnalizowane wpisem jedynki logicznej na pozycji znacznika przerwania TF2 (wektor przerwania 02Bh) w rejestrze IRCON. 13

Znacznik ten musi być kasowany programowo ponieważ to samo przerwanie może być również wywołane zewnętrznym sygnałem doprowadzonym do wejścia P1.5/T2EX ustawiany jest wówczas znacznik EXF2. Programowanie pracy licznika T2 dokonywane jest przez wpis odpowiedniej wartości do rejestru T2CON: T2PS I3FR I2FR T2R1 T2R0 T2CM T2I1 T2I0 T2PS I3FR I2FR T2R1, T2R0 T2CM T2I1, T2I0 włączenie dodatkowego dzielnika wstępnego dla wewnętrznego źródła taktowania, T2PS=0 taktowanie licznika sygnałem f XTAL /12, T2PS=1 taktowanie licznika sygnałem f XTAL /24, wybór aktywnego zbocza sygnału przerwania zewnętrznego INT3#, wyjścia komparatora CRC, wpisu wartości początkowej, I3FR=0 zbocze opadające, I3FR=1 zbocze narastające, w T2 nie używany, wybór trybu autodoładowania licznika, 0x zablokowane funkcje autodoładowania, 10 tryb 0 autodoładowania, 11 tryb 1 autodoładowania, wybór trybu porównywania, T2CM=0 tryb 0, T2CM=1 tryb 1, wybór źródła sygnału taktującego, 00 zatrzymanie zliczania, 01 taktowanie sygnałem wewnętrznym, 10 taktowanie sygnałem zewnętrznym, 11 bramkowanie wewnętrznego sygnału taktującego (blokowanie licznika niskim poziomem sygnału doprowadzonego do P1.7). Programowanie trybów pracy rejestrów CRC, CC1, CC2, CC3 jest dokonywane w rejestrze CCEN: COCAH3 COCAL3 COCAH2 COCAL2 COCAH1 COCAL1 COCAH0 COCAL0 Tabela 2 Sterowanie komparatorami Rejestr Znacznik Przeznaczenie COCAH0 COCAL0 0 0 zablokowany tryb porównywania/ wpisu wartości początkowej CRC 0 1 tryb 0 zapamiętywania 1 0 odblokowany tryb porównywania/ wpisu wartości początkowej 1 1 tryb 1 zapamiętywania COCAH1 COCAL1 0 0 zablokowany tryb porównywania/ wpisu wartości początkowej CC1 0 1 tryb 0 zapamiętywania 1 0 odblokowany tryb porównywania/ wpisu wartości początkowej 1 1 tryb 1 zapamiętywania 14

COCAH2 COCAL2 0 0 zablokowany tryb porównywania/ wpisu wartości początkowej CC2 0 1 tryb 0 zapamiętywania 1 0 odblokowany tryb porównywania/ wpisu wartości początkowej 1 1 tryb 1 zapamiętywania COCAH3 COCAL3 0 0 zablokowany tryb porównywania/ wpisu wartości początkowej CC3 0 1 tryb 0 zapamiętywania 1 0 odblokowany tryb porównywania/ wpisu wartości początkowej 1 1 tryb 1 zapamiętywania 4.1.2. Pytania sprawdzające Odpowiadając na pytania, sprawdzisz, czy jesteś przygotowany do wykonania ćwiczeń. 1. Jakie może być źródło impulsów zliczanych przez układy czasowe T0 i T1? 2. Jakie rejestry są związane z licznikami T0 i T1? 3. W jakich trybach mogą pracować układy czasowe T0 i T1? 4. Jak uruchomić i jak zatrzymać liczniki T0 i T1? 5. W jaki sposób zaprogramować układy czasowe T0 i T1 na pracę w wybranym trybie i wybrane źródło impulsów zliczanych? 6. Jak obliczyć wartość początkową wpisywaną do układu czasowego w celu odmierzenia określonych odcinków czasu? 7. Jaka jest największa częstotliwość zewnętrznego sygnału zliczanego w układzie czasowym i od czego zależy? 8. Jakie rejestry są związane z licznikiem T2? 9. Jakie może być źródło impulsów zliczanych przez układ czasowy T2? 10. W jakich trybach może pracować układ czasowy T2? 11. W jaki sposób można wygenerować przebieg o zadanym czasie trwania i wypełnieniu używając licznika T2? 4.1.3. Ćwiczenia Ćwiczenie 1 Napisz i uruchom program zapalenia diody dołączonej do P1.0 na czas 3 sekund. Sposób wykonania ćwiczenia Aby wykonać ćwiczenie powinieneś: 1) wybrać tryb pracy i źródło zliczanych impulsów, 2) zestawić słowo sterujące, 3) dokonać obliczeń ilości zliczanych cykli i na tej podstawie obliczyć liczbę przepełnień licznika i wartość początkową wpisywaną do licznika, 4) przygotować algorytm programu w postaci schematu blokowego, 5) napisać program w języku asemblera, 6) skompilować program, poprawić ewentualne błędy, 15

7) uruchomić program używając zestawu uruchomieniowego, 8) sprawdzić poprawność działania programu, 9) zaprezentować wykonane ćwiczenie, 10) dokonać oceny poprawności wykonanego ćwiczenia. Wyposażenie stanowiska pracy: komputer PC, oprogramowanie umożliwiające kompilowanie i debbugowanie programu, zestaw uruchomieniowy z oprogramowaniem, literatura z rozdziału 6. Ćwiczenie 2 Napisz i uruchom program pomiaru czasu trwania podprogramu. Wynik pomiaru zapisz do pamięci IRAM do komórek 30H i 31H. Sposób wykonania ćwiczenia Aby wykonać ćwiczenie powinieneś: 1) wybrać tryb pracy i źródło zliczanych impulsów, 2) zestawić słowo sterujące, 3) przygotować algorytm programu głównego w postaci schematu blokowego, 4) przygotować algorytm podprogramu, którego czas trwania ma być mierzony np. podprogram mnożenia liczb znajdujących się w rejestrach, 5) napisać program w języku asemblera, 6) skompilować program, poprawić ewentualne błędy, 7) uruchomić program używając zestawu uruchomieniowego, 8) sprawdzić poprawność działania programu, 9) zaprezentować wykonane ćwiczenie, 10) dokonać oceny poprawności wykonanego ćwiczenia. Wyposażenie stanowiska pracy: komputer PC, oprogramowanie umożliwiające kompilowanie i debbugowanie programu, zestaw uruchomieniowy z oprogramowaniem, literatura z rozdziału 6. Ćwiczenie 3 Napisz i uruchom program pomiaru częstotliwości generatora dołączonego do wejścia T1(P3.5). Wynik pomiaru wyślij na diody dołączone do portu równoległego (tylko starszy bajt wyniku). Licznik T1 zlicza impulsy doprowadzone z generatora, licznik T0 odmierza czas 1 sekundy. Po upływie 1 sekundy zatrzymaj licznik T1 stan licznika będzie równy częstotliwości sygnału z generatora (w Hz). Sposób wykonania ćwiczenia: Aby wykonać ćwiczenie powinieneś: 1) wybrać tryby pracy i źródła zliczanych impulsów dla obu liczników, 2) zestawić słowo sterujące, 3) przygotować algorytm programu w postaci schematu blokowego, 4) napisać program w języku asemblera, 16

5) skompilować program, poprawić ewentualne błędy, 6) uruchomić program używając zestawu uruchomieniowego, 7) sprawdzić poprawność działania programu, 8) zaprezentować wykonane ćwiczenie, 9) dokonać oceny poprawności wykonanego ćwiczenia, Wyposażenie stanowiska pracy: komputer PC, oprogramowanie umożliwiające kompilowanie i debbugowanie programu, zestaw uruchomieniowy z oprogramowaniem, generator sygnału prostokątnego, literatura z rozdziału 6. Ćwiczenie 4 Na wyjściu P1.1 wygeneruj przebieg prostokątny o częstotliwości 2 khz i wypełnieniu 60%. Do wygenerowania przebiegu użyj licznika T2 pracującego w trybie autodoładowania i porównywania wartości chwilowej. Wygenerowany przebieg zaobserwuj używając oscyloskopu. Sposób wykonania ćwiczenia: Aby wykonać ćwiczenie powinieneś: 1) wybrać tryby pracy i źródło zliczanych impulsów, 2) zestawić słowa sterujące, 3) dokonać obliczeń dotyczących wartości początkowej autodoładowywanej po przepełnieniu licznika i wartości porównywanej w komparatorze, 4) napisać program w języku asemblera, 5) skompilować program, poprawić ewentualne błędy, 6) uruchomić program używając zestawu uruchomieniowego, 7) sprawdzić poprawność działania programu, 8) zaprezentować wykonane ćwiczenie, 9) dokonać oceny poprawności wykonanego ćwiczenia. Wyposażenie stanowiska pracy: komputer PC, oprogramowanie umożliwiające kompilowanie i debbugowanie programu, zestaw uruchomieniowy z oprogramowaniem, oscyloskop, literatura z rozdziału 6. 17

4.1.4. Sprawdzian postępów Czy potrafisz: Tak Nie 1) omówić tryby pracy układów czasowo licznikowych T0 i T1? 2) zaprogramować licznik na różne tryby pracy i źródła zliczanych impulsów? 3) odmierzyć zadane odcinki czasu używając liczników? 4) wygenerować przebiegi o zadanym czasie trwania i wypełnieniu? 5) zmierzyć częstotliwość zewnętrznego sygnału doprowadzonego do licznika? 6) omówić pracę licznika T2 w różnych trybach pracy? 7) wygenerować przebieg o zadanej częstotliwości i wypełnieniu używając T2? 8) uruchomić napisane programy używając zestawu uruchomieniowego? 18

4.2. Port szeregowy 4.2.1. Materiał nauczania Wbudowany port szeregowy pozwala na wczytywanie danych szeregowych przez wejście RxD (P3.0) i wysyłanie danych szeregowych przez wyjście TxD (P3.1). Port może pracować w jednym z czterech trybów: Tabela 3 Tryby pracy portu szeregowego Tryb SM0 SM1 Opis 0 0 0 Transmisja synchroniczna, znaki 8 bitowe, taktowane sygnałem zegarowym 1 0 1 Transmisja asynchroniczna, znaki 8 bitowe, szybkość określona programowo 2 1 0 Transmisja asynchroniczna, znaki 9 bitowe, szybkość 1/32 lub 1/64 częstotliwości zegara 3 1 1 Transmisja asynchroniczna, znaki 9 bitowe, szybkość określona programowo Zamiana postaci danej z szeregowej na równoległą (odbiór danej) lub równoległej na szeregową (nadawanie danej) oraz sterowanie transmisji odbywa się automatycznie. Dane odebrane przez port szeregowy są wpisywane do rejestru SBUF, dane wysyłane są pobierane z rejestru SBUF. Oba rejestry mają tę samą nazwę i są umieszczone w przestrzeni adresowej pamięci pod tym samym adresem 99H. SCON słowo sterujące układu transmisji szeregowej: SM0 SM1 SM2 REN TB8 RB8 TI RI SM0 SM1 SM2 REN TB8 RB8 TI RI tryb pracy, bit sterujący przejściem do komunikacji wieloprocesorowej, bit zezwolenia na odbiór danych przez port szeregowy, bit ustawiany i zerowany programowo, dziewiąty bit nadawanego słowa, dziewiąty bit odbieranego słowa, znacznik zakończenia nadawania danych, może wywołać przerwanie, kasowany programowo, znacznik zakończenia odbierania danych, może wywołać przerwanie, kasowany programowo. Tryby pracy: Tryb 0 Transmisja synchroniczna, przesyłane są słowa 8 bitowe ze stałą szybkością f XTAL /12. Nadanie danej: wpis danej do rejestru SBUF inicjuje nadawanie danej szeregowo przez linię P3.1 (RxD) oraz taktu przez P3.0 (TxD), po wysłaniu 8 bitów ustawiany jest bit TI sygnał dla procesora, że słowo zostało wysłane. Bit TI może generować przerwanie. Odbiór danej: odczyt danej przez linię P3.1 (RxD) odbywa się, gdy REN=1 i RI=0 (poprzednio odebrana dana została odczytana przez procesor), bity danej są wpisywane do rejestru przesuwnego, a po zgromadzeniu całego słowa jest ono przepisywane do rejestru 19

SBUF, jednocześnie ustawiany jest znacznik RI, który może generować przerwanie. Podczas odbioru na linię P3.0 (TxD) wysyłany jest sygnał taktujący. Rys. 8 Zależności czasowe operacji nadawania i odbioru dla łącza szeregowego pracującego w trybie 0 [2, s.68] Tryb 1 Transmisja asynchroniczna, znaki 8 bitowe, szybkość określona programowo. W trybie asynchronicznym port szeregowy pełni rolę niezależnego nadajnika (P3.1 TxD) i odbiornika (P3.0 RxD). Dane są przesyłane w następującym formacie: bit startu bity danych D0 D1 D2 D3 D4 D5 D6 D7 Rys 9 Format znaku w trybie 1 bit stopu Nadanie danej: wpis danej do rejestru SBUF inicjuje nadawanie danej szeregowo przez linię P3.1 (TxD), powoduje to równocześnie wpis jedynki logicznej (bit stopu) do przerzutnika D. Powoduje to uaktywnienie bloku sterowania nadajnika, który w następnym takcie zegarowym wymusza zero logiczne na wyjściu TxD bit startu, następnie wystawia kolejne bity danych z rejestru przesuwnego SBUF (począwszy od najmłodszego bitu). Równocześnie z bitami danych przesuwany jest bit stopu (z przerzutnika D). Po wystawieniu bitu stopu ustawiany jest bit TI oznaczający zakończenie wysyłania słowa, jest to informacja dla procesora, że do rejestru SBUF może wpisać następne słowo. Bit ten może być odpytany programowo lub może być źródłem przerwania od portu szeregowego. Odbiór danej: inicjowany jest sprzętowo, po wykryciu zmiany z 1 na 0 sygnału na linii P3.0 (RxD), pod warunkiem, że w rejestrze SCON jest ustawiony bit REN zezwolenia na odbiór. Stan linii jest próbkowany z częstotliwością sygnału taktującego odbiornik. Wykrycie bitu startu powoduje uaktywnienie bloku sterowania odbiornika oraz wyzerowanie dzielnika 20

częstotliwości przez 16 (podzielnika częstotliwości). Stan linii RxD jest próbkowany trzykrotnie w każdym cyklu (podczas odbioru pojedynczego bitu), podczas gdy zawartość licznika wynosi 7, 8 i 9. Wartość logiczna na wejściu RxD, która wystąpiła przynajmniej w dwóch próbkach jest wpisywana jako wartość odebranego bitu do rejestru przesuwnego. Po odebraniu całego słowa może ono zostać przepisane do rejestru SBUF. Warunkiem przepisania słowa jest wystąpienie prawidłowego bitu stopu oraz RI=0, które oznacza, że procesor odebrał poprzednie słowo. Po przepisaniu słowa do SBUF ustawiany jest bit RI, który jest informacją dla procesora, że może odebrać słowo z SBUF. Bit ten może być odpytany programowo lub może być źródłem przerwania od portu szeregowego. Rys 10 Zależności czasowe operacji nadawania i odbioru dla łącza szeregowego pracującego w trybie 1 [2,s.71] W trybie 1 szybkość transmisji jest ustalana programowo przez wpis wartości do licznika T1 (w niektórych procesorach może to również być licznik T2) pracującego jako czasomierz (C/ T =0) w trybie 2 (z autodoładowaniem). Szybkość transmisji jest równa: f OT1 /32 gdy SMOD=0 lub f OT1 /64 gdy SMOD=1, gdzie f OT1 częstotliwość przepełnienia licznika T1, SMOD siódmy bit w rejestrze PCON. f OT1= f T1 256 - TH1 gdzie f T1 oznacza częstotliwość impulsów zliczanych przez licznik T1, czyli f T1 = f XTAL /12. Przykładowe wartości, jakie należy wpisać do TH1, gdy licznik T1 pracuje jako czasomierz w trybie 2, a f XTAL= 12 MHz, SMOD=0 zostały przedstawione w tabeli 4: Tabela 4 Ustalanie szybkości transmisji Szybkość transmisji Wartość początkowa (hex) w bodach 9600 FD 4800 FA 2400 F4 1200 E8 600 D0 21

Tryb 2 Transmisja asynchroniczna, znaki 9 bitowe, szybkość 1/32 (SMOD=0) lub 1/64 (SMOD=1) częstotliwości zegara. Format danych: bit startu bity danych bit kontr. bit stopu D0 D1 D2 D3 D4 D5 D6 D7 Rys 11 Format znaku w trybie 2 Dziewiąty bit nadawanego słowa jest wpisywany jako bit TB8, a odbieranego słowa jako RB8 w rejestrze SCON. Bit TB8 i RB8 są zmieniane programowo. Mogą pełnić role bitu kontroli parzystości, dodatkowego bitu stopu oraz mogą być wykorzystane w komunikacji wieloprocesorowej. Działanie portu podobne jak w trybie 1. Tryb 3 Transmisja asynchroniczna, znaki 9 bitowe, szybkość określona programowo. Format danych jak w trybie 2, a taktowanie transmisji jak w trybie 1. 4.2.2. Pytania sprawdzające Odpowiadając na pytania, sprawdzisz, czy jesteś przygotowany do wykonania. 1. Jakie jest zadanie portu szeregowego? 2. W jakich trybach może pracować port szeregowy? 3. Jakie rejestry są związane z pracą portu szeregowego? 4. Na czym polega transmisja synchroniczna, a na czym asynchroniczna? 5. Z jakich bitów składa się ramka w transmisji asynchronicznej? 6. W jaki sposób zaprogramować port szeregowy na określony tryb pracy i zadaną szybkość transmisji? 7. Jak rozpocząć nadawanie danej? 8. Jak można ustalić prędkość transmisji? 9. Jakie warunki muszą być spełnione, aby dana mogła być odebrana przez łącze szeregowe? 10. Jak oblicza się bit kontroli parzystości? 11. Jak programowo sprawdzić, czy dana została odebrana poprawnie? 4.2.3. Ćwiczenia Ćwiczenie 1 Napisz i uruchom program ciągłego wysyłania pojedynczej danej z akumulatora przez port szeregowy. Wysyłana ma być dana 8 bitowa z szybkością 1200 bodów. Przed powtórnym wysłaniem danej wprowadź opóźnienie czasowe ok. 200 ms używając licznika T0. Umożliwi to obserwację wysyłanego znaku na oscyloskopie. Sposób wykonania ćwiczenia Aby wykonać ćwiczenie powinieneś: 1) wybrać tryb pracy portu szeregowego, 22

2) wybrać tryby pracy dla liczników T0 i T1 licznik T0 służy do opóźnienia czasowego, licznik T1 będzie taktował transmisję szeregową, 3) obliczyć wartość początkową dla licznika T1 odpowiednią dla zadanej szybkości transmisji i liczbę przepełnień oraz wartość początkową dla licznika opóźniającego T0, 4) zestawić słowa sterujące, 5) przygotować algorytm programu w postaci schematu blokowego, 6) napisać program w języku asemblera, 7) skompilować program, poprawić ewentualne błędy, 8) uruchomić program używając zestawu uruchomieniowego, 9) sprawdzić poprawność działania programu, 10) zaprezentować wykonane ćwiczenie, 11) dokonać oceny poprawności wykonanego ćwiczenia. Wyposażenie stanowiska pracy: komputer PC, oprogramowanie umożliwiające kompilowanie i debbugowanie programu, zestaw uruchomieniowy z oprogramowaniem, oscyloskop, literatura z rozdziału 6. Ćwiczenie 2 Napisz i uruchom program przepisania danych 8 bitowych z tablicy w pamięci IRAM [20H:2FH] do tablicy w pamięci XRAM [0 0FH] za pośrednictwem portu szeregowego (TxD i RxD połączone). Szybkość transmisji 9600 bodów. Sposób wykonania ćwiczenia Aby wykonać ćwiczenie powinieneś: 1) wybrać tryb pracy portu szeregowego, 2) obliczyć wartość początkową dla licznika T1 odpowiednią dla zadanej szybkości transmisji, 3) zestawić słowo sterujące, 4) przygotować algorytm programu w postaci schematu blokowego, 5) napisać program w języku asemblera, 6) skompilować program, poprawić ewentualne błędy, 7) uruchomić program używając zestawu uruchomieniowego, 8) sprawdzić poprawność działania programu, 9) zaprezentować wykonane ćwiczenie, 10) dokonać oceny poprawności wykonanego ćwiczenia. Wyposażenie stanowiska pracy: komputer PC, oprogramowanie umożliwiające kompilowanie i debbugowanie programu, zestaw uruchomieniowy z oprogramowaniem, literatura z rozdziału 6. 23

4.2.4. Sprawdzian postępów Czy potrafisz: Tak Nie 1) opisać pracę portu szeregowego w każdym z trybów pracy? 2) zaprogramować port szeregowy na odpowiedni tryb pracy? 3) ustalać szybkość transmisji przez port szeregowy? 4) napisać program nadawania lub odbierania danych przez port szeregowy? 5) nadawać daną z bitem kontroli parzystości? 6) sprawdzać, czy dana została odebrana poprawnie? 24

4.3. Przetwornik analogowo cyfrowy 4.3.1.Matriał nauczania Mikrokontroler SAB80C535 jest wyposażony w przetwornik analogowo cyfrowy. Parametry przetwornika: kompensacja wagowa, 8 kanałów analogowych AN0 AN7 (P6.0 P6.7), 8 bitowa rozdzielczość pomiaru, 16 programowalnych podzakresów pomiarowych, programowe wyzwalanie serii pomiarów lub pojedynczego pomiaru, możliwość generowania przerwania po każdym pomiarze, czas przetwarzania przetwornika wynosi 13 cykli maszynowych. Rys.12 Schemat blokowy przetwornika A/C: [1, s.126] Przetwornik A/C korzysta z 3 rejestrów specjalnych SFR: ADCON (adres 0D8h) wybór kanału pomiarowego i rodzaju przetwarzania: BD CLK BSY ADM MX2 MX1 MX0 BD bit związany z portem szeregowym, CLK bit związany z taktowaniem, podczas pracy przetwornika A/C nie należy zmieniać ich wartości, 25

BSY wskazuje aktualny stan przetwornika, bit tylko do odczytu, ustawiany i kasowany sprzętowo: BSY=0 przetwornik po zakończeniu przetwarzania, BSY=1 przetwornik w trakcie przetwarzania, ADM określa rodzaj przetwarzania: ADM=0 pojedynczy pomiar, ADM=1 seria pomiarów, aż do chwili gdy ADM=0, MX2, MX1, MX0 wybór kanału pomiarowego. Tabela 5 Wybór kanału pomiarowego: MX2 MX1 MX0 Kanał Wejście 0 0 0 0 AN0/P6.0 0 0 1 1 AN1/P6.1 0 1 0 2 AN2/P6.2 0 1 1 3 AN3/P6.3 1 0 0 4 AN4/P6.4 1 0 1 5 AN5/P6.5 1 1 0 6 AN6/P6.6 1 1 1 7 AN7/P6.7 ADDAT (adres 0D9h) wynik przetwarzania W rejestrze ADDAT przechowywana jest całkowita wielokrotność poziomów kwantowania: U x ADDAT = ΔU VIntAREF VIntAGND ΔU = 8 2 1 DAPR (adres 0DAh) wybór zakresu przetwarzania, wpis wartości do tego rejestru rozpoczyna pomiar i przetwarzanie ac na wybranym kanale. bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 napięcie V IntAREF napięcie V IntAGND przy czym: V IntAREF górne wewnętrzne napięcie odniesienia V IntAGND dolne wewnętrzne napięcie odniesienia Napięcia te tworzone są przez podział różnicy napięć V AREF i V AGND zgodnie z wzorami: DAPR 7..4 VIntAREF = VAGND + ( VAREF VAGND ) 16 DAPR 3..0 VIntAGND = VAGND + ( VAREF VAGND ) 16 musi być spełniony warunek: V IntAREF V IntAGND >1V, stąd DAPR 7..4 > 3h i DAPR 3..0 < Ch zakładając napięcia odniesienia: V AREF =5V i V AGND =0V: DAPR 7..4 VIntAREF = 5V 16 DAPR 7..4 VIntAGND = 5V 16 np. zawartość rejestru DAPR=A4h: 10 50V V IntAREF = 5V = = 3,125 V 16 16 26

4 20V V IntAGND = 5V = = 1,25 V 16 16 Czyli dla DAPR=A4h zakres napięć: 1,25V 3,125V Tabela 6 Wybór podzakresów pomiarowych: podzakres pomiarowy DAPR 7..4 [V] V IntAREF DAPR 3..0 [V] 0 0000 5 0000 0 1 0001 0001 0,3125 2 0010 0010 0,625 3 0011 0011 0,9375 4 0100 1,25 0100 1,25 5 0101 1,5625 0101 1,5625 6 0110 1,875 0110 1,875 7 0111 2,1875 0111 2,1875 8 1000 2,5 1000 2,5 9 1001 2,8125 1001 2,8125 10 1010 3,125 1010 3,125 11 1011 3,4375 1011 3,4375 12 1100 3,75 1100 3,75 13 1101 4,0625 1101 14 1110 4,375 1110 15 1111 4,6875 1111 V IntAGND Dokładność przetwarzania przetwornika w pełnym zakresie programowym wynosi: VIntAREF VIntAGND 5V 0V ΔU = = = 0,0196V 8 2 1 255 przy pomiarze w zawężonym zakresie np. 0 1,25V: VIntAREF VIntAGND 1,25V 0V U = = = 0,0049V 8 2 1 255 Jest to prosty sposób na zwiększenie dokładności przetwornika o dodatkowe dwa bity (wynik 10 bitowy). Należy dokonać pomiaru w pełnym zakresie pomiarowym. Na podstawie uzyskanego wyniku określić podzakres pomiarowy i dokonać drugiego pomiaru. Pomiar 10 bitowy: 1. Pierwszy pomiar w zakresie 0 5V 2. Na podstawie 2 najstarszych bitów wyniku należy ustalić podzakres pomiarowy: Tabela 7 Podzakres pomiarowy dla pomiaru 10 bitowego dwa najstarsze bity wyniku zakres pomiarowy DAPR 00 0 1,25V 40H 01 1,25V 2,5V 84H 10 2.5V 3,75V C8H 11 3,75V 5V 0CH 3. Do drugiego pomiaru należy wybrać odpowiedni podzakres i właściwą wartość wpisać do DAPR. 4. Drugi pomiar w wybranym podzakresie pozwoli ustalić 8 młodszych bitów wyniku. Dla prawidłowej pracy przetwornika A/C wymagane jest spełnienie następujących warunków: 27

napięcia V IntAREF i V IntAGND muszą być dołączone do wyprowadzeń mikrokontrolera, jeżeli napięcia V IntAREF i V IntAGND są dołączone do napięć zasilających mikrokontroler V CC i V SS, to muszą spełniać warunek: V = V ± 5% V IntAREF IntAGND CC = V SS ± 0,2V, minimalna różnica napięć V IntAREF V 1V, IntAGND rezystancja wewnętrzna źródła mierzonego napięcia i napięcia wzorcowego nie może być większa niż 5kΩ. 4.3.2. Pytania sprawdzające Odpowiadając na pytania, sprawdzisz, czy jesteś przygotowany do wykonania ćwiczeń. 1. W jakim zakresie można mierzyć napięcia używając przetwornika A/C? 2. Ilu bitowy jest przetwornik A/C w mikrokontrolerze SAB80C535? 3. Jaki jest kwant napięcia w tym przetworniku podczas pomiaru w pełnym zakresie pomiarowym? 4. W jaki sposób można wybrać kanał pomiarowy? 5. Jak rozpocząć pomiary? 6. Jak zatrzymać serię pomiarów? 7. W jaki sposób można zwiększyć dokładność pomiaru, jeżeli wiemy, że zakres napięć mierzonych jest mniejszy niż 0 5V? 8. Z jakiego rejestru należy pobrać wynik pomiaru? 9. Jak sprawdzić, czy przetwornik zakończył przetwarzanie? 4.3.3. Ćwiczenia Ćwiczenie 1 Uzupełnij tabelę. U REF U GND DAPR 28 wartość analogowa napięcia wartość cyfrowa napięcia 5V 0V 3,2 V 3,75 V 2,5V 3,2V E4H 80H 0AH 4,1 V 4 V 1 V 72H Sposób wykonania ćwiczenia Aby wykonać ćwiczenie powinieneś: 1) dokonać obliczeń kwantów napięcia na podstawie wybranego podzakresu pomiarowego korzystając z danych napięć odniesienia lub zawartości rejestru DAPR, 2) obliczyć wartość analogową (dziesiętnie) lub cyfrową (szesnastkowo), 3) na podstawie dwóch pierwszych pozycji w tabeli porównaj dokładność pomiaru w pełnym zakresie pomiarowym i w odpowiednio dobranym podzakresie pomiarowym, zastanów się w jaki sposób wynik drugiego pomiaru można przedstawić jako wynik 10 bitowy, 4) zaprezentować efekty swojej pracy, 5) dokonać samooceny.

Wyposażenie stanowiska pracy: treść zadania dla każdego ucznia, kalkulator, literatura z rozdziału 6. Ćwiczenie 2 Napisz i uruchom program ciągłego pomiaru napięcia z wybranego kanału pomiarowego, wynik pomiaru wysyłaj na diody dołączone do portu. Sposób wykonania ćwiczenia Aby wykonać ćwiczenie powinieneś: 1) wybrać tryb pracy i kanał pomiarowy, 2) zestawić słowo sterujące, 3) opracować algorytm programu i przedstawić go w postaci schematu blokowego, 4) napisać program w języku asemblera, 5) skompilować program, poprawić ewentualne błędy, 6) uruchomić program używając zestawu uruchomieniowego, 7) sprawdzić poprawność działania programu, 8) zaprezentować wykonane ćwiczenie, 9) dokonać oceny poprawności wykonanego ćwiczenia, Wyposażenie stanowiska pracy: komputer PC, oprogramowanie umożliwiające kompilowanie i debbugowanie programu, zestaw uruchomieniowy z oprogramowaniem, literatura z rozdziału 6. Ćwiczenie 3 Napisz i uruchom program monitorowania napięcia z wybranego kanału pomiarowego, w przypadku przekroczenia napięcia 4V zapal diodę dołączoną do portu. Sposób wykonania ćwiczenia Aby wykonać ćwiczenie powinieneś: 1) wybrać tryb pracy i kanał pomiarowy, 2) zestawić słowo sterujące, 3) obliczyć jaka wartość cyfrowa w rejestrze ADDAT odpowiada napięciu analogowemu 4V, 4) opracować algorytm programu i przedstawić go w postaci schematu blokowego, 5) napisać program w języku asemblera, 6) skompilować program, poprawić ewentualne błędy, 7) uruchomić program używając zestawu uruchomieniowego, 8) sprawdzić poprawność działania programu, 9) zaprezentować wykonane ćwiczenie, 10) dokonać oceny poprawności wykonanego ćwiczenia. Wyposażenie stanowiska pracy: komputer PC, oprogramowanie umożliwiające kompilowanie i debbugowanie programu, 29

zestaw uruchomieniowy z oprogramowaniem, literatura z rozdziału 6. 4.3.4. Sprawdzian postępów Czy potrafisz: Tak Nie 1) omówić pracę przetwornika A/C? 2) zaprogramować przetwornik na pomiar napięć z wybranego kanału? 3) obliczyć wartość analogową napięcia na podstawie wyniku pomiaru w określonym podzakresie? 4) dobrać odpowiednie wartości do rejestru DAPR na podstawie znajomości przewidywanego zakresu pomiarowego? 5) obliczyć wartość cyfrową napięcia na podstawie znajomości podzakresu pomiarowego (zawartości rejestru DPTR)? 6) napisać program pomiaru napięć z wybranego kanału, w wybranym podzakresie pomiarowym i zapisywania wyników w pamięci? 30

4.4. Układ przerwań 4.4.1. Materiał nauczania Układ przerwań w mikrokontrolerach rodziny 51 obsługuje następujące przerwania: Tabela 8 Źródła przerwań zewnętrzne: źródło przerwania: INT0 INT1 wewnętrzne: źródło przerwania: przepełnienie licznika T0 przepełnienie licznika T1 koniec nadawania/odbierania danej przez port szeregowy znacznik: IE0 TCON.1 IE1 TCON.1 znacznik: TF0 TCON.5 TF1 TCON.7 TI SCON.1 RI SCON.0 Znaczniki są ustawiane sprzętowo w momencie wystąpienia przyczyny przerwania lub programowo przez wpis jedynki na odpowiedni bit. Znaczniki są kasowane sprzętowo po przyjęciu przerwania, mogą być również kasowane programowo. Wyjątkiem jest przerwanie od portu szeregowego znaczniki nie są kasowane po przyjęciu przerwania, aby umożliwić identyfikację źródła przerwania (nadajnik czy odbiornik), muszą być więc zerowane programowo. Układ przerwań może być blokowany lub odblokowany globalnie, każde przerwanie może być maskowane indywidualnie przez wpis 1 na odpowiednią pozycję rejestru IE: EA ES ET1 EX1 ET0 EX0 Układ przerwań jest dwupoziomowy. W rejestrze IP można przypisać przerwaniom poziom wyższy ( 1 na odpowiedniej pozycji) lub niższy ( 0 ): PS PT1 PX1 PT0 PX0 Tabela 9 znaczenie bitów w rejestrach IE i IP IE IP przerwanie priorytet EX0 PX0 zewnętrzne INT0 ET0 PT0 od licznika T0 EX1 PX1 zewnętrzne INT1 ET1 PT1 od licznika T1 ES PS od portu szeregowego Jeżeli układ przerwań jest odblokowany (EA=1) w stanie S6 każdego cyklu maszynowego są przeglądane znaczniki zgłoszenia nie zamaskowanych przerwań. W następnym cyklu maszynowym układ przerwań przejdzie do obsługi przerwania o najwyższym priorytecie pod warunkiem, że: 31

wykonywany cykl maszynowy jest ostatnim w cyklu maszynowym, wykonywany rozkaz nie jest rozkazem RETI lub innym zmieniającym zawartość rejestrów IP lub IE, nie jest obsługiwany podprogram obsługi przerwania o tym samym lub wyższym poziomie. Po przyjęciu przerwania do obsługi mikrokontroler wykonuje następujące czynności: wewnętrzny przerzutnik przerwania odpowiadający poziomowi przyjętego przerwania zostanie ustawiony, aby w czasie obsługi nie mogło być przyjęte przerwanie z tego samego lub niższego poziomu, zeruje znacznik przyjętego przerwania (oprócz RI i TI), zapamiętuje na stosie zawartość licznika rozkazów, wpisuje do licznika rozkazów adres początku podprogramu obsługi przerwania. Tabela 10 Adresy wektorów przerwań źródło przerwania znacznik przerwania adres wektora przerwania zewnętrzne INT0 IT0 0003H od przepełnienia T0 TF0 000BH zewnętrzne INT1 IT1 0013H od przepełnienia T1 TF1 001BH od portu szeregowego RI+TI 0023H Cykl przyjęcia przerwania jest wykonywany w ciągu 2 cykli maszynowych. Po jego zakończeniu procesor rozpoczyna realizację podprogramu obsługi przerwania. Podprogram ten musi być zakończony rozkazem RETI, który spowoduje wyzerowanie przerzutnika przerwania (następne przerwanie z tego samego lub niższego poziomu może zostać przyjęte) oraz zdejmuje ze stosu adresu powrotu i wpisanie go do licznika rozkazów PC. Przerwania zewnętrzne Przerwania zewnętrzne są zgłaszane opadającym zboczem lub niskim poziomem sygnału na wejściach INT0 i INT1 (P3.2 i P3.3). Sposób zgłoszenia określa się programowo w rejestrze TCON: IE1 IT1 IE0 IT0 bity związane z T1, T0 IE1 znacznik zgłoszenia przerwania INT1 IT1 ustawienie sposobu zgłaszania przerwania INT1: IT1=0 zgłoszenie poziomem niskim sygnału IT1=1 zgłoszenie zboczem opadającym sygnału IE0 znacznik zgłoszenia przerwania INT0 IT0 ustawienie sposobu zgłaszania przerwania INT0 Znacznik IE1/IE0 jest zerowany sprzętowo w chwili przyjęcia przerwania. 32

System przerwań w mikrokontrolerze SAB 80C535 Ze względu na dodatkowe zasoby mikrokontroler SAB 80C535 identyfikuje 12 źródeł przerwań: 5 omówionych powyżej oraz: przerwanie od przepełnienia licznika T2 oraz od przeładowania licznika T2 sygnałem zewnętrznym, przerwanie od przetwornika A/C, 5 przerwań zewnętrznych INT2..INT6. Każdy sygnał mogący wywołać przerwanie związany jest z odpowiednim znacznikiem, który jest ustawiany, gdy sygnał wywołujący przerwanie jest aktywny. Znaczniki są kasowane sprzętowo po przyjęciu przerwania. Wyjątkiem są znaczniki przerwań od licznika T2: TF2 i EXF2 (oraz omawiane poprzednio RI i TI), które muszą być zerowane programowo. Znaczniki są ustawiane w rejestrze IRCON: EXF2 TF2 IEX6 IEX5 IEX4 IEX3 IEX2 IADC EXF2 znacznik ustawiany zewnętrznym sygnałem od przeładowania licznika T2, TF2 znacznik od przepełnienia licznika T2, IEX6 znacznik od zewnętrznego sygnału INT6 lub od sygnału wyjściowego z komparatora 3, IEX5 znacznik od zewnętrznego sygnału INT5 lub od sygnału wyjściowego z komparatora 2, IEX4 znacznik od zewnętrznego sygnału INT4 lub od sygnału wyjściowego z komparatora 1, IEX3 znacznik od zewnętrznego sygnału INT3 lub od sygnału wyjściowego z komparatora 0, IEX2 znacznik od zewnętrznego sygnału INT2, IADC znacznik od przetwornika A/C ustawiany na 4 cykle przed końcem przetwarzania. W związku z większą liczbę źródeł przerwań rejestr maskowania przerwań IE został zastąpiony przez 2 rejestry IEN0 i IEN1. Wpis 0 na odpowiednią pozycję rejestru powoduje zablokowanie przerwania, wpis 1 odblokowanie IEN0: EAL ET2 ES ET1 EX1 ET0 EX0 EAL odblokowanie wszystkich przerwań (odpowiednik bitu EA w rejestrze IE), ET2 przerwanie od licznika T2, pozostałe bity mają znaczenie takie samo jak w rejestrze IE. IEN1: EXEN2 EX6 EX5 EX4 EX3 EX2 EADC EXEN2 przerwanie od licznika T2 wywołane zewnętrznym sygnałem przeładowania licznika, EX6 przerwanie zewnętrzne INT6 lub od komparatora 3 33

EX5 przerwanie zewnętrzne INT5 lub od komparatora 2 EX4 przerwanie zewnętrzne INT4 lub od komparatora 1 EX3 przerwanie zewnętrzne INT3 lub od komparatora 0 EX2 przerwanie zewnętrzne INT2 EADC przerwanie od przetwornika A/C Przerwania zewnętrzne INT2 i INT3 mogą być zgłaszane zboczem opadającym lub narastającym zależnie od ustawienia bitów I2FR i I3FR w rejestrze T2CON ( 0 zbocze opadające, 1 zbocze narastające ). Pozostałe przerwania zewnętrzne INT4..INT6 mogą być zgłaszane tylko zboczem narastającym. Przyjęcie przerwania powoduje przejście do podprogramu obsługi przerwania. Tabela 11 Adresy wektorów przerwań źródło przerwania znacznik przerwania adres wektora przerwania zewnętrzne INT0 IT0 0003H od przepełnienia T0 TF0 000BH zewnętrzne INT1 IT1 0013H od przepełnienia T1 TF1 001BH od portu szeregowego RI+TI 0023H licznik T2 TF2+EXF2 002BH przetwornik A/C IADC 0043H przerw. zewn. INT2 IEX2 004BH przerw. zewn. INT3 IEX3 0053H przerw. zewn. INT4 IEX4 005BH przerw. zewn. INT5 IEX5 0063H przerw. zewn. INT6 IEX6 006BH W przypadku jednoczesnych zgłoszeń przerwań o kolejności obsługi decyduje priorytet. Tabela 12 Priorytety przerwań Źródło przerwania Znacznik Priorytet przerw. zewn. INT0 IE0 najwyższy przetwornik A/C IADC licznik T0 TF0 przerw. zewn. INT2 IEX2 przerw. zewn. INT1 IE1 przerw. zewn. INT3 IEX3 licznik T1 TF1 przerw. zewn. INT4 IEX4 port szeregowy RI+TI przerw. zewn. INT5 IEX5 licznik T2 TF2+EXF2 przerw. zewn. INT6 IEX6 najniższy 34

Mikrokontroler SAB 80C535 wyposażony jest w czteropoziomowy system przerwań. Poziom przerwania jest ustalany przez ustawienie odpowiednich bitów w rejestrach IP0 i IP1: IP0: IP0.5 IP0.4 IP0.3 IP0.2 IP0.1 IP0.0 IP1: IP1.5 IP1.4 IP1.3 IP1.2 IP1.1 IP1.0 Tabela 13 Poziomy przerwań: znaczniki poziom IP1.x IP0.x przerwania 0 0 0 0 1 1 1 0 2 1 1 3 Poziom przerwania można przypisać dla pary przerwań. Tabela 14 Przyporządkowanie przerwań do określonych znaczników: znaczniki przerwań źródła przerwań IP1.0 IP0.0 IE0 IADC IP1.1 IP0.1 TF0 IEX2 IP1.2 IP0.2 IE1 IEX3 IP1.3 IP0.3 TF1 IEX4 IP1.4 IP0.4 RI+TI IEX5 IP1.5 IP0.5 TF2+EXF2 IEX6 4.4.2. Pytania sprawdzające Odpowiadając na pytania, sprawdzisz, czy jesteś przygotowany do wykonania ćwiczeń. 1. Jakie są źródła przerwań w mikrokontrolerze 8051? 2. Jakie jest znaczenie bitów w rejestrze IE? 3. Jakie jest znaczenie bitów w rejestrze IP? 4. Które ze znaczników przerwań są kasowane sprzętowo po przejściu do obsługi przerwania, a które trzeba kasować programowo? 5. Jak programowo wywołać przerwanie z dowolnego źródła? 6. Od czego zależy kolejność obsługi przerwań podczas jednoczesnych zgłoszeń? 7. Jakie są warunki przyjęcia przerwania? 8. Jakie czynności wykonuje mikrokontroler po przyjęciu przerwania? 9. Jakie dodatkowe źródła przerwań występują w mikrokontrolerze 80C535? 10. Jakie rejestry zastępują rejestr IE w mikrokontrolerze 80C535? 11. Ile jest poziomów przerwań w mikrokontrolerze 80C535? 35

4.4.3. Ćwiczenia Ćwiczenie 1 Przedstaw na wykresie kolejność obsługi przerwań, gdy IE=10010011b, IP=00000010, czas trwania każdego podprogramu obsługi przerwania 4 jednostki. priorytet INT0 T0 INT1 T1 port sz. pr. gł. RI IE1 TF1, IE0 TI TF0 t Sposób wykonania ćwiczenia Aby wykonać ćwiczenie powinieneś: 1) na podstawie stanu rejestrów IE określić, które z przerwań są odblokowane i mogą być przyjęte do obsługi, 2) na podstawie stanu rejestru IP określić, które z przerwań mają priorytet wyższy, a które niższy, 3) narysować wykres kolejności obsługi zgłoszeń, uwzględniając kolejne zgłoszenia i zawartość rejestrów IE i IP, 4) zaprezentować wykonane ćwiczenie, 5) dokonać oceny poprawności i estetyki wykonanego ćwiczenia. Wyposażenie stanowiska pracy: treść zadania dla każdego ucznia literatura z rozdziału 6. Ćwiczenie 2 Zaprogramuj układ przerwań w mikrokontrolerze SAB 80C535 tak, aby obsługiwał przerwania od licznika T0, przetwornika A/C, portu szeregowego i przerwania zewnętrzne INT1 i INT5. Przerwanie INT1 może przerwać obsługę każdego przerwania, a przerwanie INT5 może przerwać obsługę przerwań od licznika T0, przetwornika A/C i portu szeregowego. Sposób wykonania ćwiczenia 36