MSP430: mikrokontrolery, które (prawie) nie pobierają prądu, część 6

Podobne dokumenty
MSP430 w przykładach (9)

Przetworniki analogowo-cyfrowe (A/C)

Instytut Teleinformatyki

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

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

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

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

Programowanie mikrokontrolerów. 8 listopada 2007

Wstęp Architektura... 13

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

Wykład 4. Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430

LABORATORIUM Komputery przemysłowe i systemy wbudowane

APPLICATION OF ADUC MICROCONTROLLER MANUFACTURED BY ANALOG DEVICES FOR PRECISION TENSOMETER MEASUREMENT

MSP430 w przykładach (2)

Obsługa przetwornika ADC na mikrokontrolerze ATmega8 CEZARY KLIMASZ OBSŁUGA PRZETWORNIKA ADC NA MIKROKONTROLERZE ATMEGA8

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

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

TECHNIKA MIKROPROCESOROWA II

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

ĆWICZENIE. TEMAT: OBSŁUGA PRZETWORNIKA A/C W ukontrolerze 80C535 KEILuVISON

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

SML3 październik

Instytut Teleinformatyki

MCAR Robot mobilny z procesorem AVR Atmega32

Część 6. Mieszane analogowo-cyfrowe układy sterowania. Łukasz Starzak, Sterowanie przekształtników elektronicznych, zima 2011/12

Wykład 12. Przetwornik ADC

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

WPROWADZENIE Mikrosterownik mikrokontrolery

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

XXXII Olimpiada Wiedzy Elektrycznej i Elektronicznej. XXXII Olimpiada Wiedzy Elektrycznej i Elektronicznej

WIZUALIZACJA DANYCH SENSORYCZNYCH Sprawozdanie z wykonanego projektu. Jakub Stanisz

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

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

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

Mikroprocesory i Mikrosterowniki Analog-Digital Converter Konwerter Analogowo-Cyfrowy

Struktury specjalizowane wykorzystywane w mikrokontrolerach

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Przetwornik analogowo-cyfrowy

Hardware mikrokontrolera X51

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

2. Architektura mikrokontrolerów PIC16F8x... 13

SPECYFIKACJA PRZETWORNIK RÓŻNICY CIŚNIEŃ DPC250; DPC250-D; DPC4000; DPC4000-D

Programowanie mikrokontrolerów 2.0

Funkcje sterowania cyfrowego przekształtników (lista nie wyczerpująca)

PROGRAMOWANIE PWM. Porty, które mogą być zamienione na PWM w każdym module RaT16 to port 3,4,5,6

Politechnika Warszawska

8 kanałowy przedłużacz analogowy z RS485

Szkolenia specjalistyczne

E-TRONIX Sterownik Uniwersalny SU 1.2

MIKROKONTROLERY I MIKROPROCESORY

Mikrokontrolery z rdzeniem ARM, część 21

Wbudowane układy peryferyjne cz. 3 Wykład 9

ASTOR IC200ALG320 4 wyjścia analogowe prądowe. Rozdzielczość 12 bitów. Kod: B8. 4-kanałowy moduł ALG320 przetwarza sygnały cyfrowe o rozdzielczości 12

ZL28ARM. Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

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

Wprowadzenie do MSP430G2553 i MPU6050

Część 5. Mieszane analogowo-cyfrowe układy sterowania

Programowanie Mikrokontrolerów

Zastosowania mikrokontrolerów w przemyśle

2.1 Porównanie procesorów

Systemy Wbudowane. Arduino - rozszerzanie. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD

Research & Development Ultrasonic Technology / Fingerprint recognition

Instytut Teleinformatyki

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

start Program mikroprocesorowego miernika mocy generowanej $crystal = deklaracja

Metody optymalizacji soft-procesorów NIOS

Procedury obsługi monolitycznego przetwornika analogowo-cyfrowego AD 7865

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

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

POLSKIEJ AKADEMII NAUK Gdańsk ul. J. Fiszera 14 Tel. (centr.): Fax:

Sterownik momentu obrotowego silnika prądu stałego

MIKROPROCESORY architektura i programowanie

ZAKŁAD SYSTEMÓW ELEKTRONICZNYCH I TELEKOMUNIKACYJNYCH Laboratorium Podstaw Telekomunikacji WPŁYW SZUMÓW NA TRANSMISJĘ CYFROWĄ

Przetworniki analogowo-cyfrowe

Przykładowe pytania DSP 1

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

LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH

Spis treści. Dzień 1. I Konfiguracja sterownika (wersja 1312) II Tryby pracy CPU (wersja 1312) III Bloki funkcyjne (wersja 1312)

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.

Notatka lekcja_#3_1; na podstawie W.Kapica 2017 Strona 1

Interfejs analogowy LDN-...-AN

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

SPECYFIKACJA PRZETWORNIK RÓŻNICY CIŚNIEŃ

Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Konstrukcje i Technologie w Aparaturze Elektronicznej.

Parametryzacja przetworników analogowocyfrowych

Scalony analogowy sterownik przekształtników impulsowych MCP1630

Instytut Teleinformatyki

Politechnika Gdańska. Gdańsk, 2016

DTR PICIO v Przeznaczenie. 2. Gabaryty. 3. Układ złącz

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Instytut Teleinformatyki

Architektura przetworników A/C. Adam Drózd

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

1. Podstawowe wiadomości Możliwości sprzętowe Połączenia elektryczne Elementy funkcjonalne programów...

Kurs Zaawansowany S7. Spis treści. Dzień 1

SiMod-X-(A1) Przetwornik parametrów powietrza z interfejsem RS485 (MODBUS RTU) oraz wyjściem analogowym (dotyczy wersji -A1)

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

PRZERZUTNIKI: 1. Należą do grupy bloków sekwencyjnych, 2. podstawowe układy pamiętające

Transkrypt:

MSP430: mikrokontrolery, które (prawie) nie pobierają prądu, część 6 12 bitowy przetwornik A/C Mikrokontrolery MSP430 mogą być wyposażone w dużą liczbę różnorodnych peryferiów. Czyni to z nich uniwersalne narzędzie do zadań o zmieniającym się charakterze. Standardem w elektronice jest konieczność penetracji świata analogowego, co powoduje, że niezbędnym wyposażeniem mikrokontrolerów są przetworniki analogowo cyfrowe. Pierwszy przykład wykorzystania 12 bitowego przetwornika SAR wbudowanego w mikrokontroler MSP430 przedstawiamy w artykule, kolejne za miesiąc. Mikrokontrolery z rodziny MSP430 mogą być wyposażone w dwa typy przetworników: SAR, 10 lub 12 bitowy, alternatywnie 16 bitowy Σ (Sigma Delta). Ponieważ mikrokontroler MSP430F449, zastosowany w zestawie uruchomieniowym (opisanym w EP12/ 2007), wyposażono w 12 bitowy przetwornik SAR, w artykule skupimy się na prezentacji jego obsługi. W konfiguracji testowej wykorzystano ośmiocyfrowy wyświetlacz siedmiosegmentowy LCD. Przykłady napisano w C w środowisku IAR (bezpłatna wersja kickstart, publikujemy ją na CD EP2/ 2008B). Architektura ADC12 Sercem przetwornika ADC12 jest 12 bitowy rdzeń SAR. Dokonuje on konwersji napięcia do postaci cyfrowej, posługując się dwoma potencjałami referencyjnymi. Błąd konwersji nie powinien typowo przekroczyć ±2LSB. Czas konwersji zamyka się w 13 taktach zegarowych. Częstotliwość taktowania rdzenia nie powinna przekroczyć 6,3 MHz, co okre- śla minimalny czas konwersji równy 2,1 ms (czyli 475 khz). Poprawna praca modułu wymaga zasilania w zakresie 2,2 3,6 V. Moduł przetwornika ma możliwość podłączenia zewnętrznych napięć odniesienia. Wyższy potencjał powinien mieć wartość większą od 1,4 V, mniejszą zaś od napięcia zasilania, a niższy potencjał wartość mniejszą od 1,2 V, ale oczywiście większą lub równą 0 V. Daje to możliwość dość swobodnego operowania zakresem i rozdzielczością pomiarową przetwornika. Dostępny jest również wewnętrzny moduł referencji o dwóch napięciach 1,5 lub 2,5 V (wybór bitem ADC12CTL0.REF2_ 5V). Rozrzut produkcyjny napięć referencyjnych modułu wynosi 4%, zaś stabilność temperaturowa nie jest gorsza niż ±100 ppm. Wyboru konfiguracji referencji dokonuje się w rejestrach każdej z pamięci bufora wyników (bity ADC12MCTL0 15.SREF). Źródłem sygnału taktującego przetwornik może być jeden z głównych zegarów procesora lub niezależny oscylator RC o częstotliwości ok. 5 MHz (bity ADC12CTL1.ADC12SSEL). W miarę potrzeby sygnał zegarowy można dodatkowo podzielić przez wartość całkowitą 1 8 (bity ADC12CTL1.ADC12DIV). Wyzwalanie konwersji może być zrealizowane programowo (bit ADC12CTL0. ADC12SC) lub sprzętowo z wykorzystaniem jednego z liczników. Można przy tym zdefiniować rodzaj zbocza wyzwalania (bit ADC12CTL1.ISSH). Sam proces konwersji podzielony jest na dwa etapy. W pierwszym jest zapamiętywana wartość w module S/H, w drugim odbywa się właściwa konwersja. Czas trwania etapu S/H można wybrać (bit ADC12CTL1. SHP) poprzez odpowiednią konfigurację licznika (bity ADC12CTL1.SHT0,1) lub sterować nim bezpośrednio sygnałem wyzwalania SHI. Multiplekser analogowy pozwala wybrać do konwersji, poza portami procesora, dodatkowo wejścia zewnętrznych referencji, wyjście czujnika temperatury i dzielnika napięcia zasilania. Napięcia wejściowe nie mogą przekroczyć napięć zasilania. Przetwornik może pracować w czterech trybach (bity ADC12CTL1.CONSEQ): pojedynczej konwersji jednego kanału, pojedynczej sekwencji kanałów, sekwencyjnej konwersji pojedynczego kanału oraz sekwencyjnej konwersji wielu kanałów. Dodatkowo bit ADC12CTL0. Przetworniki SAR Przetwornik SAR (Successive Approximation Register) występuje w mikrokontrolerach MSP430 wersji 10 lub 12 bitowej. Poza rozdzielczością, odróżnia je jeszcze moduł zapisu wyników konwersji. W ADC12 jest wydzielony oddzielny obszar pamięci o wielkości 16 słów (12 bitowych), zaś w ADC10 jest pojedynczy rejestr wyniku oraz moduł transferu w dowolny dostępny pamięci. Główne bloki funkcjonalne przetwornika SAR to: moduł referencyjny (1,5 V oraz 2,5 V), multiplekser analogowy, moduł S/H (Sample And Hold), dzielnik do pomiaru napięcia zasilania oraz czujnik temperatury mikrokontrolera. Przetworniki Σ 16 bitowy przetwornik Σ (Sigma Delta) również cechuje własna referencja (1,2 V), multiplekser analogowy na wejściu i wbudowany czujnik temperatury. Dodatkowo wyposażono go we wzmacniacz PGA (Programmable Gain Amplifier) oraz może występować w wersji potrójnej (trzy rdzenie przetwarzające). Wyniki konwersji w tym przetworniku zapisywane są do pojedynczego rejestru. 68

69

MSC pozwala na zapętlenie pracy przetwornika bez sygnału wyzwalania. Wyniki konwersji zapisywane są do 16 pozycyjnego bufora wyników. Każda komórka pamięci bufora ma swoją reprezentację w postaci rejestru konfiguracyjnego. Określa się w nim kanał wejściowy (ADC12MCTL0 15.INCH) oraz konfigurację napięć referencyjnych (ADC12MCTL0 15.SREF). Zapis rozpoczyna się od pozycji określonej poprzez bity ADC12CTL1.CSTAR- TADD. W przypadku sekwencji pomiarów, każdy następny wynik zapisywany jest do kolejnej komórki. Koniec sekwencji określa bit ADC12MCTL0 15.ESC. Zapis do którejkolwiek komórki pamięci wyników może wywołać przerwanie (rejestry ADC12IE i ADC12IFG), przy czym istnieje możliwość rozróżnienia źródła przerwania (rejestr ADC12IV). Dodatkowo można wywołać przerwanie od przepełnienia lub od przekroczenia czasu S/H. Rys. 21. Schemat blokowy przetwornika ADC12 Pomiar temperatury W pierwszym przykładzie wykorzystamy czujnik temperatury wbudowany w strukturę mikrokontrolera. Jest nim złącze półprzewodnikowe zasilane źródłem prądowym o wydajności ok. 100 ma. W temperaturze 0 C spadek napięcia na czujniku wynosi 986 mv. Niestety dopuszcza się 5% rozrzut produkcyjny tej wartości. Współczynnik nachylenia krzywej skalowania wynosi 3,55 mv/ C z 3% błędem. Tab. 3. Rejestry przetwornika ADC12 Rejestr Nazwa Typ Adres Stan Rejestr kontrolny nr 0 ADC12CTL0 R/W 01A0h Reset z POR SHT1 MSC REF2_5V REFON ADC12ON ADC12 OVIE ADC12 TOVIE Rejestr kontrolny nr 1 ADC12CTL1 R/W 01A2h Reset z POR Flagi przerwań ADC12IFG R/W 01A4h Reset z POR Flagi zezwoleń przerwania ADC12IE R/W 01A6h Reset z POR Wektor ident. przerwania ADC12IV R 01A8h Reset z POR Rejestry wyniku 0...15 ADC12MEM0..ADC12MEM15 R/W 0140h...015Eh niezmieniony Rejestry kontrolne wyniku 0...15 ADC12MCTL0..ADC12MCTL15 R/W 080h...08Fh Reset z POR SHT0 EOS SREF INCH ENC ADC12SC CSTARTADD SHS SHP ISSH ADC12DIV ADC12SSEL CONSEQ ADC12 BUSY Bez skalowania pomiar temperatury nie jest zbyt dokładny. W pierwszej kolejności konfigurowany jest przetwornik. Założono, że każda konwersja będzie inicjowana w pętli głównej, a podczas jej trwania procesor będzie usypiany. Wymusza to konieczność wykorzystania oscylatora ADC12OSC do taktowania przetwornika ( bity ADC12CTL1. ADC12SSEL). Ponieważ pomiar temperatury nie wymaga dużych prędkości zegara wybrano współczynnik podziału dzielnika przez 8 (bity ADC12CTL1. A D C 1 2 D I V ). C z ę s t o t l i - wość zegara przetwornika ADC12CLK wynosi zatem: $%$(, FB *$FB O Dla przetwornika temperatury wymagany jest czas S/H co najmniej 30 ms. Do 70

71

wyznaczenia wymaganego podziału SHT wykorzystamy poniższą formułę: SHT=30[ms] 625[kHz]=18,75 Najbliższy (większy) współczynnik to 32 (bity ADC12CTL0.SHT0,1). Ponieważ przetwornik ma być wyzwalany programowo, należy wybrać jako źródło wyzwalania sygnał ADC12SC (bity ADC12CTL1. SHS). Należy pamiętać również o bicie ADC12CTL1. SHP=1, który rozróżnia funkcję wyzwalania od bezpośredniego sterowania mechanizmem S/H przetwornika. Tryb pojedynczej konwersji ustawiamy poprzez bity ADC12CTL0. MSC=0 oraz ADC12CTL1. CONSEQ=0. Zaplanowano, że wynik konwersji będzie zapisywany do pierwszej komórki bufora (bity ADC12CTL1.CSTAR- TADD). Ponieważ przetwornik będzie pracował w trybie pojedynczej konwersji, należy skonfigurować tylko ten rejestr konfiguracyjny, który odnosi się do tej komórki (rejestr ADC12MCTL0). W rejestrze tym wybieramy kanał 10 multipleksera (bity ADC12MCTL0.INCH) oraz określamy źródło napięć referencyjnych (bity ADC12MCTL0.SREF). Założono wykorzystanie wewnętrznego źródła referencyjnego (ADC12CTL0.RE- FON) o napięciu 1,5 V. Ostatni etap konfiguracji przetwornika to włączenie przerwania po zapisie wyniku do pamięci (bity ADC12IE.ADC12IE0). Obsługa przerwania ogranicza się do przepisania przetworzonej wartości do zmiennej globalnej (temperatura) oraz wyprowadzenie procesora z trybu uśpienia. Pętla główna programu, poza wyzwalaniem konwersji, zawiera algorytm przekształcenia wartości niemianowanej (w bitach) na temperaturę w C. Funkcja temperatury jest określona zależnością: List. 7. Pomiar temperatury struktury mikrokontrolera // Plik naglowkowy #include msp430x44x.h // Zmienne globalne signed short temperatura = 0; // Przerwanie po zakonczonej konwersji #pragma vector = ADC12_VECTOR interrupt void ISR_ADC12(void) temperatura = ADC12MEM0; low_power_mode_off_on_exit(); // LPM exit // Inicjacja przetwornika ADC12 void ADC12Init(void) ADC12CTL0 = SHT0_3 + SHT1_3 + REFON + ADC12ON; // ADC12, SHtime->32, SingleConv, Ref->1.5V, turn on ADC12 ADC12CTL1 = CSTARTADD_0 + SHS_0 + SHP + ADC12DIV_7 + ADC12SSEL_1 + CONSEQ_0; // MEM0, ADCosc, ACLK/8, Single sequence, ADC12MCTL0 = SREF_1 + INCH_10; // 0..Vref, in -> temp ADC12IE = 0x0001; // MEM0->przerwanie ADC12CTL0 = ENC; // włącz konwersję (czekaj na wyzwolenie) // Glowna funkcja void main(void) unsigned short ShortTmp1, ShortTmp2; // Zmienne pomocnicze WDTCTL = WDTPW + WDTHOLD; // watchdog, off enable_interrupt(); // system przerwan, wlaczony ADC12Init(); // inicjacja przetwornika ADC while (true) // glowna petla ADC12CTL0 = ADC12SC; // wyzwolenie pojedynczej konw. low_power_mode_3(); // LPM3 ShortTmp2 = temperatura; // Przeliczenie wartosci ShortTmp2 = ShortTmp2 << 3; // * 13 / 128 -> 0,102 ShortTmp1 = temperatura << 2; ShortTmp1 += temperatura; ShortTmp2 += ShortTmp1; ShortTmp2 = ShortTmp2 >> 7; temperatura = ShortTmp2-278; // offset no_operation(); ' - $. + 7O*+!FF+ - $ gdzie, U S spadek napięcia na czujniku wyznaczany z poniższej formuły:. +. + $ $ "$ $. + "F+ $ 7*!** + $ gdzie, C temp wynik konwersji analogowo cyfrowej przetwornika 12 bitowego. W wyniku podstawienia otrzymujemy ostateczną zależność: ' - $!**+ $ 7O*+!FF+!FF - $ ' - $!"!"- $$ $EO $EO W języku C taką zależność można zaimplementować wprost, jednak w przypadku, gdy mikrokontroler nie potrafi sprzętowo mnożyć i dzielić, kompilator dołączy do kodu dodatkową bibliotekę, a samo przeliczanie będzie długo trwać. Jeżeli nie zależy nam na optymalizacji, zarówno wielkości programu, jak i szybkości jego działania, to rzeczywiście nie ma sensu gimnastykować umysłu. Warto jednak wiedzieć, że w większości przypadków optymalizacja z bardzo dobrym skutkiem nie jest skomplikowana. Proszę zauważyć, że wartość 0,103 można zastąpić ułamkiem z dość dobrym przybliżeniem:!" " "$O $ $ $ " $ E!"$ Przy rozkładzie należy kierować się podstawową zasadą: procesor potrafi bardzo szybko mnożyć i dzielić przez liczbę 2. Wynika to z systemu dwójkowego jakim się posługuje. Dzielenie i mnożenie przez 2 to przecież nic innego jak przesuwanie w lewo lub w prawo. Dlatego bardzo ważne aby w mianowniku naszego ułamka znalazła się całkowita potęga liczby 2. Licznik również warto rozłożyć na sumę całkowitych potęg 2. Tak zaimplementowana funkcja translacji będzie wykonywała się znacznie szybciej i zajmowała mniej pamięci kodu. Dopełniając idei optymalizacji wykorzystajmy do obliczeń zmienne lokalne umieszczane w rejestrach oraz zapiszmy działania w postaci krótkich formuł. Wyznaczona wartość temperatury znajduje się w zmiennej temperatura. Piotr Tadrzak Contrans TI 72