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

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

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

Programowanie mikrokontrolerów - laboratorium

Układy czasowo-licznikowe w systemach mikroprocesorowych

Układy czasowo-licznikowe w systemach mikroprocesorowych

Mikroprocesory i Mikrosterowniki Liczniki Timer Counter T/C0, T/C1, T/C2

Instytut Teleinformatyki

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

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

start Program mikroprocesorowego miernika mocy generowanej $crystal = deklaracja

Metody obsługi zdarzeń

Listing_ $crystal = deklaracja

2. Architektura mikrokontrolerów PIC16F8x... 13

Mikrokontroler w roli generatora PWM. Wpisany przez Administrator piątek, 06 lipca :51 -

Wbudowane układy peryferyjne cz. 2 Wykład 8

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

Przerwania, polling, timery - wykład 9

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

Standardowe bloki funkcjonalne

Wstęp Architektura... 13

Instytut Teleinformatyki

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

Programowany układ czasowy APSC

Układy czasowo-licznikowe w systemach 80x86

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Układy czasowe / liczniki (timers/counters)

Programowany układ czasowy

Politechnika Białostocka

Miernik częstotliwości 100 MHz

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

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

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

Kurs Elektroniki. Część 5 - Mikrokontrolery. 1/26

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania. Sterowniki Urządzeń Mechatronicznych laboratorium. Ćw. 3: Timer v1.0

LOW ENERGY TIMER, BURTC

ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!

Programowanie mikrokontrolerów 2.0

Politechnika Białostocka

Podstawy Techniki Mikroprocesorowej Laboratorium

mikrokontrolerów PIC (2) Sterowanie za pomocą PWM

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

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

uniwersalnych 1. Klasyfikacja liczników w układach STM32F10x 2. Konfiguracja liczników do realizacji wybranych zadań 2.

Programowanie mikrokontrolerów 2.0

Hardware mikrokontrolera X51

CW-HC08 Programowanie mikrokontrolera MC9S08QD4 [2]

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

Instytut Teleinformatyki

STEROWANIE MASZYN I URZĄDZEŃ I. Laboratorium. 4. Przekaźniki czasowe

LABORATORIUM ELEKTRONIKI I TEORII OBWODÓW

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

Programowanie mikrokontrolerów. 3 stycznia 2008

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

Politechnika Białostocka

1.2. Architektura rdzenia ARM Cortex-M3...16

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-"

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

INSTRUKCJA OBSŁUGI Generatora impulsów PWM

Zawody II stopnia etap II - ćwiczenia laboratoryjne Grupa Elektroniczna

Laboratorium 1: Wprowadzenie do środowiska programowego. oraz podstawowe operacje na rejestrach i komórkach pamięci

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1

2.1 Porównanie procesorów

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

Scalony analogowy sterownik przekształtników impulsowych MCP1630

Liniowe układy scalone. Elementy miernictwa cyfrowego

Dokumentacja Licznika PLI-2

Programowalne Układy Cyfrowe Laboratorium

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

Podstawy programowania PLC w języku drabinkowym - ćwiczenie 5

Mikrokontrolery STM32

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

POMIAR CZĘSTOTLIWOŚCI I INTERWAŁU CZASU

AGH Akademia Górniczo- Hutnicza w Krakowie Katedra Elektroniki WIET

Uproszczony schemat blokowy konwertera analogowo-cyfrowego przedstawiony został na rys.1.

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.

Timery w mikrokontrolerach STM32F3

2.1 Przesył danych między procesorem a tabelą zmiennych

Wydział Elektroniki. Wykrywacz przewodów ściennych. Wizualizacja danych sensorycznych - projekt. Prowadzący: dr inż.

M-1TI. PRECYZYJNY PRZETWORNIK RTD, TC, R, U NA SYGNAŁ ANALOGOWY 4-20mA Z SEPARACJĄ GALWANICZNĄ. 2

Enkodery czujniki cyfrowe

TECHNIKA MIKROPROCESOROWA II

IC200UDR002 ASTOR GE INTELLIGENT PLATFORMS - VERSAMAX NANO/MICRO

PROGRAMOWANIE Z LICZNIKIEM CYKLI

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

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Programowanie mikrokontrolerów 2.0

MIKROPROCESOROWY STEROWNIK PARAMETRÓW KLIMATYCZNYCH

Częstościomierz wysokiej rozdzielczości

Część 6. Mieszane analogowo-cyfrowe układy sterowania. Łukasz Starzak, Sterowanie przekształtników elektronicznych, zima 2011/12

Zastosowania mikrokontrolerów w przemyśle

Wstęp Podstawy programowania QBASIC Budowa mikroprocesora Zestaw uruchomieniowy Porty wejścia/wyjścia...

Cyfrowe Elementy Automatyki. Bramki logiczne, przerzutniki, liczniki, sterowanie wyświetlaczem

Wbudowane układy peryferyjne cz. 1 Wykład 7

Instytut Teleinformatyki

Obrotomierz AVT 5260 PROJEKTY

Politechnika Białostocka

Sterowniki Programowalne Sem. V, AiR

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.

Programowanie mikrokontrolerów. 5 grudnia 2007

Transkrypt:

Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej Systemy wbudowane Witold Kozłowski Zakład Fizyki i Technologii Struktur Nanometrowych 90-236 Łódź, Pomorska 149/153 https://std2.phys.uni.lodz.pl/mikroprocesory/

Systemy wbudowane Kierunek: Informatyka PRACOWNIA DYDAKTYCZNA Uwaga!!! Proszę o wyłączenie telefonów komórkowych na wykładzie i laboratorium

Systemy wbudowane Kierunek: Informatyka PRACOWNIA DYDAKTYCZNA Wykład 3. Zastosowanie licznika-czasomierza Timer0 do generowania stałych odcinków czasu Przykład generowania sygnału PMW wykorzystując Timer1

Jak wygenerować odcinek czasu o dowolnej długości???

Timer0 8 bitowy Każdy mikrokontroler jest wyposażony w co najmniej jeden timer, który można zazwyczaj skonfigurować do pracy w trybach licznika, czasomierza czy generatora PWM. Dużą zaletą timerów jest to, że mogą pracować niezależnie od innych bloków funkcjonalnych mikrokontrolera mikrokontroler pracuje w swoim rytmie a timer w swoim.

licznik-czasomierz Timer0 Licznik TIMER0 jest 8 bitowy- tzn może zliczyć tylko 256 impulsów. Może on zliczać impulsy zegara taktującego procesor doprowadzone do jego wejścia bezpośrednio lub przez prescaler. Zliczanie można w każdej chwili zatrzymać i wznowić oraz wpisać dowolną wartość do licznika. Dla naszego oscylatora kwarcowego 8MHz Wygenerowanie przerwania po zliczeniu 256 impulsów T = 125ns 255 1 2 3 256 Prescaler Dzielnik częstotliwości Licznik do 256 przez 1 8 64 256 Dla 8MHz 256 impulsów to czas t = 125ns * 256 = 32us 1024 Przerwanie będzie generowane co 32us Przy ustawieniu preskaleta = 1

Konfiguracja licznika-czasomierza Timer0 Konfiguracja jako czasomierz: Config Timer0 = Timer, Prescale = 1 8 64 256 1024 Konfiguracja jako licznik: Config Timer0 = Counter, Prescale = 1 8 64 256 1024 Edge = Rising Falling, Clear Timer = 1 0

licznik-czasomierz Timer0 Licznik czasomierz TIMER0 cechuje się dużą rozdzielczością i wysoką dokładnością gdy używany jest przy małych stopniach podziału preskalera. Podobnie, przy dużym podziale preskalera licznik staje się użyteczny przy odmierzaniu krótkich odcinków czasu. Konfiguracją pracy licznika zajmuje się instrukcja Config Timer0 Do sterowania licznikiem przewidziano instrukcje Start oraz Stop Uproszczono także dostęp do rejestrów licznika definiując w języku BASCOM BASIC specjalne instrukcje Counter0, Load Na przykład instrukcja: Counter0 = 206 spowoduje, że do licznika Timer0 zostanie wpisana wartość początkowa 206 lub: Load - która dokonuje niezbędnego przeliczenia tej wartości, tak aby licznik przepełnił się po podanej liczbie impulsów. Jest ona szczególnie użyteczna w tych przypadkach gdy wymagane staje się skracanie cyklu licznika. Na przykład instrukcja: Load Timer0, 50 - spowoduje, że do licznika Timer0 zostanie wpisana wartość początkowa 206, a więc licznik przepełni się właśnie po 50 impulsach (206+50=256) Przewidziano także stosowanie przez użytkownika przerwań jakie generuje licznik. Można je łatwo obsłużyć stosując instrukcję ON INTERRUPT w połączeniu z odpowiednim programem obsługi. Zgłaszanie przerwań przez licznik można włączać i wyłączać za pomocą instrukcji ENABLE i DISABLE

Wykorzystamy Timer0 - czasomierz Jak odmierzyć 1s przy pomocy Timera0? Uwaga: należy ustawać licznik Dla naszego oscylatora kwarcowego Po podziale f= 8MHz f= 31.25kHz T = 125ns T = 32us tak aby liczył do Prescaler 0 1 2 3 250 Wygenerowanie przerwania po zliczeniu 250 impulsów Podzielmy f = 8MHz Licznik przez 256 Przerwanie będzie generowane co 8ms

Wykorzystamy Timer0 - czasomierz Jak odmierzyć 1s przy pomocy Timera0? To jest naprawdę proste!!! Należy ustawać tak licznik aby liczył do 250 Wygenerowanie przerwania po zliczeniu 250 impulsów Licznik do 256 Przerwanie będzie generowane co 8ms Zliczenie 125 kolejnych przerwani które będą występować co 8ms da nam właśnie 1s 125 * 8ms = 1s

Program 3 Przykład wykorzystania Timer0 do generowania przerwań. Odmierzanie 1 sekundowych odcinków czasu poprzez zliczenie ilości przerwań Timera0

Program 3 Schemat połączenia diody LED do linii PB0 portu B mikrokontrolera +5V Przykład wykorzystania Timer0 do generowania przerwań.

Program 3 informuje kompilator o pliku dyrektyw mikrokontrolera oraz częstotliwości oscylatora konfiguracja linii PB0 jako wyjścia konfiguracja Timer0 jako jako timera z podziałem preskalera przez 256 przerwanie od przepełnienia Timer0 o etykiecie Odmierz_1s zmienna pomocnicza zliczająca odcinki czasu równe 8ms odblokowanie globalnego systemu przerwań odblokowanie przerwania od przepełnienia Timer0 wpisanie wartości początkowej 6 do Timer0 (256-250) Program główny początek i koniec pętli koniec programu początek podprogramu obsługi przerwania od przepełnienia Timer0 wpisanie wartości początkowej 6 do Timer0 (256-250) zwiększ o jeden wartość zmiennej pomocniczej Licz_8ms jeżeli wartość tej zmiennej równa 125 (125*8 ms = 1) to odliczono 1 sekundę zerowanie zmiennej licznikowej zmień na przeciwny stan linii Pb0 portu B koniec warunku If...Then powrót z przerwania

Program3 Przebadanie zależności czasowych podczas rzeczywistej pracy mikrokontrolera realizującego program3. Odmierzanie 1 sekundowych odcinków czasu poprzez zliczenie ilości przerwań Timera0 RS232 do komputera PC

Timer1 16 bitowy Licznik TIMER1 jest 16 bitowy i może zliczać impulsy zegara taktującego procesor doprowadzone do jego wejścia bezpośrednio lub przez prescaler (65536 impulsów). Może też z powodzeniem zliczać impulsy doprowadzone do jednej z końcówek portów

Timer1 Można: Dla naszego oscylatora kwarcowego Wpisywać zmienne do licznika lub je porównywać 8MHz T = 125ns 65536 0 1 2 3 Generowanie przerwań Prescaler Dzielnik częstotliwości Licznik do 65536 przez 1 8 64 256 Dla 8MHz 65535 impulsów to czas t = 125ns * 65536 = 8.192ms 1024 OC1A W wyniku porównania zmieniany jest stan odpowiednich wyjść OC1A (PB1) lub OC1B(PB2) Port PB1 OC1B Port PB2)

Timer1 czasomierz - licznik Konfiguracja jako licznik: Konfiguracja jako czasomierz: Config Timer1 = Timer, Prescale = 1 8 64 256 1024 0 1 Config Timer1 = Counter, Prescale = 1 8 64 256 1024 Edge = Rising Falling, Noise Cancel=0 1 Capture Edge = Rising Falling Compare A = Clear Set Toggle Disconnect Compare B = Clear Set Toggle Disconnect Clear Timer = 1 0, 0 1

Timer1 Generatorów impulsów o regulowanym wypełnieniu Pulse Widht Modulation PWM Konfiguracja jako PWM: Config Timer1 = PWM, Prescale = 1 8 64 256 1024, PWM = 8 9 10, Compare A PWM = Clear Up Clear Down Disconnect Compare B PWM = Clear Up Clear Down Disconnect zmienne Pwm1a, Pwm1b

Wykorzystamy Timer1 do generowania sygnału PWM Sygnał PWM ma przebieg prostokątny o zmiennym wypełnieniu. Wypełnienie może być zmieniane od 0 do 100%. Przy wypełnieniu 50% otrzymuje się symetryczny przebieg prostokątny (poziom wysoki 1 trwa tak długo jak poziom niski 0 ). Wypełnienie Wyp. < 50% Wyp. = 50% Wyp. > 50% Częstotliwości

Wykorzystamy Timer1 do generowania sygnału PWM Uwaga: Celem ćwiczenia będzie generowanie przebiegu prostokątnego PWM o różnym wypełnieniu i częstotliwości. Każdy w grupie będzie musiał zaprogramować Timer1 aby generował określony sygnał PWM. Parametry sygnału dla każdej osoby w grupie podane są w tabeli:

Timer1 PWM Ustawiamy kierunek zliczania licznika a tym samym kierunek wypełnienia impulsu: Compare A PWM = Clear Up Clear Down Disconnect Dla naszego oscylatora kwarcowego Ustawiamy rozdzielczość licznika: 8,9,10 bitowy PWM = 8 9 10 8MHz T = 125ns Prescaler Dzielnik częstotliwości przez 1 8 64 256 Licznik do 255,511,1023 1024 OC1A W zależności od wartości zmiennej Pwm1a, Pwm1b na wyprowadzeniach OC1A (port PB1) lub OC1B (port PB2) generowany jest przebieg o różnym wypełnieniu OC1B

Jak regulować częstotliwość sygnału PWM Config Timer1 = PWM, Prescale = 1 8 64 256 1024, PWM = 8 9 10, Rozdzielczość PWM Wartość maksymalna licznika Częstotliwość sygnału PWM 8-bitów 255 fc/prescaler/510 9-bitów 511 fc/prescaler/1022 10-bitów 1023 fc/prescaler/2046 Wyp. < 50% Wyp. = 50% Wyp. > 50%

Jak regulować wypełnienie sygnału PWM Na przykład: Ustawiamy rozdzielczość licznika jako 8 bitowy f = 15.686274 khz Rozdzielczość PWM = 8 Prescaler = 1, T = 63,75 us Compare A PWM = Clear Down To daje częstotliwość sygnału PWM: 8MHz/1/510 = 15.686274 khz Wyp. 20% 0% Wyp. 0 Pwm1a 0 51 Pwm1a = 51 255

Jak regulować wypełnienie sygnału PWM Na przykład: Ustawiamy rozdzielczość licznika jako 8 bitowy f = 15.686274 khz PWM = 8 T = 63,75 us Prescaler = 1 Compare A PWM = Clear Down 8MHz/1/510 = 15.686274 khz Wyp. 50% Pwm1a = 127

Jak regulować wypełnienie sygnału PWM Na przykład: Ustawiamy rozdzielczość licznika jako 8 bitowy f = 15.686274 khz PWM = 8 T = 63,75 us Prescaler = 1 Compare A PWM = Clear Down 8MHz/1/510 = 15.686274 khz Wyp. 80% Pwm1a 255 Pwm1a = 204 to Wyp. 100%

Jak regulować wypełnienie sygnału PWM Rozdzielczość PWM Wartość maksymalna licznika Wypełnienie PWM 8-bitów 255 255 x - 100% - 10% x= 9-bitów 511 511 x - 100% - 10% x= 10-bitów 1023 1023 x - 100% - 10% x=

Jak regulować wypełnienie sygnału PWM f = 15.686274 khz Dla parametru T = 63,75 us Compare A PWM = Clear Down Wypełnienie generowanego przebiegu na wyjściu OC1A Clear Down Wyp. 20% Wpisanie do zmiennej Pwm1a = 51 0 255 51 Dla parametru f = 15.686274 khz Compare A PWM = Clear Up T = 63,75 us Wypełnienie generowanego przebiegu na wyjściu OC1A Wyp. Clear Up 80% Wpisanie do zmiennej Pwm1a = 51 0 51 255

Jak regulować wypełnienie sygnału PWM Dla parametru Dla parametru Compare A PWM = Clear Up Compare A PWM = Clear Down Wypełnienie generowanego przebiegu na OC1A będzie tym mniejsze, im większa wartość jest wpisana do zmiennej Wypełnienie generowanego przebiegu na OC1A będzie tym większa im większa wartość jest wpisana do zmiennej Pwma1a Pwma1a Wyp. > 50% Wpisanie do zmiennej Pwm1a = 10 Wpisanie do zmiennej Pwm1a = 250 Wpisanie do zmiennej Pwm1a = 127 (polowa 256) Wpisanie do zmiennej Pwm1a = 127 (polowa 256) Wpisanie do zmiennej Pwm1a = 250 Wpisanie do zmiennej Pwm1a = 10 Wyp. < 50% Wzrost wypełnienia Wyp. = 50%

Program 4 Zaprogramowanie sygnału PWM o określonej częstotliwości i wypełnieniu

Testowanie Timer1 do generowania sygnału PWM

Program 4 informuje kompilator o pliku dyrektyw mikrokontrolera informuje kompilator o częstotliwości oscylatora taktującego mikrokontroler linia PB1jako wyjście konfiguracja Timer1 jako generatora sygnału PWM na wyjściu OC1A wpisanie do zmiennej Pwm1a wartości 10 określającej wypełnienie sygnału na wyjściu OC1A koniec programu

Program 5 Program sterowania jasnością dwóch diod LED za pomocą sygnału PWM Rozdzielczość sygnałów PWM 8 bitów Częstotliwość sygnału PWM ok. 15,6 khz

Program 5 Schemat połączenia diod LED do linii PB1 i PB2 portu B mikrokontrolera Program sterowania jasnością dwóch diod LED za pomocą sygnału PWM

Program 5 informuje kompilator o pliku dyrektyw mikrokontrolera informuje kompilator o częstotliwości oscylatora taktującego mikrokontroler linia PB1, PB2 jako wyjścia konfiguracja Timer1 jako generatora dwóch sygnałów PWM na wyjściach OC1A i OC1B zmienna licznikowa dla pętli For...Next początek pętli pętla wykonywana 256 razy wpisanie do zmiennej Pwm1a wartości I określającej wypełnienie sygnału na wyjściu OC1A czekaj 4 ms pętla wykonywana 256 razy zmniejszająca o 1 wartość I koniec pętli głównej programu koniec programu

Program 5 Przebadanie zależności czasowych podczas rzeczywistej pracy mikrokontrolera realizującego program5 RS232 do komputera PC

Program 5 Przebadanie zależności czasowych sygnału PWM podczas rzeczywistej pracy mikrokontrolera realizującego program5

Do czego można wykorzystać sygnał PWM Schemat układu sterowania jasności świecenia żarówki samochodowej o napięci 12V za pomocą sygnału PWM

Do czego można wykorzystać sygnał PWM Schemat układu sterowania jasnością podświetlania wyświetlacza LCD za pomocą sygnału PWM

Na koniec Program 5a dodatkowy Zastosowanie sygnału PWM w przetworniku C/A

Program 5a Zastosowanie sygnału PWM w przetworniku C/A

Program 5a Zastosowanie sygnału PWM w przetworniku C/A

Symulacja programowa Jest możliwa ale nie daje prawidłowych rezultatów