Instrukcja

Transkrypt

Instrukcja
Akademia Górniczo-Hutnicza
im. Stanisława Staszica w Krakowie
Wydział IEiT
Katedra Elektroniki
TECHNIKA MIKROPROCESOROWA II
LAB 5
Przetwornik A/C i układ PWM - współpraca
© Mariusz Sokołowski
http://www.fpga.agh.edu.pl/upt2
24.11.2015
1. WSTĘP
1.1. CEL
Celem ćwiczenia jest:
zapoznanie studenta z techniką poprawnej inicjalizacji przetwornika A/C,
poznanie trybu pracy PWM licznika TPM,
nabycie umiejętności łączenia funkcjonalnego układów peryferyjnych, na przykładzie
współpracy przetwornika A/C z czujnikiem natężania światła oraz diodami LED za
pośrednictwem układu PWM,
wykorzystanie techniki uśredniania (celem ograniczenia zakłóceń mierzonego sygnału),
wspomaganą wzorcowym sygnałem o częstotliwości 10Hz.
1.2. WYMAGANIA
Sprzętowe:
 komputer klasy PC spełniający wymagania sprzętowe aplikacji KEIL v5,
 zestaw FRDMKL46Z Programowe:
 system operacyjny Windows XP lub wyższy
 środowisko Keil / uVision 5 MDK-ARM
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
Literatura:

KL46 Sub-Family Reference Manual, Freescale Semiconductor

Kinetis L Peripheral Module Quick Reference, Freescale Semiconductor

HC-SR04 datasheet
2. PRZETWORNIK A/C
Układ MKL46Z256VLL4, będący "sercem" zestawu FRDM-KL46Z, posiada w swoich zasobach
sprzętowych, wielokanałowy, 16-bitowy przetwornik analogowo-cyfrowy (rys. 1).
Rys. 1. Schemat przetwornika A/C
Wszystkie wejścia mogą pracować w konfiguracji niesymetrycznej (w stosunku do masy).
Część wejść, natomiast, można skonfigurować jako wejścia symetryczne (różnicowe).
Właściwość ta ma swoje odzwierciedlenie w formacie wyniku przetwarzania oraz możliwych
do uzyskania rozdzielczości. Dla wersji niesymetrycznej istnieją tryby: 8, 10, 12 i 16 bitów.
W tym przypadku wynik jest liczbą bez znaku. Dla wersji symetrycznej zaimplementowane
tryby to: 9, 11,13 i 16 bitów. Wynik jest liczbą ze znakiem w formacie U2. Zewnętrzne
napięcie referencyjne wynosi 3.3V. Jest to wartość, której nie powinno się przekraczać na
wejściach. Pierwszą czynnością, którą należy wykonać przed wykorzystywaniem
przetwornika, jest kalibracja. Jednak zanim sie ją uruchomi, należy ustawić odpowiednie
wartości w rejestrach konfiguracyjnych, wg następującego klucza:
 upewnić, czy stała CLOCK_SETUP, w zbiorze system_MKL46Z4.c, ma wartość 1. Jeśli nie,
to należy ją zmienić. Dla takiego ustawienia parametry podstawowych sygnałów
zegarowych mają następujące wartości:
 zegar referencyjny dla modułu MCG - 8MHz,
 Core clock - 48MHz,
 BusClock - 24MHz,
 dołączyć sygnał taktujący do modułu A/C w rejestrze SIM->SCGC6,
 ustawić źródło sygnału zegarowego przetwornika, wartość dzielnika dla tego sygnału
oraz długi czas próbkowania, w rejestrze ADC0->CFG1 (ADICLK, ADIV, ADLSMP) wynikowa częstotliwość sygnału zegarowego ADCK powinna być mniejsza lub równa
4MHz,
 ustawić wspomaganie dla wysokich częstotliwości próbkowania oraz ilość dodatkowych
cykli ADCK dla długiego czasu próbkowania (CFG1[ADLSMP]=1), w rejestrze ADC0>CFG2 (ADHSC, ADLSTS),
 wybrać zewnętrzne źródło referencyjne, w rejestrze ADC0->SC2 (REFSEL),
 włączyć uśrednianie sprzętowe oraz ustawić ilość na wartość maksymalną (32),
w rejestrze ADC0->SC3 (AVGE, AVGS),
 rozpocząć kalibrację poprzez ustawienie bitu CAL na wartość 1, w rejestrze ADC0->SC3.
Dla potrzeb kalibracji niepotrzebne jest ustawienie numeru kanału, trybu przetwarzania
(pojedynczy czy ciągły), parametrów funkcji porównywania, rozdzielczości czy trybu pracy
wejść (symetryczny, niesymetryczny). Czekając na koniec kalibracji należy sprawdzać stan
bitu CAL. Wartość 0 oznacza koniec kalibracji. Następnie konieczne jest sprawdzenie stanu
bitu CALF. Jeśli jest ustawiony na wartość 1, to kalibracja się nie powiodła i należy ją
powtórzyć, względnie podjąć inne działania obsługujące tego rodzaju błąd.
Po zakończonej pomyślnie kalibracji należy jej wyniki przetworzyć i zapisać do odpowiednich
rejestrów. Wygląda to następująco:
 zsumować ze sobą wszystkie rejestry ADC0->CLPx,
 podzielić przez 2,
 ustawić najbardziej znaczący bit na 1,
 wysłać do rejestru ADC0->PG,
 zsumować ze sobą wszystkie rejestry ADC0->CLMx,
 podzielić przez 2,
 ustawić najbardziej znaczący bit na 1,
 wysłać do rejestru ADC0->MG.
W tym momencie przetwornik jest gotowy pracy. Trzeba tylko ustawić pozostałe parametry
oraz zmienić, w razie potrzeby, inne wcześniej ustawione. Do celów naszego ćwiczenia
należy ustawić następujące parametry:
 w rejestrze ADC0->CFG1: zegar na BUS_CLOCK/2, dzielnik przez 1, długi czas
próbkowania, rozdzielczość 12 bitów,
 w rejestrze ADC0->SC1[0]: przerwanie aktywne (AIEN).
Ponieważ domyślnie, po sygnale RESET, pewne ustawienia są już zapewnione (np.
wyzwalanie programowe, typ wejść), więc nie trzeba ich ponownie wprowadzać.
Wyzwalanie pomiaru przeprowadza się poprzez ustawienie w rejestrze ADC0->SC1[0]
numeru kanału pomiarowego. należy pamiętać, że układ (domyślnie) jest ustawiony na
wyzwalanie programowe (ADTRG=0 w rejestrze ADC0->SC2). Wynik przetwarzania jest
dostępny poprzez odczyt rejestru ADC0->R[0].
3. LICZNIK TPM0 - TRYB PWM
Licznik TPM0 posiada 6 kanałów, które niezależnie można wykorzystywać w różnych trybach
pracy. Część z nich została poznana w trakcie ćwiczenia dotyczącego liczników (LAB4). Na
obecnym etapie skupimy się na funkcji PWM. Dla przypomnienia przedstawiono tabelę
(Tab. 1), w której zestawiono wszystkie możliwe tryby pracy licznika TPM.
Tab. 1. Tryby pracy licznika TPM
Nas będą interesować pozycje "Edge-aligned PWM" oraz " Center-aligned PWM". Pierwsza
pozycja dotyczy trybu z impulsem pozycjonowanym względem zbocza. Druga natomiast
odnosi się do trybu z impulsem pozycjonowanym względem środka okresu. W celu
wykonania ćwiczenia wybierzmy pozycję pierwszą. Aby przygotować licznik do pracy należy
przeprowadzić następujące czynności:
 dołączyć sygnał taktujący do portu D i E, w rejestrze SIM->SCGC5,
 dołączyć sygnał taktujący do modułu TPM, w rejestrze SIM->SCGC6,
 wybrać źródło taktowania TPM0, w rejestrze SIM->SOPT2 (TPMSRC, PLLFLLSEL) - dla
celów ćwiczenia: "MCGFLLCLK clock or MCGPLLCLK/2" oraz " MCGPLLCLK clock with
fixed divide by two",
 ustawić tryb "up counting" oraz dzielnik przez 128, w rejestrze TPM0->SC
(CPWMS, PS),
 ustawić długość licznika tak, aby okres PWM był równy 4095 (12 bitów), w rejestrze
TPM0->MOD,
 w kanale nr 2 TPM0 ustawić tryb "Edge-aligned PWM High-true pulses", w rejestrze
TPM0->CONTROLS[2].CnSC - patrz tabela Tab. 1,
 w kanale nr 5 TPM0 ustawić tryb Edge-aligned PWM Low-true pulses", w rejestrze
TPM0->CONTROLS[5].CnSC - patrz tabela Tab. 1,
 w obu kanałach ustawić początkowo współczynnik wypełnienia na wartość 0 rejestry TPM0->CONTROLS[x].CnV,
 włączyć licznik, w rejestrze TPM0->SC (CMOD).
4. ĆWICZENIE
Wykorzystując czerwoną i zieloną diodę LED oraz czujnik natężenia światła, zrealizować
następujący program:
o pomiar napięcia na kolektorze fototranzystora (rys. 2) oraz wyświetlenie wartości na
wyświetlaczu LCD, z dokładnością do trzeciego miejsca po przecinku - wyjście czujnika
jest dołączone do linii PTE22 (kanał nr 3 przetwornika A/C) - odczyt przetworzonej
wartości w przerwaniu,
o kanał nr 2 TPM0, pracujący w trybie "Edge-aligned PWM High-true pulses", dołączony
do czerwonej diody LED, rozjaśnia diodę proporcjonalnie do natężenia oświetlenia
(im ciemniej tym dioda słabiej świeci),
o kanał nr 5 TPM0, pracujący w trybie "Edge-aligned PWM Low-true pulses", dołączony
do zielonej diody LED, rozjaśnia diodę odwrotnie proporcjonalnie do natężenia
oświetlenia (im ciemniej tym dioda jaśniej świeci).
o zrealizować ćwiczenie wykorzystując tryb "Edge-aligned PWM", a następnie "Centeraligned PWM".
Rys. 2. Czujnik natężenia światła.
5. ZADANIE DOMOWE
1. Zastosować licznik SysTick do generowania przerwania co 100ms. Fakt ten wykorzystać
do uśredniania wyniku pomiaru napięcia oraz do odświeżania wartości wyświetlanej.
2. Zmierzyć i wyświetlić wartość zewnętrznego napięcia referencyjnego.
3. Zmierzyć i wyświetlić wartość temperatury wbudowanego w procesor czujnika
temperatury.