TECHNIKA MIKROPROCESOROWA II

Podobne dokumenty
TECHNIKA MIKROPROCESOROWA II

TECHNIKA MIKROPROCESOROWA II

TECHNIKA MIKROPROCESOROWA II

TECHNIKA MIKROPROCESOROWA II

TECHNIKA MIKROPROCESOROWA II

Instytut Teleinformatyki

TECHNIKA MIKROPROCESOROWA II

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

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

LOW ENERGY TIMER, BURTC

start Program mikroprocesorowego miernika mocy generowanej $crystal = deklaracja

Metody obsługi zdarzeń

Laboratorium mikrokontrolerów

CW-HC08 Programowanie mikrokontrolera MC9S08QD4 [2]

1 Badanie aplikacji timera 555

Electronic Infosystems

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

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

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

Instytut Teleinformatyki

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

TECHNIKA MIKROPROCESOROWA II

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

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

LABORATORIUM PRZEMYSŁOWYCH SYSTEMÓW STEROWANIA

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

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

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

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

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Zmierzyć się z żywiołami, czyli jak zbudować własną stację badawczą! Zaczynamy! Pole komunikatów programu. Nawigacja w programie Arduino

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

Technika mikroprocesorowa. Konsola do gier

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

LABORATORIUM - ELEKTRONIKI Układy mikroprocesorowe cz.2

Programowanie mikrokontrolerów AVR z rodziny ATmega.

CW-HC08 Programowanie mikrokontrolera MC9S08QD4

Przerwania, polling, timery - wykład 9

MultiTool instrukcja użytkownika 2010 SFAR

2. Architektura mikrokontrolerów PIC16F8x... 13

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

SYSTEM PRZERWAŃ ATmega 32

LICZNIKI LABORATORIUM. Elektronika AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE. Wydział Informatyki, Elektroniki i Telekomunikacji

Timery w mikrokontrolerach STM32F3

Wykład 2. Przegląd mikrokontrolerów 8-bit: -AVR -PIC

PROJECT OF FM TUNER WITH GESTURE CONTROL PROJEKT TUNERA FM STEROWANEGO GESTAMI

Laboratorium Procesorów Sygnałowych

Państwowa Wyższa Szkoła Zawodowa

INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

Szkolenia specjalistyczne

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Pracownia Transmisji Danych, Instytut Fizyki UMK, Toruń. Instrukcja do ćwiczenia nr 10. Transmisja szeregowa sieciami energetycznymi

AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE. Wydział Informatyki, Elektroniki i Telekomunikacji LABORATORIUM.

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH. PROCESORY OSADZONE kod kursu: ETD 7211 SEMESTR ZIMOWY 2017

Ćwiczenie Konfiguracja statycznych oraz domyślnych tras routingu IPv4

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1

Metody pracy i praktyczne zastosowanie mikrokontrolera MCF5234

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

Ćwiczenia z S Komunikacja S z miernikiem parametrów sieci PAC 3200 za pośrednictwem protokołu Modbus/TCP.

INSTRUKCJA UŻYTKOWNIKA MPCC

Instytut Teleinformatyki

1.1. Wymogi bezpieczeństwa Pomoc techniczna TIA Portal V13 instalacja i konfiguracja pakietu...18

Układy czasowo-licznikowe w systemach mikroprocesorowych

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

Podstawy techniki mikroprocesorowej

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

Obługa czujników do robota śledzącego linie. Michał Wendland czerwca 2011

Parametryzacja przetworników analogowocyfrowych

Podstawy programowania sterowników SIMATIC S w języku LAD / Tomasz Gilewski. Legionowo, cop Spis treści

Przystawka oscyloskopowa z analizatorem stanów logicznych. Seria DSO-29xxA&B. Skrócona instrukcja użytkownika

INSTRUKCJA OBSŁUGI. Sterownik bezprzewodowy model RM05. Przed uruchomieniem urządzenia należy uważnie zapoznać się z instrukcją obsługi.

Konfiguracja i programowanie sterownika GE Fanuc VersaMax z modelem procesu przepływów i mieszania cieczy

Licznik rewersyjny MD100 rev. 2.48

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

Laboratorium Analogowych Układów Elektronicznych Laboratorium 6

Politechnika Śląska w Gliwicach

Wyniki (prawie)końcowe - Elektroniczne warcaby

Układy czasowo-licznikowe w systemach mikroprocesorowych

Pomoc do programu ISO Manager

LABORATORIUM ENERGOOSZCZĘDNEGO BUDYNKU

Programator procesorów rodziny AVR AVR-T910

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Instrukcja wgrywania aktualizacji oprogramowania dla routera Edimax LT-6408n

Symulacje inwertera CMOS

Generator funkcyjny. Spis treści. Działanie. Interfejs. Adam Miarka Maksymilian Szczepanik

Programowanie mikrokontrolerów 2.0

PLUTO Sterownik bezpieczeństwa Skrócona Instrukcja obsługi oprogramowania. PlutoProgrammingManualPL_v7A.pdf 1

Programowanie sterowników

Konfiguracja i programowanie sterownika GE Fanuc VersaMax z modelem procesu przepływów i mieszania cieczy. Przebieg ćwiczenia

Hardware mikrokontrolera X51

Sprzęt i architektura komputerów

Modulatory PWM CELE ĆWICZEŃ PODSTAWY TEORETYCZNE

Standardowe bloki funkcjonalne

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

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

LABORATORIUM PRZEMYSŁOWYCH SYSTEMÓW STEROWANIA

Temat: Projektowanie i badanie liczników synchronicznych i asynchronicznych. Wstęp:

Katedra Inżynierii Systemów Sterowania WEiA PG. Przemysłowe Sieci Informatyczne Laboratorium

Transkrypt:

Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie Wydział IEiT Katedra Elektroniki TECHNIKA MIKROPROCESOROWA II LAB 4 Timery Michał Karwatowski http://www.fpga.agh.edu.pl/upt2 05.11.2014

WSTĘP CEL Celem tego ćwiczenia, jest zaznajomienie uczestników z timerami dostępnymi w mikrokontrolerze Kinetis L 46Z. Dla przykładu pokazane zostaną niektóre możliwości modułów Periodic Interrupt Timer (PIT) i Timer/PWM (TPM). Zdobyta wiedza zostanie użyta do napisania sterownika sonaru. WYMAGANIA WSTĘPNE Sprzętowe: komputer klasy PC spełniający wymagania sprzętowe aplikacji KEIL v5, zestaw FRDM-KL46Z moduł sonaru HC-SR04 Programowe: system operacyjny Windows XP lub wyższy, środowisko Keil / uvision 5 Doświadczenie: podstawowa umiejętność obsługi komputera klasy PC, podstawowa znajomość systemów operacyjnych rodziny Windows, podstawowa znajomość zagadnień z Techniki Mikroprocesorowej 1, podstawowa znajomość zagadnień z Techniki Cyfrowej, wykonane ćwiczenie LAB 1-3 Literatura: KL46 Sub-Family Reference Manual, Freescale Semiconductor Kinetis L Peripheral Module Quick Reference, Freescale Semiconductor HC-SR04 datasheet

KL46Z TIMERY I ZASOBY ZEGAROWE PERIODIC INTERRUPT TIMER (PIT) Diagram blokowy periodycznego timera przerwań znajduje się na rysunku nr 1. Rysunek 1. Periodyczny timer przerwań zawiera zestaw timerów, każdy z nich może niezależnie być źródłem przerwania lub wyzwalaczem kanału DMA. Główne właściwości modułu: Generowanie impulsów wyzwalających DMA Generowanie przerwań Maskowalne przerwania Niezależne okresy dla każdego timera.

TIMER/PWM MODULE (TPM) Podstawowa struktura modułu TPM przedstawiona jest na rysunku 2. Rysunek 2. Moduł TPM pochodzi od dobrze znanego modułu TIM z rodziny HC08. Jego główne cechy to: Do 6 kanałów na moduł o Każdy kanał może działać, jako zatrzaśnięcie wejścia, porównanie wyjścia oraz PWM o Wyzwalanie zatrzaśnięcia wejścia ze zbocza opadającego, narastającego albo obydwu zboczy o Ustawienie, wyczyszczenie, zmiana, lub impuls w trybie porównania wyjścia o PWM o zmiennej polaryzacji Każdy TPM może być skonfigurowany, jako buforowany, wyrównany do środka modulator szerokości impulsu na każdym kanale Źródło zegarowe dla preskalera jest niezależnie wybierane pomiędzy zegarem magistrali, zegarem systemowym albo zewnętrznym o Preskaler może dzielić sygnał zegarowy przez 1, 2, 4, 8, 16, 32, 64, lub 128 o Zewnętrze wejście zegarowe 16-bit owy licznik, zliczający w górę lub w dół (CPWM) 16-bit owy rejestr modulo do ustalania okresu Każdy kanał TPM może generować przerwanie

Multipurpose Clock Generator (MCG) Rysunek 3. Zegary systemowe są dostarczane przez wielozadaniowy generator zegara. MCG składa się z: Dwóch niezależnych wewnętrznych zegarów referencyjnych (IRC), wolny zegar o częstotliwości około 32 khz i szybki o częstotliwości około 4 MHz, każdy z nich może zostać podzielony przez moduł FCRDIV Pętla FLL, używająca zegara IRC albo zewnętrznego źródła Pętla PLL używająca zewnętrznego źródła, jako zegara referencyjnego Auto trim machine (ATM) pozwalająca dostosować oba zegary RC do zadanej częstotliwości używając zewnętrznego źródła zegara referencyjnego Podsumowanie zegarów udostępnianych przez MCG: MCGOUTCLK główny zegar systemowy, używany do generacji zegara rdzenia, magistrali i pamięci. Może zostać wygenerowany z jednego z wewnętrznych oscylatorów, zewnętrznego kwarcu, zewnętrznej fali prostokątnej, FLL lub PLL. MCGFLLCLK wyjście pętli FLL, dostępne zawsze gdy pętla jest aktywna. MCGPLLCLK wyjście pętli PLL, dostępne zawsze gdy pętla jest aktywna.

MCGIRCLK wyjście wybranego oscylatora wewnętrznego. Dodatkowo dostępne są następujące źródła sygnału zegarowego, dostępne dla różnych modułów peryferyjnych: OSCERCLK zegara zewnętrznego kwarcu ERCLK32K wyjście tego zegara może zostać skonfigurowane, jako 32kHz, zewnętrzy sygnał RTC_CLKIN, albo oscylator niskomocowy LPO. LPO wyjście niskomocowego oscylatora. Jest to wewnętrzny bardzo nisko mocowy oscylator o częstotliwości około 1 khz, może on pracować we wszystkich trybach uśpienia oprócz VLLS0.

1. PERIODIC INTERRUPT TIMER Wykonaj poniższe kroki, aby napisać aplikację opartą na module PIT. W razie potrzeby poszukaj odpowiedzi w reference manualu luba zapytaj prowadzącego. Nie zapomnij napisać komentarza przy każdej istotnej linijce kodu! 1.1. Stwórz nowy projekt w swoim folderze roboczym. Przygotuj go do pracy z płytką FRDM-KL46Z tak samo jak w poprzednich instrukcjach. Stwórz plik źródłowy main.c w folderze src. 1.2. Skopiuj pliki *.c i *.h bibliotek LED i slcd stworzonych na wcześniejszych zajęciach do folderu projektu. W środowisku Keil uvision naciśnij prawym przyciskiem myszy na src i wybierz opcję 'Add existing files to Group src. 1.3. Stwórz pliki pit.h i pit.c w folderze src. 1.4. W pliku pit.h załącz plik nagłówkowy 'MKL46Z4.h' i deklarację funkcji inicjalizującej. 1.5. Napisz kod funkcji inicjalizującej w pliku pit.c, powinna ona zawierać następujące kroki: Inicjalizacja LED. Podłączenie zegara do modułu PIT, w taki sam sposób jak we wcześniejszych instrukcjach.

1.6. Zmień ustawienia zegara taka by zegarem referencyjnym dla modułu MCG był zewnętrzny kwarc 8MHz. Można to zrobić w pliku System_MKL46Z4.c używając definicji CLOCK_SETUP. Zauważ, że źródłem zegara dla modułu PIT jest zegar magistrali, ma on częstotliwość 24MHz gdy używamy zewnętrznego kwarcu jako odniesienia. 1.7. Ustaw okres dla jednego kanału PIT w funkcji inicjalizującej, np.: PIT->CHANNEL[X].LDVAL = 0x123456; 1.8. Znajdź numer przerwania od modułu PIT w podobny sposób jak na poprzednich laboratoriach. 1.9. Zainicjalizuj przerwania NVIC dla modułu PIT: wyczyść czekające przerwanie i uruchom przerwanie o odpowiednim numerze. 1.10. Włącz przerwanie modułu PIT dla wybranego kanału. 1.11. Uruchom timer dla wybranego kanału. 1.12. Uruchom moduł PIT: PIT->MCR = 0x00; 1.13. Znajdź nazwę ISR modułu PIT, w taki sam sposób jak w poprzedniej instrukcji i zdefiniuj funkcję przerwania w pliku pit.c. 1.14. Napisz kod przerwania: Zaimplementuj zmianę stanu diody LED. Nie zapomnij wyczyścić flagi przerwania. 1.15. Dodaj funkcję inicjalizującą PIT do funkcji main(). 1.16. Dodaj pętlę nieskończoną do funkcji main(). 1.17. Skompiluj kod, wyeliminuj wszystkie błędy i ostrzeżenia, a następnie załaduj do mikrokontrolera I zweryfikuj poprawność działania. 1.18. Następnie w funkcji inicjalizującej PIT wywołaj funkcję inicjalizującą LCD. 1.19. Skonfiguruj kolejny kanał timera PIT tak samo jak w przypadku poprzedniego i ustaw go na inną częstotliwość. 1.20. W funkcji obsługi przerwania sprawdź który kanał je wywołał. 1.21. Zmodyfikuj kod tak, aby zmieniał stan diody LED dla jednego przerwania i inkrementował licznik wyświetlany na LCD dla drugiego. 1.22. Załaduj program i zweryfikuj poprawność działania. 1.23. Zmień okres timera PIT tak, aby przerwanie wywoływane było co 100ms I dodaj kropkę na wyświetlaczu tak, aby otrzymać wartość w sekundach. 1.24. Załaduj program i zweryfikuj poprawność działania.

2. MODUŁ TIMER/PWM 2.1. Stwórz pliki *.c i *.h dla biblioteki TPM. 2.2. W pliku tpm.h załącz bibliotekę MKL46Z4.h i zadeklaruj funkcję inicjalizującą TPM. 2.3. Zdefiniuj funkcję inicjalizującą TPM w pliku tpm.c: Wywołaj funkcję inicjalizującą diody LED, Podłącz zegar do modułu TPM w taki sam sposób jak w przypadku modułu PIT. 2.4. Znajdź rejestr zawierający ustawienia źródła zegara dla modułu TPM. Jest to część modułu SIM (System Integration Module). Ustaw je na 'Multipurpose Clock Generator Internal Reference Clock'. 2.5. Skonfiguruj 'Multipurpose Clock Generator' w funkcji inicjalizującej moduł TPM. Ustaw zegar o częstotliwości 32kHz i uruchom go, na przykład: MCG->C1 = MCG_C1_IRCLKEN_MASK; MCG->C1 = MCG_C1_IREFS_MASK; 2.6. Ustaw odpowiednie bity w rejestrze TPMX_SC, aby upewnić się że licznik będzie liczył w górę. 2.7. Ustaw prescaler modułu TPM tak, aby częstotliwość inkrementacji licznika była poniżej 1 khz. 2.8. Wyczyść licznik i ustaw wartość modulo dla licznika tak, aby uzyskać przepełniał się rzadziej niż co 1 sekundę. 2.9. Skonfiguruj jeden z kanałów TPM tak, aby pracował w trybie software compare : Użyj masek TPM_CnSC_MSA_MASK, TPM_CnSC_MSB_MASK, TPM_CnSC_ELSA_MASK, i TPM_CnSC_ELSA_MASK Dostęp do rejestrów CnCS odbywa się za pomocą konstrukcji TPMX->CONTROLS[ch_nbr].CnSC =...;' 2.10. Wykonaj wszystkie niezbędne kroki do uruchomienia przerwań od modułu TPM. 2.11. Włącz licznik TPM: Ustaw pole CMOD w rejestrze TMPX_SC. 2.12. Napisz procedurę obsługi przerwania dla modułu TPM: Zmieniaj stan innej diody niż poprzednio. Nie zapomnij wyczyścić flagi przerwania. 2.13. Wywołaj funkcję inicjalizującą timer TPM w funkcji main().

2.14. Skompiluj kod, wyeliminuj wszystkie błędy i ostrzeżenia, a następnie zweryfikuj działanie programu. 3. SONAR Na podstawie modułu HC-SR04 przedstawiony zostanie ultradźwiękowy sonar. Wszelkie niezbędne informacje zawarte są w dokumentacji tego modułu. Na tym etapie uczestnicy laboratorium powinni posiadać wszelką wiedzę niezbędną do napisania sterownika sonaru. Poniższy kroki są wskazówkami jak to osiągnąć. Jednakże sonar można obsłużyć na wiele różnych sposobów korzystając z peryferii dostępnych w mikrokontrolerze. W nawiasach zawarte są przykładowe nazwy i konfiguracje, jakie mogą zostać użyte. Najpierw utwórz nowy projekt, a następnie: 1. Stwórz pliki sterownika sonaru (sonar.c i sonar.h). 2. Sonar wymaga mechanizmu wyzwalającego pomiar oraz timera mierzącego długość impulsu odpowiedzi. 3. Sonar musi być prawidłowo podłączony do płytki FRDM. Użyj schematu, aby znaleźć odpowiednie piny. Potrzebne są 2 piny, jeden do obsługi wyzwalacza, drugi do obsługi echa. Aby je wybrać użyj reference manuala, rozdział 10.3.1. (Potrzebujemy 2 pinów podłączonych do dwóch różnych timerów TPM, np.: PTB1 dla TPM1 CH1, PTB2 dlatpm2 CH0) UWAGA!!! Podczas podłączania lub odłączania czegokolwiek do/od płytki upewnij się, że zasilanie jest ODŁĄCZONE!!! Przed podłączeniem zasilania poproś prowadzącego o zweryfikowanie poprawności podłączenia.

4. W pliku system_mkl46z4.c ustaw CLKOCK_SETUP taka by mikrokontroler używał zewnętrznego kwarcu 8MHz w trybie PLL. 5. W plku nagłówkowym sonaru zadeklaruj funkcję inicjalizującą I zdefiniuj ją w pliku źródłowym. 6. W funkcji inicjalizującej: 6.1. Najpierw podłącz zegar do wszystkich używanych modułów (PORTB, TPM1, TPM2). 6.2. Jako źródło zegara TPM wybierz MCGIRCLK ( SIM->SOPT2). 6.3. Ustaw wewnętrzny zegar MCG na 4MHz (MCG->C2). 6.4. Włącz wewnętrzny zegar MCG (MCG->C1). 6.5. Do wyzwalania sonaru użyjemy timera TPM (TPM1). Skonfigurujemy jeden z pinów (PTB1) aby był użyty jako kanał timera (CH1): 6.5.1. Ustaw alternatywną funkcję wybranego pinu (PTB1) na kanał modułu TPM (TPM1 CH1). 6.5.2. Ustaw prescaler tak, aby licznik timera był inkrementowany co 16 us. Sonar wymaga aby wyzwalacz trwał 10 us, wartość 16 jest wystarczająco blisko aby zadziałał i dość łatwo można ją wygenerować za pomocą dostępnych częstotliwości wejściowych. 6.5.3. Wyczyść licznik TPM. 6.5.4. Ustaw taką wartość porównania licznika, aby była osiągnięta około 10 ms po starcie od zera. 6.5.5. Ustaw wartość modulo licznika na około 200 ms, jeżeli sygnał echo nie będzie odpowiadał po takim czasie rozpocznie się procedura generacji wyzwalacza mimo braku sygnału echo w poprzednim cyklu. 6.5.6. Skonfiguruj kanał TPM na taki, aby po osiągnięciu przez licznik zadanej wartości wygenerował dodatni impuls na wyjściu. 6.6. Do pomiary echa sonaru użyjemy timera TPM (TPM2). Skonfigurujemy jeden z pinów (PTB2) aby był użyty jako kanał timera (CH0): 6.6.1. Ustaw alternatywną funkcję danego pinu (PTB2) na kanał modułu TPM (TPM2 CH0). 6.6.2. Ustaw prescaler tak, aby licznik timera był inkrementowany co 1 us. 6.6.3. Ustaw kanał TPM tak, aby generował przerwanie po wykryciu zbocza narastającego lub opadającego. 6.6.4. Wyczyść czekające przerwania NVIC dla modułu TPM (TPM2). 6.6.5. Uruchom przerwania NVIC dla modułu TPM (TPM2). 6.6.6. Włącz przerwania dla kanału TPM (TPM2 CH0). 6.7. Uruchom oba liczniki timerów (TPM1 & TPM2). 7. Teraz napisz obsługę przerwania od modułu TPM (TPM2).

7.1. Przerwanie od echa sonaru jest generowane na każde zbocze sygnału wejściowego, więc najpierw odczytaj stan wejścia poprzez zwyczajne odczytanie rejestru wejściowego danego portu (PORTB), użyj rejestrów szybkiego dostępu. 7.2. Kiedy wykryte zostanie zbocze narastające: 7.2.1. Wczytaj zatrzaśniętą wartość licznika do zmiennej statycznej (zadeklarowanej w pliku nagłówkowym), zostanie ona użyta jako czas startowy. 7.2.2. Wyczyść flagę przepełnienia(overflow) licznika echo (TPM2). 7.2.3. Wyłącz licznik timera TPM obsługującego wyzwalacz (TPM1). 7.3. Kiedy wykryte zostanie zbocze opadające: 7.3.1. Sprawdź czy licznik TPM obsługującego echo się przepełnił, jeżeli nie: 7.3.1.1. Zapisz różnicę pomiędzy wartością startowa a zatrzaśniętą aktualnie w zmiennej globalnej zadeklarowanej w pliku nagłówkowym. 7.3.2. Jeśli licznik się przepełnił, nie zapisuj wyniku. 7.3.3. Wyczyść licznik modułu TPM obsługującego wyzwalacz (TPM1). 7.3.4. Włącz licznik modułu TPM obsługującego wyzwalacz (TPM1). 7.4. Wyczyść flagę przerwania modułu TPM (TPM2). 8. Napisz funkcję zwracającą mierzoną odległość: 8.1. Wartość w buforze wyskalowana jest w [us] i jest proporcjonalna do zmierzonej odległości. 8.2. Wiedząc że prędkość dźwięku wynosi około 34 m/s oblicz odległość i zwróć wartość. 9. W pliku main: 9.1. Załącz przed chwilą utworzoną bibliotekę sonaru oraz bibliotekę wyświetlacza LCD utworzoną na wcześniejszych laboratoriach. 9.2. Wywołaj funkcję inicjalizującą sonar. 9.3. W pętli nieskończonej wyświetlaj odległość. Powinniście teraz widzieć prawidłową odległość na wyświetlaczu, ale zmienia się ona tak szybko trudno ją odczytać. Zmieńmy to. 10. Najpierw obliczmy odległość, jako wykorzystując średnią z kilku ostatnich próbek. 10.1. W pliku nagłówkowym sonaru proszę zadeklarować tablicę próbek, która będzie służyć jako bufor. 10.2. Liczbę próbek można zmieniać za pomocą definicji (10).

10.3. W funkcji obsługi przerwania (TPM2) zamiast zapisywać zmienne do zmiennej, zapisz je do tablicy w cykliczny sposób. 10.4. W funkcji obliczającej odległość, najpierw oblicz średnią z zapisanych próbek, a następnie użyj ją do obliczeń. 11. Następnie użyj modułu PIT do wyświetlania odległości na ekranie LCD, zamiast w pętli głównej programu. 11.1. Stwórz parę plików, nagłówkowy i źródłowy, dla modułu PIT. 11.2. W funkcji inicjalizującej: 11.2.1. Podłącz zegar do modułu PIT. 11.2.2. Ustaw przerwanie co 100 ms. 11.2.3. Wyczyść przerwanie oczekujące NVIC modułu PIT. 11.2.4. Włącz przerwanie NVIC modułu PIT. 11.2.5. Włącz przerwanie dla wybranego kanału PIT (0). 11.2.6. Włącz licznik wybranego kanału timera PIT. 11.2.7. Włącz zegar standardowych timerów PIT. 11.3. W funkcji obsługi przerwania: 11.3.1. Sprawdź źródło przerwania 11.3.2. Wyświetl wartość odległości na wyświetlaczu LCD. 11.3.3. Wyczyść flagę przerwania. 12. Zakomentuj funkcję wyświetlającą z pętli głównej program. Zauważ, że teraz wartość jest znacznie bardziej stała. Zwróć uwagę na to, że ze względu na szeroki kąt działania sonaru ilość przeszkód wokół mierzonej płaszczyzny powinna być jak najmniejsza. ZADANIE DOMOWE 1. Używając wiedzy zdobytej podczas wykonywania 3 instrukcji, użyj jak najbardziej energooszczędnego trybu mikrokontrolera. 2. Używając podobnej techniki do przedstawionej w tej instrukcji zmierz czas, przez jaki był wciśnięty przycisk.