LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Podobne dokumenty
LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

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

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

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

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Obsługa wyjść PWM w mikrokontrolerach Atmega16-32

SYSTEM PRZERWAŃ ATmega 32

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

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

LABORATORIUM. TIMERY w mikrokontrolerach MCS 51

Podstawy Techniki Mikroprocesorowej Laboratorium

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

Układy czasowe / liczniki (timers/counters)

Omówimy przykłady 8-mio bitowego licznika z wyposażenia ADuC812 (CISC 51) oraz mikrokontrolera ATMega128 należącego do rodziny AVR.

Przerwanie. Źródła przerwań

Metody obsługi zdarzeń

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

Układy czasowo-licznikowe w systemach mikroprocesorowych

Timery w mikrokontrolerach STM32F3

Programowanie mikrokontrolerów. 5 grudnia 2007

Mikrokontrolery AVR Wprowadzenie

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

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Programowanie mikrokontrolerów. 3 stycznia 2008

Porty GPIO w mikrokontrolerach STM32F3

Przerwania, polling, timery - wykład 9

długo. W tym celu w czasie przeczesywania if (key) {

Układy czasowo-licznikowe w systemach mikroprocesorowych

2. Architektura mikrokontrolerów PIC16F8x... 13

Instytut Teleinformatyki

Komunikacja w mikrokontrolerach Laboratorium

Politechnika Białostocka

Instytut Teleinformatyki

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

Komunikacja w mikrokontrolerach Laboratorium

równoległe (w wersji 4-, 8- i 16-bitowej). Same wyświetlacze ze względu na budowę i możliwości możemy podzielić na dwie grupy:

Programowany układ czasowy

Programowany układ czasowy APSC

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

Komunikacja w mikrokontrolerach Laboratorium

SYSTEM PRZERWA Ń MCS 51

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Wstęp Architektura... 13

Programowanie mikrokontrolerów AVR z rodziny ATmega.

MIKROKONTROLERY I MIKROPROCESORY

LABORATORIUM UKŁADY STYKOWE ZL3AVR

był w momencie wystąpienia zewnętrznego zdarzenia. Jest bardzo przydatna przy pomiarach częstotliwości. Pracę timera Timer1 kontrolują następujące

Dokumentacja mikrokontrolera Atmega16 firmy Atmel

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

Politechnika Białostocka

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

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

Komunikacja w mikrokontrolerach Laboratorium

Instytut Teleinformatyki

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

Wbudowane układy komunikacyjne cz. 1 Wykład 10

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM

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

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

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

Ćw. 7: Układy sekwencyjne

Mikroprocesory i Mikrosterowniki Laboratorium

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

Wprowadzenie do podstaw programowania AVR (na przykładzie mikrokontrolera ATmega 16 / 32)

Elektronika samochodowa (Kod: ES1C )

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

Opis układów wykorzystanych w aplikacji

Hardware mikrokontrolera X51

Stanowisko laboratoryjne dla mikrokontrolera Atmega16 firmy Atmel

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Technika Mikroprocesorowa

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

PROGRAMOWALNE SYSTEMY MECHATRONIKI

Mikroprocesory i Mikrosterowniki

Instytut Teleinformatyki

Politechnika Białostocka

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

Politechnika Białostocka

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

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

Programowanie w językach asemblera i C

Mikrokontrolery AVR techniczne aspekty programowania

Komunikacja w mikrokontrolerach. Wydział Elektroniki Mikrosystemów i Fotoniki Piotr Markowski

MIKROPROCESORY architektura i programowanie

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

Instrukcja pomocnicza TELMATIK do licznika / timera H8DA

Technika Cyfrowa. Badanie pamięci

ŚRODOWISKO PROTOTYPOWANIA SP AVR

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

Instytut Teleinformatyki

Układy zegarowe w systemie mikroprocesorowym

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

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

Przetworniki analogowo-cyfrowe (A/C)

Expandery wejść MCP23S17 oraz MCP23017

Przetworniki analogowo - cyfrowe CELE ĆWICZEŃ PODSTAWY TEORETYCZNE Zasada pracy przetwornika A/C

Charakterystyka mikrokontrolerów. Przygotowali: Łukasz Glapiński, Mateusz Kocur, Adam Kokot,

Modelowanie liczników w języku Verilog i ich implementacja w strukturze FPGA

Transkrypt:

Zachodniopomorski Uniwersytet Technologiczny WYDZIAŁ ELEKTRYCZNY Katedra Inżynierii Systemów, Sygnałów i Elektroniki LABORATORIUM TECHNIKA MIKROPROCESOROWA TIMERY w mikrokontrolerach Atmega16-32 Opracował: mgr inż. Andrzej Biedka

Czasomierz/licznik (ang. Timer/Counter) jest jednym z podstawowych elementów wyposażenia mikrokontrolera. Schemat podstawowej struktury timera przedstawia rysunek 2-1. f clk preskaler /n (f clk )/n Zapis/Odczyt2 (sygnał CU) Wejście impulsów zewnętrznych Zapis/Odczyt1 (sygnał CU) S1 S2 licznik / czasomierz start / stop Rejestr sterujący We Licznik binarny n-bitowy przepełnienie Magistrala danych Rys. 2-1. Schemat blokowy timera w mikrokontrolerze Timer składa się z programowanego licznika binarnego oraz współpracującego z nim rejestru sterującego. Zarówno licznik jak i rejestr sterujący są przyłączone do wewnętrznej magistrali danych, dzięki czemu jednostka sterująca mikrokontrolera (CU) może w dowolnym momencie modyfikować lub odczytać ich zawartość. Licznik binarny najczęściej zlicza w górę dodaje impulsy podawane na wejście. Impulsy wejściowe są bramkowane (załączane) łącznikiem S2 sterowanym sygnałem start/stop, pochodzącym z rejestru sterującego. Źródłem impulsów zliczanych może być: - wewnętrzny układ dzielnika częstotliwości sygnału taktującego pracę jednostki centralnej - f clk, tzw. preskalera. W takim przypadku, wobec wzorcowej długości czasu impulsu zliczanego pochodzącego najczęściej z generatora stabilizowanego rezonatorem kwarcowym, mówimy o funkcji czasomierza lub z języka angielskiego timera. Funkcja odpowiada górnemu położeniu przełącznika S1. Preskaler może być dzielnikiem programowanym, wówczas będzie przyłączony do magistrali danych. - wyprowadzenie mikrokontrolera (ang. pin), na który można przyłączyć sygnał pochodzący z zewnątrz. Wówczas urządzenie pełni funkcję licznika (ang. counter). Funkcja odpowiada dolnemu położeniu przełącznika S1. Sygnałem wyjściowym może być stan licznika lub częściej jego przepełnienie sygnalizowane zmianą stanu jednego z bitów rejestru sterującego. Dodatkowo przepełnienie licznika binarnego może wywołać stan przerwania. Należy zaznaczyć, że z uwagi na stosowanie w układach mikrokontrolerów kilku zespołów timerów (mogących pracować niezależnie lub w niektórych konfiguracjach wspólnie), rejestr sterujący jest zbudowany z kilku rejestrów 8-bitowych. Istotą pracy timera/licznika jest jego autonomiczność, czyli praca niezależna od programu głównego. Niezależność dotyczy zliczania impulsów, gdyż oczywiście sterowanie pracą timera/licznika odbywa się programowo. 2

Nowoczesne mikrokontrolery zawierają moduły czasomierzy/liczników o bardzo rozbudowanych funkcjach, np.: generatora PWM często wielokanałowego, generatora taktującego o programowanej częstotliwości, licznika zdarzeń zewnętrznych. Schemat blokowy timera 8-bitowego (Timer0, Timer2) wbudowanego do struktury mikrokontrolerów rodziny Atmega przedstawia poniższy rysunek. magistrala danych CSn Tn pin Wybór zbocza CLK Tn OCRn Output Compare Register WGMn COMn Z preskalera = WFGn Waveform Generator OCn pin TCCRn, TIFR Sterowanie TCNTn Timer Counter Register TOVn Int. magistrala danych Rys. 2-2 Schemat blokowy timera 8-bitowego mikrokontrolerów rodziny Atmega Podstawowym rejestrem czasomierza/licznika jest rejestr TCNTn, gdzie n oznacza numer timera w mikrokontrolerze. Impulsy zliczane w rejestrze mogą pochodzić z zewnątrz mikrokontrolera (dostarczane są przez wyprowadzenie (ang. pin) oznaczane Tn) lub z wstępnego dzielnika częstotliwości (ang. prescaler), dzielącego przebieg zegarowy mikrokontrolera przez wybrany stopień podziału. Rejestr zlicza impulsy zwiększając swój stan w zakresie 0 255. Kolejny impuls powoduje przepełnienie rejestru TCNTn sygnalizowane ustawieniem bitu TOVn. Może być ono też źródłem przerwania. Po przepełnieniu stan rejestru równy jest 0. Tryby pracy licznika/czasomierza timera 8-bitowego (na przykładzie Timera0) opisane są w poniższych tabelach: Tabela 2-1 Tryby pracy timera 8-bitowego (Timer0) mikrokontrolerów ATmega Tryb Opis trybu WGM01 WGM00 Maksymalna wartość osiągana w cyklu pracy timera 0 Normalny 0 0 0xFF 1 PWM, faza poprawna 0 1 0xFF 2 CTC 1 0 OCR0 3 PWM szybki 1 1 0xFF Wykorzystanie wyjścia OC0 (ang. Output Compare 0) jest uzależnione od bitów COM01, COM00 znajdujących się w rejestrze TCCR0. 3

Tabela 2-2 Sposób pracy wyjścia OC0 timera0 COM01 COM00 Tryb CTC Tryb Fast PWM 0 0 OC0 wyłączone, funkcja bitu portu OC0 wyłączone, funkcja bitu portu 0 1 Przełącz OC0 przy zrównaniu TCNT0 z OCR0 1 0 Zeruj OC0 przy zrównaniu TCNT0 z OCR0 1 1 Ustaw OC0 przy zrównaniu TCNT0 z OCR0 Rejestr sterujący TCCR0 zawiera następujące bity: Zarezerwowane Zeruj OC0 przy zrównaniu TCNT0 z OCR0, ustaw OC0 przy TCNT0 = 0 Ustaw OC0 przy zrównaniu TCNT0 z OCR0, zeruj OC0 przy TCNT0 = 0 FOC WGM00 COM01 COM00 WGM01 CS02 CS01 CS00 Opis znaczenia bitów rejestru TCCR0 FOC - wymuszenie stanu zgodności porównania TCNT0 i OCR0 WGM00, WGM01 - wybór trybu pracy czasomierza/licznika. Patrz tabela 2-1 COM01, COM00 - wybór trybu pracy wyjścia OC0. Patrz tabela 2-2 CS02-CS00 - wybór stopnia podziału preskalera.patrz tabela 2-3 W funkcji czasomierza (timera) niezbędne jest dostarczanie wzorcowych impulsów czasowych, które zliczane są w liczniku timera (TCNTn). Źródłem tych impulsów jest preskaler, czyli wstępny dzielnik częstotliwości głównego sygnału taktującego (sygnału zegarowego) mikrokontrolera. W mikrokontrolerach ATmega blok preskalera zbudowany jest z 10-bitowego licznika oraz multipleksera cyfrowego MPX, przekazującego na swoje wyjście sygnał z jednego z wejść (czyli wyjść licznika) wybieranego liniami adresowymi CSn2, CSn1, CSn0. Dzięki temu zliczane w timerze impulsy mają częstotliwość wybieraną w zakresie od f clk do f clk / 1024 oraz można wybrać polaryzację zewnętrznych impulsów zliczanych w funkcji licznika (counter). PSR10 CLK I/O CLK Reset CLK / 8 Licznik binarny 10-bitowy CLK / 64 CLK / 128 CLK / 1024 T0 pin Synchr. T1 pin Synchr. 0 0 CS10 CS11 CS12 0 7 0 7 CS00 MPX CS01 CS02 MPX CLK Zegar Timer/Licznik 1 CLK Zegar Timer/Licznik 0 Rys. 2-3 Schemat blokowy dzielników wstępnych (preskalerów) timerów 0 i 1 4

Tabela 2-3 Ustawienia bitów CS02 CS00 definiujące stopień podziału preskalerów. CS02 CS01 CS00 Opis 0 0 0 Zegar zablokowany 0 0 1 CLK I/O 0 1 0 CLK I/O / 8 0 1 1 CLK I/O / 64 1 0 0 CLK I/O / 256 1 0 1 CLK I/O / 1024 1 1 0 Zegar zewnętrzny T0, aktywne zbocze opadające 1 1 1 Zegar zewnętrzny T0, aktywne zbocze narastające CLK I/O - zegar taktujący układy wejścia/wyjścia o częstotliwości zgodnej z taktowaniem uc Rejestr flag TIFR zawiera bity (flagi) trzech timerów informujące o wystąpieniu stanu przepełnienia licznika TCNTn lub zrównaniu zawartości licznika TCNTn z zawartością odpowiedniaego rejestru OCRn: OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0 OCF0 TOV0 - flaga zgodności porównania TCNT0 i OCR0. Flaga jest kasowana przez wpisanie logicznej jedynki na jej pozycję. Przy przyjęciu przerwania flaga jest kasowana automatycznie. - flaga przepełnienia timera 0. Flaga jest kasowana przez wpisanie logicznej jedynki na jej pozycję. Przy przyjęciu przerwania flaga jest kasowana automatycznie. ZADANIA: 1. Na podstawie literatury zapoznać się z pracą czasomierza/licznika0 w trybach Normal, CTC i Fast PWM. 2. Ustalić dla każdego trybu pracy ustawienia rejestrów TCNT0 i OCR0 dla przykładowych wartości czasów odmierzanych przez czasomierz. 3. Zapoznać się z budową, działaniem i programowaniem pracy czasomierza/licznika1 mikrokontrolera ATmega 32. 5

Przykładowy program wykorzystujący timer będzie generatorem impulsów prostokątnych z obserwacją przebiegu na sygnalizatorze z dowolnymi diodami LED przyłączonymi do portu PORTB. Przyjmujemy częstotliwość przebiegu równą 1 Hz. Wykorzystany zostanie timer 0 w trybie Normal. Algorytm programu przedstawia poniższy rysunek: START INICJALIZACJA Neguj wybrane linie portu Ładuj czas Kasuj flagę TOV0 TOV0 = 1? N N T Koniec pętli for? T Rys. 2-4. Algorytm programu generatora przebiegu prostokątnego Listing programu napisanego na podstawie algorytmu przedstawiono poniżej. 6

/* Program generatora impulsów prostokatnych o czestotliwosci 1 Hz. Program wykorzystuje Timer0 pracujacy w trybie Normal Zegar uc = 11,0592 MHz. Czestotliwosc przebiegu taktujacego timer: 16,0 MHz / 1024 = 15,625 khz; okres = 64,0 us Maksymalny czas zliczany przez timer0 = 256 * 64,0 = 16,384 ms Minimalna krotnosc przepelnien timera: 500ms / 16,384 = 30,52, przyjmujemy 31 Dla uzyskania okresu 1 sek. przyjmujemy czas timera 500 ms / 31 = 16,129ms. Zatem timer musi zliczac: 16,129 ms / 64,0 us = 252 takty */ #include <avr/io.h> #define PortLED PORTB #define Czas20ms 256-252 int main(void) { DDRB = 0xFF; TCCR0 = (1 << CS02) (1 << CS00); // preskaler = 1024, while(1) // petla glowna { PortLED = PortLED ^ 3; // neguj wybrane bity uint8_t i; for(i = 0; i < 25; i++) // petla zliczaina 25 * 20 ms { TIFR = (1 << TOV0); // kasuj flage TCNT0 = Czas20ms; // ustaw czas while(~tifr & (1 << TOV0)); // czekaj na ustawienie flagi przepełnienia timera } } } ZADANIA: 4. Napisać program generatora przebiegu prostokątnego o parametrach przedstawionych na poniższym rysunku. Obserwacji przebiegu dokonać przy pomocy wybranej diody LED portu PORTB. 1sek. 60 msek. Rys. 2-5 5. Napisać program generatora przebiegu prostokątnego o parametrach przedstawionych na rysunku 2-5 z wykorzystaniem timera 0 pracującego w trybie CTC. 6. Napisać program generatora przebiegu prostokątnego o parametrach przedstawionych na rysunku 2-5 z wykorzystaniem timera 0 i timera 1. Literatura: Francuz T. Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji. Helion, Gliwice, 2011 Baranowski R. Mikrokontrolery AVR ATmega w praktyce. BTC, Warszawa, 2005 Kardaś M. Mikrokontrolery AVR. Język C. Podstawy programowania. Atnel, Szczecin, 2011. Witkowski A. Mikrokontrolery AVR. Programowanie w języku C. Przykłady zastosowań, PKJS, Katowice 2006 Karta katalogowa mikrokontrolera Atmega32 firmy ATMEL. 7