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

LABORATORIUM. TIMERY w mikrokontrolerach MCS 51

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

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

Podstawy Techniki Mikroprocesorowej Laboratorium

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

Programowanie mikrokontrolerów. 5 grudnia 2007

Układy czasowo-licznikowe w systemach mikroprocesorowych

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Timery w mikrokontrolerach STM32F3

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

Programowanie mikrokontrolerów. 3 stycznia 2008

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Mikrokontrolery AVR Wprowadzenie

Przerwania, polling, timery - wykład 9

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

Porty GPIO w mikrokontrolerach STM32F3

Instytut Teleinformatyki

Układy czasowo-licznikowe w systemach mikroprocesorowych

Politechnika Białostocka

Instytut Teleinformatyki

2. Architektura mikrokontrolerów PIC16F8x... 13

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:

Programowanie mikrokontrolerów AVR z rodziny ATmega.

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

Komunikacja w mikrokontrolerach Laboratorium

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

SYSTEM PRZERWA Ń MCS 51

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

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

Komunikacja w mikrokontrolerach Laboratorium

Dokumentacja mikrokontrolera Atmega16 firmy Atmel

Komunikacja w mikrokontrolerach Laboratorium

Programowany układ czasowy

LABORATORIUM UKŁADY STYKOWE ZL3AVR

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

Wstęp Architektura... 13

Instytut Teleinformatyki

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

Programowany układ czasowy APSC

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

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

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

Politechnika Białostocka

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

MIKROKONTROLERY I MIKROPROCESORY

Elektronika samochodowa (Kod: ES1C )

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

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

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

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

Ćw. 7: Układy sekwencyjne

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Stanowisko laboratoryjne dla mikrokontrolera Atmega16 firmy Atmel

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

PROGRAMOWALNE SYSTEMY MECHATRONIKI

Mikroprocesory i Mikrosterowniki Laboratorium

Hardware mikrokontrolera X51

Układy zegarowe w systemie mikroprocesorowym

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

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

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

Opis układów wykorzystanych w aplikacji

Mikroprocesory i Mikrosterowniki

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

Instytut Teleinformatyki

Politechnika Białostocka

ŚRODOWISKO PROTOTYPOWANIA SP AVR

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

Instytut Teleinformatyki

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

Politechnika Białostocka

Programowanie w językach asemblera i C

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

Zewnętrzne układy peryferyjne cz. 1 Wykład 12

Technika Mikroprocesorowa

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

Programowanie mikrokontrolerów 2.0

LOW ENERGY TIMER, BURTC

MIKROPROCESORY architektura i programowanie

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

Programowanie mikrokontrolerów 2.0

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

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

Instrukcja pomocnicza TELMATIK do licznika / timera H8DA

Cel. Poznanie zasady działania i budowy liczników zliczających ustaloną liczbę impulsów. Poznanie kodów BCD, 8421 i Rys. 9.1.

Urządzenia peryferyjne procesora ColdFire

WYKORZYSTANIE WEWNĘTRZNYCH GENERATORÓW RC DO TAKTOWANIA MIKROKONTROLERÓW AVR

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) wbudowanego do struktury mikrokontrolerów rodziny Atmega przedstawia rysunek 2-2. CSn magistrala danych Tn pin Wybór zbocza OCRn Output Compare Register WGMn COMn Z preskalera = WFGn Waveform Generator OCn pin CLK Tn TCCRn, TIFR Sterowanie TOVn TCNTn Timer Counter Register Rys. 2-2 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. Licznik/czasomierz0 może pracować w czterech trybach: Tabela 2-1 Int. magistrala danych 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 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 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 Rejestr sterujący TCCR0 zawiera następujące bity: FOC WGM00 COM01 COM00 WGM01 CS02 CS01 CS00 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 Schemat blokowy dzielników wstępnych (preskalerów) czasomierzy 0 i 1 przedstawiony jest na rysunku 2-3. 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 4

Ustawienia bitów CS02 CS00 definiujące stopień podziału preskalerów przedstawia tabela 2-3. Tabela 2-3 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 następujące flagi trzech timerów: 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 TCCR0, 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 pętla for: pętla krotności przepełnień timera Rys. 2-4. Algorytm programu generatora przebiegu prostokątnego Listing programu napisanego na podstawie algorytmu przedstawiono poniżej. 6

/* Listing 2-1 Program generatora impulsów prostokatnych o czestotliwosci 1 Hz. Program wykorzystuje Timer0 pracujacy w trybie Normal Zegar uc = 16,0 MHz, preskaler = 1024 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 CzasTim0 256-252 int main(void) { DDRB = 0xFF; // PORTB ustaw na wyjscie TCCR0 = (1 << CS02) (1 << CS00); // preskaler = 1024, while(1) // petla glowna { PortLED ^= 3; // neguj wybrane bity uint8_t i; for(i = 0; i < 31; i++) // petla zliczania 31 * 16,129 ms { TIFR = (1 << TOV0); // kasuj flage TCNT0 = CzasTim0; // ustaw czas while(~tifr & (1 << TOV0)); // czekaj na ustawienie flagi } } } ZADANIA: 4. Zmodyfikować program z listingu 2-1 wykorzystując tryb CTC timera0. 60 msek. 1sek. 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. 7

Literatura: [1] Francuz T. Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji. Helion, Gliwice, 2011 [2] Baranowski R. Mikrokontrolery AVR ATmega w praktyce. BTC, Warszawa, 2005 [3] Kardaś M. Mikrokontrolery AVR. Język C. Podstawy programowania. Atnel, Szczecin, 2011. [4] Witkowski A. Mikrokontrolery AVR. Programowanie w języku C. Przykłady zastosowań, PKJS, Katowice 2006 [5] Karta katalogowa mikrokontrolera Atmega32 firmy ATMEL. 8