cw_10 - Badanie toru przetwarzania C/A w mikrokontrolerach
Transkrypt
cw_10 - Badanie toru przetwarzania C/A w mikrokontrolerach
Systemy Pomiarowe Wielkości Fizycznych – Ćw. 10 Ćw. 10 Badanie toru przetwarzania C/A w mikrokontrolerach analogowych (ADuC824 lub ADuC834) Problemy teoretyczne: Podstawy architektury mikrokontrolerów i mikrokonwerterów – pamięć programu, pamięć danych, interfejs komunikacyjny RS-232, moduły programowanych liczników/dzielników, system przerwań. Teoria próbkowania i kwantowania sygnałów analogowych. Ogólna zasada działania przetworników C/A (z ważeniem prądowym i sieciami drabinkowymi R-2R) Rekwizyty: 1. Moduł mikroprocesorowy ADuC824 / ADuC834 a. moduł b. zasilacz c. kabel interfejsu RS232 2. Mikrokomputer z systemem operacyjnym Windows 2000/XP oraz oprogramowanie: a. system uruchomieniowy Vision2 f-my Keil v.2.36 (kompilator języków programowania C i ASM, konsolidator, bibliotekarz, programy ładujące) b. hyperterminal v5.1 c. program ładujący (downloader) WSD.exe (v.6.03) d. kompilator języka C (Borland v3.1 lub Builder C) e. arkusz kalkulacyjny: Microsoft Excel 3. Oscyloskop analogowy/cyfrowy 4. Multimetr Instrukcja obsługi modułu ADuC824/834 Zasilanie modułu: Moduł zasilany jest z zewnętrznego zasilacza napięciem stałym o wartości 9V. Do podłączenia wykorzystywany jest wtyk cylindryczny (2.1mm). Napięcie 9V zasila liniowy regulator napięcia (U2). Z jego wyjścia po odfiltrowaniu uzyskuje się napięcie 5V zasilające części analogowe i cyfrowe modułu. Stan zasilania sygnalizowany jest zieloną diodą LED (D4). Interfejs UART/RS232 Moduł ADuC8xx (U1) wykorzystuje jedynie linie komunikacyjne TxD i RxD dostępne na złączu interfejsowym (J4). Kabel interfejsowy zapewnia dopasowanie poziomów napięciowych sygnałów. Obwód zegara systemowego Moduł wyposażony jest obwód rezonatora kwarcowego 32.768kHz. System mikroprocesorowy sterowany jest poprzez układy powielania częstotliwości PLL. Napięcie referencyjne System mikroprocesorowy wyposażony jest dodatkowo w zewnętrzne źródło napięcia referencyjnego (AD780). Wskaźnik LED SPWF_cw_10 Badanie toru przetwarzania CA w mikrokontrolerach analogowych.docx1 -1- Systemy Pomiarowe Wielkości Fizycznych – Ćw. 10 Dioda sygnalizacyjna (czerwona) LED (D5) jest podłączona bezpośrednio do portu P3.4. Użytkownik systemu może wykorzystywać np. instrukcje CLR P3.4 do zapalenia diody lub SETB P3.4 do wyłączenia diody. Przyciski: Reset/INT0/Serial_Download Przycisk RESET jest wykorzystywany do ręcznego wyzerowania modułu, powoduje to uruchomienie programu zapisanego w pamięci FLASH ROM modułu. Przycisk INT0 jest podłączony bezpośrednio do linii P3.2/INT0. Wciśnięcie przycisku (podanie sygnału LOW na linię P3.2) może powodować inicjację przerwania 0. Wprowadzenie modułu w tryb ładowania programu użytkownika do pamięci (serial download) wymaga od użytkownika wykonania sekwencji wciśnięć przycisków (przycisk Serial_Dowload == PSEN) obrazowanej na rysunku: SW1 (RESET=0) (c) wciśnij SW1 (b) wciśnij SW3 (a) SW1 & SW3 zwolnione SW3 (PSEN=1) SW1 (RESET=0) (d) zwolnij SW1 SW1 (RESET=0) SW3 (PSEN=0) SW3 (PSEN=0) SW1 (RESET=1) SW3 (PSEN=1) (e) zwolnij SW3 SW1 (RESET=0) SW3 (PSEN=1) Rys. 1. Wprowadzenie modułu ADuC8xx w tryb ładowania programu użytkownika (SW1-RESET, SW3Serial_Download). Program ćwiczenia: 1. Zapoznać się z dokumentacją techniczną modułu mikroprocesorowego ADuC824/834 a. ogólna charakterystyka modułu mikroprocesorowego b. budowa przetwornika C/A c. algorytmy obsługi przetworników C/A 2. Zapoznać się z budową stanowiska laboratoryjnego: mikrokomputer i środowisko programowe Vision2, hyperminal, downloader WASP.exe 3. Zapoznać się ze sposobem sterowania częstotliwością zegarową systemu mikroprocesorowego (znaczenie bitów słowa kontrolnego PLLCON). Weryfikacja poprawności działania pętli fazowej PLL śledzącej częstotliwość podstawową zegara kwarcowego, sposób przyspieszonej obsługi przerwań programowych, określenie częstotliwości pracy rdzenia systemu. 4. Zapoznać się ze sposobem sterowania przetwornika C/A modułu mikroprocesorowego ADuC824/834 (bity słowa kontrolnego DACCON, rejestry DACL, DACH). (patrz - tabela 1b). 5. W programowaniu uwzględnić buforowane wtórnikiem napięciowym wyprowadzenie sygnału z modułu ADuC8xx na złącze J1-11 (tzn. DACPIN=1) SPWF_cw_10 Badanie toru przetwarzania CA w mikrokontrolerach analogowych.docx2 -2- Systemy Pomiarowe Wielkości Fizycznych – Ćw. 10 6. Zweryfikować układ połączeń zgodny z poniższym schematem blokowym: oscyloskop t moduł ADuC824/834 rdzeń 8051/52 x(t) multimetr 999.9mV y(t) C/A C/A UART GND mikrokomputer RS232 Rys. 2. Schemat blokowy układu połączeń do testowania przetwornika C/A. 7. Wyznaczyć charakterystykę statyczną przetwornika C/A (kilkanaście punktów pomiarowych) uruchamiając na mikrokontrolerze analogowym aplikację test_dac.uvproj: uruchomić program terminala znakowego urządzenia ADuc824/834 wcisnąć przycisk RESET mikrosystemu zaobserwować odpowiedź mikroukładu dokonać wyboru trybu pracy przetwornika C/A (słowo kontrolne DACCON =0x13 lub =0x17) wprowadzić numerycznie słowo kodu przetwornika (dziesiętnie w zakresie od 0 do 4095) zmierzyć wartość napięcia wyjściowego przetwornika C/A przy pomocy multimetru (napięcie DC) powtórz od 3.4.5 dla kolejnej wartości słowa kodowego, wyniki zanotuj w tab. 1 wyznacz charakterystykę statyczną przetwornika C/A (rys. 7. Zapoznać się z zasadą działania licznika TL2 modułów serii ADuC824/834 pracujących w trybie auto-przeładowania (jak na rys.4). Tryb ten umożliwia generowanie przerwania IRQ5 zgodnie z częstotliwością przepełniania licznika TL2. Należy zwrócić uwagę na częstotliwość rdzenia systemu, która jest zgodna z częstotliwością generatora powielacza PLL i zależy od słowa kontrolnego PLLCON (standardowo częstotliwość zegara systemowego fCORE= 1.572864MHz, jeżeli PLLCON=0 to fCORE=12.582912MHz). Okres przerwań licznika TL2 w takim układzie będzie wynosił: 65536 RCAP 2 TC f CORE 12 Aby zatem uzyskać zdaną wartość częstotliwości powtarzania się przerwania IRQ5 należy w odpowiedni sposób zaprogramować wartości rejestrów RCAP2: f f RCAP 2 65536 CORE 65536 CORE TC 12 f IRQ5 12 f DZ core 12 f IRQ5 Zadaną częstotliwość okresu generowanej funkcji uzyskamy po uwzględnieniu liczby przetwarzanych próbek N. Tx N TC Dla zadanych wartości: fCORE, N, Tc (wartości zadane przez prowadzącego ćwiczenie) należy określić parametry programowania układu czasowo-licznikowego L2 (rejestr dzielnika RCAP2L, RCAP2H). SPWF_cw_10 Badanie toru przetwarzania CA w mikrokontrolerach analogowych.docx3 -3- Systemy Pomiarowe Wielkości Fizycznych – Ćw. 10 U(t) bin UN N 2 -1 TC Tx t Rys. 3. Diagram czasowy generowania kolejnych próbek sygnału przetwornika C/A, (T X-okres sygnału, Tc-okres próbkowania) Rys. 4. Schemat blokowy budowy układu czasowo-licznikowego L2 mikroprocesra (TL2, TH2 - część młodsza i starsza licznika L2, RCAP2L, RCAP2H- część młodsza i starsza rejestru zadawania dzielnika, TIMER INTERRUPT - sygnał przerwania z układu L2). 8. Zapoznać się programem obsługi przetwornika C/A generującym kolejne próbki sygnału sinusoidalnego sinus_128.c. Wyznaczyć podstawowe parametry procesu przetwarzania C/A zakładając, że: jeden okres przetwarzanego sygnału składa się z Nprb próbek, zadana częstotliwość sygnału wyjściowego fx (zostanie podana przez prowadzącego ćwiczenia), amplituda sygnału Ax=1V, składowa stała sygnału UDC=0.5V gdzie: WDi-wartość binarna próbki, UREF - napięcie skali przetwarzania przetwornika C/A (2.5V). 2i 212 WDi U DC Ax sin N U REF prb oraz warunki ograniczające do skali przetwarzania przetwornika: if WDi 212 1 WDi 212 1 if WDi 0 WDi 0 9. Zapoznać się z metodami generowania i przygotowywania wartości przetwarzanych próbek w pamięci mikrokontrolera: wewnętrznej RAM (DATA, IDATA) SPWF_cw_10 Badanie toru przetwarzania CA w mikrokontrolerach analogowych.docx4 -4- Systemy Pomiarowe Wielkości Fizycznych – Ćw. 10 zewnętrznej RAM (XDATA), pamięci kodu ROM (CDATA). Przeanalizować czas dostępu do pamięci podczas generowania kolejnych wartości próbek sygnału podczas obsługi przerwania INT5. 10. Uruchomić w środowisku mikrokontrolera analogowego program sinus_128 (sinus.uvproj). Zaobserwować generowany przebieg na ekranie oscyloskopu. Przy jego pomocy zweryfikować podstawowe parametry obserwowanego sygnału fx. 11. Zaobserwować na ekranie oscyloskopu efekty zakłóceń szpilkowych. 12. Zaproponować algorytm uproszczenia przetwarzania C/A do słowa 8-bitowego przetwornika C/A 13. Zaproponować i zweryfikować algorytm obsługi przetwornika C/A w którym wartość generowanego napięcia przetwornika zadawana jest przez operatora mikrosystemu np. z klawiatury (instrukcja scanf). W oparciu o w/w algorytm zweryfikować charakterystykę przetwarzania C/A w zakresie od 0 do 2.5V z krokiem 0.1V. Wartości napięcia wyjściowego przetwornika C/A odczytać z multimetru. W oparciu o uzyskane wyniki dokonać oceny charakterystyki przetwornika Literatura: 1. Z.Kulka, A.Libura, M.Nadachowski: Przetworniki analogowo-cyfrowe i cyfrowo-analogowe. WkiŁ, Warszawa 1987 2. Rudy van de Plassche: Scalone przetworniki analogowo-cyfrowe i cyfrowo-analogowe. WKiŁ, Warszawa 2001. 3. ADuC824/ADuC834, MicroConwerterTM, Dual-Channel 16/24-Bit ADCs with Embedded FLASH MCU, Analog Devices, Rev.0, (plik: ADuC824.pdf / ADuC834.pdf) 1. Wyniki pomiarów Wyznaczenie charakterystyki statycznej przetwornika C/A D Uwy [V] D Uwy [V] D – słowo kodowe SPWF_cw_10 Badanie toru przetwarzania CA w mikrokontrolerach analogowych.docx5 -5- Systemy Pomiarowe Wielkości Fizycznych – Ćw. 10 Rys. 5. Charakterystyka statyczna przetwornika C/A Zadawane wartości parametrów: Lp. fx [ Hz ] Ax [V] UDC [V] Nprb DAC0 DAC1 DAC MODE RAM int RAM ext ROM 1 2 3 4 SPWF_cw_10 Badanie toru przetwarzania CA w mikrokontrolerach analogowych.docx6 -6- Systemy Pomiarowe Wielkości Fizycznych – Ćw. 10 Przkładowy program obsługi przetwornika C/A sinus_128.c #include <stdio.h> #include <ADuC834.h> #include <math.h> #define RAM #define XRAM 1 #define DZ #define NPRB #define XLPR 0 -105 90 256 sbit LED = 0x0B4; unsigned int i; data unsigned int code *ptr, *ptrend; data unsigned int idata *iptr, *iptrend; data unsigned int xdata *xptr, *xptrend; xdata unsigned int xbuf[XLPR]; idata unsigned int ibuf[NPRB]; code unsigned int buf[128]={ 2048,2148,2248,2348,2447,2545,2642,2737,2831,2923,3012,3100,3185,3267,3346,3422, 3495,3564,3630,3692,3750,3804,3853,3898,3939,3975,4007,4034,4056,4073,4085,4093, 4095,4093,4086,4074,4057,4035,4008,3976,3940,3900,3855,3805,3752,3694,3632,3567, 3497,3425,3349,3270,3188,3103,3015,2926,2834,2740,2645,2548,2450,2351,2251,2151, 2051,1950,1850,1750,1651,1553,1456,1361,1267,1175,1085, 998, 913, 831, 751, 675, 602, 533, 467, 405, 347, 293, 243, 198, 157, 121, 89, 62, 40, 22, 10, 2, 0, 2, 9, 21, 38, 60, 86, 117, 153, 194, 239, 288, 342, 399, 461, 526, 595, 668, 744, 823, 905, 990,1077,1166,1258,1352,1447,1544,1642,1741,1840,1941}; // Obsluga kolejnych przerwan od licznika TL2 #if XRAM void interrupt_0 () interrupt 5 { DACH=*xptr>>8; DACL=*xptr; if (xptr++==xptrend) { xptr=xbuf; LED^=1;} TF2 = 0; } #else #if RAM void interrupt_0 () interrupt 5 { DACH=*iptr>>8; DACL=*iptr; if (iptr++==iptrend) { iptr=ibuf; LED^=1;} TF2 = 0; } #else void interrupt_0 () interrupt 5 { DACH=*ptr>>8; DACL=*ptr; if (ptr++==ptrend) { ptr=buf; LED^=1; } TF2 = 0; } #endif #endif void main (void) { PLLCON=0; // clk=12.582912 MHz (standardowo: clk=1.572864 MHz) #if XRAM CFG834=0x01; #endif // KONFIGURACJA portu transmisji szeregowej - UART SCON=0x52; // mode 1 TMOD=0x20; TH1=TL1=0xF9; // 1200-1170 PCON=0x80; // SMOD=1 TR1=1; printf("\nBadanie przetwornika C/A (mikrokonwerter AduC824)\n"); #if XRAM for (i=0; i<XLPR; i++) { SPWF_cw_10 Badanie toru przetwarzania CA w mikrokontrolerach analogowych.docx7 -7- Systemy Pomiarowe Wielkości Fizycznych – Ćw. 10 xbuf[i]=(int)(2048.0*(1+sin(i*6.26/XLPR))); printf("\n%2d: %4u", i, xbuf[i]); } xptr=xbuf; xptrend=&xbuf[XLPR-1]; #else #if RAM for (i=0; i<NPRB; i++) { ibuf[i]=(int)(1024.0*(1+sin(i*6.26/NPRB))); printf("\n%2d: %4u", i, ibuf[i]); } iptr=ibuf; iptrend=&ibuf[NPRB-1]; #else ptr=buf; ptrend=&buf[127]; #endif #endif // Programowanie trybu pracy przetwornika C/A DACCON = 0x13; // wyjscie=Pin12, zakres: 0-2.5V, wlaczony DACH = 0x08; // 1/2 zakresu DACL = 0x00; ET2 = 1; TL2 = DZ; TH2 = DZ>>8; // zezwolenie przerwan od TL2 // wartosc poczatkowa TL2 RCAP2L = DZ; RCAP2H = DZ>>8; // wartosc autorepetycji TL2 EA = 1; TR2=1; // globalne zezwolenie przerwan // start TL2 while (1); // Modul generuje kolejne probki sygnalu } test_dac.c #include <stdio.h> #include <ADuC824.h> sbit LED = 0x0B4; void main (void) { data unsigned int val; PLLCON=0; // clk=12.582912 MHz (standardowo: clk=1.572864 MHz) // KONFIGURACJA portu transmisji szeregowej - UART SCON=0x52; // mode 1 TMOD=0x20; TH1=TL1=0xF9; // 9600 PCON=0x80; // SMOD=1 TR1=1; // Programowanie trybu pracy przetwornika C/A DACCON = 0x13; // wyjscie=Pin12, zakres: 0-2.5V, wlaczony DACH = 0x08; // 1/2 zakresu DACL = 0x00; printf("\nBadanie przetwornika C/A (mikrokonwerter AduC824)\n"); while (1) { printf("\nPodaj wartosc HEX kodu wejsciowego przetwornika DAC: "); scanf("%04X", &val); DACH = val >> 8; DACL = val; } } SPWF_cw_10 Badanie toru przetwarzania CA w mikrokontrolerach analogowych.docx8 -8- Systemy Pomiarowe Wielkości Fizycznych – Ćw. 10 Podstawowe parametry przetwornika: Dokładność względna (Relative Accuracy) Dokładność względna jest mierzona jako max odchylenie punktów charakterystyki przetwarzania od linii prostej przechodzącej przez punkt końcowy charakterystyki przetwarzania C/A, odniesioną do napięcia pełnego zakresu przetwarzania i wyrażona w procentach. Pomiar powinien być dokonywany po przeprowadzeniu adjustacji błędu przesunięcia zera i błędu pełnej skali przetwornika. Czas ustalania napięcia wyjściowego (Voltage Output Settling Time) Jest to wartość czasu upływającego do momentu osiągnięcia specyfikowanego poziomu napięcia wyjściowego na skutek zmiany na wejściu odpowiadającej pełnemu zakresowi. Zakłócenia szpilkowe sygnału wyjściowego (GLITCH) (Digital-to-Analog Glitch Impulse) Powstają w wyniku stanów przejściowych zmiany słów kodowych. Określane powierzchnią obszaru szpilek w nV/s. Przetwornik C/A ADuC812 jest wyposażony w dwa 12-bitowe napięciowe przetworniki C/A. Każdy z nich posiada wyjściowy bufor napięciowy typu „rail-to-rail” (wyjście od szyny do szyny zasilającej) obciążany do wartości 10kΩ/100pF. Każdy niezależnie może pracować w zakresie 0V do VREF (wewnętrzne źródło 2.5V) i 0V do AVDD. Każdy z nich może pracować w trybie 8 lub 12-bitowym. Przetworniki wykorzystują wspólnie jeden rejestr kontrolny DACCON oraz 4 rejestry danych, DAC1H, DAC1L, DAC0H, DAC0L. Mogą pracować w trybie 12-bitowym asynchronicznym, w którym wartość wyjściowa napięcia przetwornika C/A uaktualniana jest po wpisaniu danej do DACL – dlatego ważna jest kolejność wpisywania danych, najpierw cz. starsza DACH, a potem, młodsza DACL. Tabela 1. Słowo sterujące trybem pracy przetwornika a). AduC812, b). ADuC824/834. a). DACCON (wartość pocz. 04H, brak adresowania bitowego) ADuC812 MODE RNG1 RNG0 CLR1 CLR0 SYNC PD1 PD0 Alokacja bitowa Mnemonic bitu Opis DACCON.7 MODE DAC MODE bit umieszcza nadrzędny działający tryb dla obu DACs „1” = 8-bit tryb (pisz 8bitowy do DACxL SFR). „0” = 12-bit tryb. Bitowy wybór zakresu DAC1. DACCON.6 RNG1 Bit wyboru zakresu przetwornika . DAC1 „1” =DAC1 zakres 0-VDD. „0” = DAC1 zakres 0-VREF. DACCON.5 RNG0 Bit wyboru zakresu przetwornika . DAC0. „1” =DAC0 zakres „0” = DAC0zakres DACCON.4 CLR1 DACCON.3 CLR0 DACCON.2 SYNC DACCON.1 PD1 0-VDD. 0-VREF. Bit zerowania DAC1 „0” =DAC1 wyjście wymusza do 0V. „1” = DAC1 wyjście normalne. Bit zerowania DAC0 „0” =DAC0 wyjście wymusza do 0V. „1” = DAC0 wyjście normalne. Bit uaktualnienia synchronicznego „1” – wyjścia przetworników są aktywowane wpisem danej do DACxL. Użytkownik może uaktualniać rejestry DACxL/H podczas SYNC=0. Uaktualnienie jednoczesne wyjść nastąpi po wpisaniu do SYNC=1. Bit Power-Down „1” = Power-On DAC1. SPWF_cw_10 Badanie toru przetwarzania CA w mikrokontrolerach analogowych.docx9 -9- Systemy Pomiarowe Wielkości Fizycznych – Ćw. 10 „0” = Power-Off DAC1 DACCON.0 PD0 Bit Power Down. „1” = Power-On DAC0 „0” = Power-Off DAC0 b). DACCON (wartość pocz. 00H, brak adresowania bitowego) ADuC824 / ADuC834 - - - Alokacja bitowa Mnemonic bitu DACCON.4 DACPIN DACCON.3 DAC8 DACCON.2 DACRN DACCON.1 DACCLR DACCON.0 DACEN DACPIN DAC8 DACRN DACCLR DACEN Opis Bit wyboru wyprowadzenia sygnału wyjściowego „1” = Pin 12 (P1.7/AIN4/DAC) „0” = Pin 3 (P1.2/DAC/IEXC1) Bit wyboru trybu pracy 8/12 bit „1” = uaktywnienie trybu 8-bit (w tym trybie pracy rejestr DACL ustawiają część starszą rejestru sterującego przetwornika C/A, a 4 bity części młodszej są ustawione na 0) „0” = uaktywnienie trybu 12-bit Bit wyboru zakresu przetwarzania C/A „1” – zakres przetwarzania 0 - AVDD „0” – zakres przetwarzania 0 – 2.5V. Bit zerowania przetwornika „1” = normalne operacje przetwornika C/A „0” = zerowanie słów sterujących przetwornika DACL i DACH Bit zezwolenia „1” = normalne operacje, przetwornik włączony „0” = przetwornik wyłączony (tryb oszczędnościowy), power-Off DAC Użycie przetwornika C/A Architektura przetwornika C/A zawiera drabinkę rezystancyjną współpracującą ze buforowym wzmacniaczem wyjściowym (funkcjonalny ekwiwalent pokazany jest na rys.). Szczegóły architektury są opatentowane U.S. Patent Number 5969657. Zasada tej architektury gwarantuje monotoniczność i znakomitą różnicową liniowość. SPWF_cw_10 Badanie toru przetwarzania CA w mikrokontrolerach analogowych.docx10 - 10 - Systemy Pomiarowe Wielkości Fizycznych – Ćw. 10 Pytania kontrolne: 1. Narysuj schemat blokowy struktury przetwornika C/A mikrosystemu (ADuC824/834) 2. Wymień podstawowe parametry przetworników C/A 3. Opisz funkcję przetwarzania przetwornika C/A 4. Analogowe układy buforowania wyjścia przetwornika C/A 5. Programowanie rejestrowe przetwornika C/A 6. Napięcie referencyjne i napięcie zasilania w funkcji przetwarzania C/A 7. Opisz zasadę generowania sygnałów analogowych o zadanym kształcie 8. Pamięć RAM w procesie generowania sygnałów analogowych C/A 9. Rola systemu przerwań w procesie generowania sygnałów analogowych przetwornika C/A 10. Schemat blokowy systemu do weryfikacji charakterystyki przetwarzania C/A SPWF_cw_10 Badanie toru przetwarzania CA w mikrokontrolerach analogowych.docx11 - 11 -