You are on page 1of 5

KURS

Mikrokontrolery z rdzeniem ARM,


część 21
Przetwarzanie A/C i C/A

Przetwornik analogowo– W otaczającym nas świecie posługujemy się głównie


cyfrowy wielkościami analogowymi, takimi jak temperatura,
Mikrokontrolery LPC2000, nie napięcie, ciśnienie itd. Dlatego w systemach
wyróżniają się niczym szczególnym,
jeżeli chodzi o przetworniki A/C mikroprocesorowych bardzo często zachodzi
i zawierają w sobie wszystko to, co potrzeba pomiaru wielkości analogowych, które
obecnie jest uważane za niezbędne aby mogły być wykorzystane muszą być wcześniej przetworzone
minimum w tej dziedzinie. Mniej- na postać cyfrową. Czasami istnieje również potrzeba, aby sygnał
sze mikrokontrolery LPC2131/2 oraz cyfrowy przetworzony przez system mikroprocesorowy zamienić
LPC2141/2 posiadają jeden prze-
ponownie na postać analogową np. w celu wysterowania jakiegoś
twornik, natomiast bardziej rozbudo-
wane (21x4/6/8) zawierają po dwa układu wykonawczego. Do zamiany sygnału z postaci analogowej na
przetworniki A/C. W starszej rodzi- cyfrową i odwrotnie przetworniki A/C i C/A. Większość współczesnych
nie LPC213x każdy z przetworni- mikrokontrolerów o bardziej rozbudowanej architekturze posiada
ków posiada 8–kanałowy multiplek- wbudowany przetwornik A/C, oraz trochę rzadziej przetwornik C/A.
ser. W nowszych mikrokontrolerach
Na tle innych mikrokontrolerów możliwości analogowe LPC213x/214x
LPC214x dodatkowe linie zostały
wykorzystane do podłączenia inter- są raczej przeciętne, które w zależności od wersji zawierają do
fejsu USB, dlatego pierwszy prze- dwóch 10–bitowych 8–kanałowych przetworników A/C oraz jeden
twornik ADC0 posiada zmniejszoną 10–bitowy przetwornik C/A. Ponieważ mamy opanowane większość
do 6 liczbę wejść, natomiast drugi układów peryferyjnych mikrokontrolerów LPC213x w ostatnim
przetwornik pozostał 8–wejściowy. odcinku kursu zajmować się będziemy przetwarzaniem sygnałów
Wszystkie przetworniki A/C posłu-
gują się trybem sukcesywnej aprok- analogowych.
symacji, posiadają 10–bitową roz-
dzielczość i charakteryzują się cza- Do każdego przetwornika podłą- programowy, za pomocą ustawienia
sem przetwarzania 2,44 µs, można czony jest multiplekser umożliwiają- odpowiednich bitów konfiguracyj-
więc powiedzieć ze ich parametry cy, wybranie odpowiedniego kanału, nych. Początek przetwarzania może
są przeciętne. Błąd przetwarza- z którego wykonywane będzie prób- być również inicjowany w sposób
nia przetwornika jest na poziomie kowanie. W tab. 7 przedstawiono sprzętowy za pomocą sygnału po-
ostatnich dwóch bitów, a praktyczne przyporządkowanie poszczególnych chodzącego od bloków MAT ukła-
próby wykazały, że poziom szumów linii wejściowych przetworników A/C,
jest stosunkowo niski w porówna- linie zaznaczone kolorem szarym Tab. 7. Przyporządkowanie poszcze-
niu z innymi mikrokontrolerami np. występują tylko w mikrokontrolerach gólnych linii wejściowych przetwor-
ATmega8. Na rys. 63 przedstawiono 4/6/8. ników A/C (linie zaznaczone kolorem
budowę wewnętrzną przetworników Jak wspomniano w jednym z po- szarym występują tylko w mikrokon-
trolerach 21x4/21x6/21x8)
A/C mikrokontrolerów LPC213x/ przednich odcinków każda linia I/O
214x. prezentowanych mikrokontrolerów Wejście A/C LPC213x LPC214x
może współpracować AD0.0 P0.27 –
z logiką 5 V, ale wyłącz- AD0.1 P0.28 P0.28
nie w trybie GPIO. Gdy AD0.2 P0.29 P0.29
linia I/O pełni rolę ana- AD0.3 P0.30 P0.30
logowego wejścia prze- AD0.4 P0.25 P0.25
twornika A/C, należy AD0.5 P0.26 –
pamiętać, aby nie pod- AD0.6 P0.4 P0.4
łączać do niej napięcia AD0.7 P0.5 P0.5
o wartości większej od AD1.0 P0.6 P0.6
napięcia zasilającego mi- AD1.1 P0.8 P0.8
krokontroler (3,3 V). AD1.2 P0.10 P0.10
Przetworniki mikro-
AD1.3 P0.12 P0.12
kontrolera mogą praco-
AD1.4 P0.13 P0.13
wać w trybie pojedyn-
AD1.5 P0.15 P0.15
czego wyzwalania, gdzie
Rys. 63. Budowa przetwornika A/C w mikrokontro- start przetwarzania wy- AD1.6 P0.21 P0.21
lerach LPC213x/214x znaczany jest w sposób AD1.7 P0.22 AD1.7

Elektronika Praktyczna 8/2007 95


KURS

CLKDIV SEL 110 – Przetwarzanie zostanie roz-


poczęte w wyniku wystąpienia zbo-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 cza od układu porównującego licz-
nika MAT1.0
EDGE START PDN CLK BURST 111 – Przetwarzanie zostanie roz-
– – – – – – – poczęte w wyniku wystąpienia zbo-
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 cza od układu porównującego licz-
nika MAT1.1
Rys. 64. Rejestry ADC0CR i ADC1CR EDGE – Bit ten określa rodzaj
zbocza, po którym nastąpi rozpoczę-
dów czasowo–licznikowych, lub za ustawionych przez bity SEL. Cy- cie przetwarzania:
pomocą zboczy sygnału na odpo- kliczne przetwarzanie trwa, aż do 1 – Konwersja rozpocznie się
wiednich liniach CAP mikrokon- momentu skasowania tego bitu. Aby w momencie wystąpienia zbocza
trolera. Zapewnienie sprzętowego uruchomić ten tryb musimy pamię- opadającego.
wyzwalania umożliwia dokładne tać, aby bity START miały wartość 0 – Konwersja rozpocznie się
określenie momentów próbkowania, 000, gdyż w przeciwnym przypadku w momencie wystąpienia zbocza na-
co ma istotne znaczenie w przy- tryb przetwarzania cyklicznego nie rastającego.
padku próbkowania niektórych syg- zostanie w ogóle włączony. Mikrokontroler posiada bogate
nałów. Przetworniki A/C, mogą być CLKS – Bity te umożliwiają możliwości konfiguracyjne, a rozpo-
również skonfigurowane do pracy ustalenie ilości cykli przetwornika częcie przetwarzania może odbywać
w trybie ciągłym, gdzie po urucho- podczas przetwarzania danych, a co nie tylko w sposób programowy, ale
mieniu sygnał wejściowy jest cały z tym się wiąże ustalenie rozdziel- i również sprzętowy, co umożliwia
czas próbkowany z możliwie naj- czości przetwornika. W przypadku, dokładną synchronizację z przetwa-
większą częstotliwością. Informacja gdy CLKS jest równe 000 wówczas rzanym przebiegiem. Przetworniki
o zakończeniu przetwarzania może przetwornik posiada 10–bitową roz- mikrokontrolera nie posiadają wbu-
posłużyć do zgłoszenia przerwa- dzielczość, a przetwarzanie zajmuje dowanego źródła napięcia referen-
nia. Skonfigurowanie odpowiedniego 11 cykli przetwornika (Fadc), nato- cyjnego, a napięcie to jest pobiera-
trybu pracy przetwornika umożli- miast, gdy CLKS jest równe 111, ne z pinu Vref. Najczęściej napięcie
wia rejestr ADCR, dla przetwornika wówczas przetwarzanie trwa 4 cy- Vref podłączamy do źródła napięcia
ADC0 ADC0CR (0xE0034000) na- kle przetwornika, a jego rozdziel- zasilającego część analogową mikro-
tomiast ADC1CR (0xE0064000) dla czość wynosi 3 bity. kontrolera, ale gdy zależy nam na
przetwornika ADC1, którego bity PDN – Ustawienie tego bitu za- bardziej precyzyjnych pomiarach na-
konfiguracyjne przedstawiono na łącza przetwornik A/C, natomiast leży podłączyć je do zewnętrznego
rys. 64. jego wyzerowanie powoduje wyłą- źródła napięcia referencyjnego. Jest
SEL – Stan tych bitów okre- czenie przetwornika. to małe niedopatrzenie ze strony
śla, które kanały będą próbkowane START – Stan tych bitów okre- producenta mikrokontrolera, ponie-
i przetwarzane na postać cyfrową. śla, sposób rozpoczęcia przetwa- waż nawet prosty 8–bitowy mikro-
Każdy bit odpowiada za dany kanał rzania przez przetwornik A/C, na kontroler ATmega8 posiada wbudo-
(0…7). W przypadku, gdy przetwa- przykład w sposób programowy, wane źródło referencyjne o wartości
rzanie wykonywane będzie w sposób lub poprzez zdarzenie od układu 2,5 V, co w niektórych zastosowa-
programowy tylko jeden bit okre- czasowo–licznikowego: niach jest bardzo wygodne. Do
ślający kanał może być ustawiony, 000 – Przetwarzanie zatrzymane odczytywania wyników pomiarów
natomiast w przypadku sprzętowego 001 – Przetwarzanie zostanie przetwarzania służy rejestr ADDR
przetwarzania można określić więk- rozpoczęte natychmiast (wyzwalanie AD0DR (0xE0034004) dla przetwor-
szą ilość kanałów, które będą prze- programowe) nika AD0 oraz AD1DR (0xE0064004)
twarzana na postać cyfrową. Na 010 – Przetwarzanie zostanie dla przetwornika AD1, którego mapę
przykład ustawienie przetwornika rozpoczęte w momencie pojawienia bitową przedstawiono na rys. 65.
w tryb ciągłej konwersji i ustawienie się zbocza na linii P0.16 A_VAL – Gdy bit DONE jest
bitów 1, 3, 5 spowoduje cykliczne 010 – Przetwarzanie zostanie ustawiony wówczas bity te zawie-
przetwarzanie wartości z kanałów rozpoczęte w momencie pojawienia rają bitową reprezentację napięcia
AD1, AD3 i AD5. się zbocza na linii P0.22 występującego w danym kanale prze-
CLKDIV – Bity te umożliwia- 100 – Przetwarzanie zostanie twornika.
ją ustawienie częstotliwości taktu- rozpoczęte w wyniku wystąpienia CHN – Sprawdzając stan tych
jącej przetwornik. Częstotliwość tą zbocza od układu porównującego bitów możemy określić, z którego
można wyznaczyć według wzoru: licznika MAT0.1 kanału pomiarowego pochodzi po-
FADC =(F pclk /CLKDIV)+1, gdzie F pclk 101 – Przetwarzanie zostanie miar. Odczytując je możemy okre-
jest częstotliwością taktującą syg- rozpoczęte w wyniku wystąpienia ślić, z którego kanału pochodzi po-
nały peryferyjne. Aby przetwornik zbocza od układu porównującego miar i przepisać go do wybranej ko-
pracował prawidłowo częstotliwość licznika MAT0.3 mórki pamięci.
taktowania musi być mniejsza od
DONE OV … – CHN … – A_VAL … –
4,5 MHz.
BURST – Ustawienie tego bitu
powoduje rozpoczęcie przetwarzania 31 30 … 27 26 25 24 … 16 15 14 13 12 11 10 9 8 7 6 … 0
cyklicznego z wszystkich kanałów Rys. 65. Rejestr AD1DR

96 Elektronika Praktyczna 8/2007


KURS

niu) zostanie wyświetlona rezystan- nia. Ostatnią czynnością jest zwró-


cja czujnika. cenie przez funkcję wartości zmie-
Pomiary przetwornikiem A/C rzonego napięcia. W funkcji main
będą inicjalizowane w sposób pro- inicjalizowany jest port szeregowy
gramowy i nie będziemy używać (9600 bd), wypisywany jest komu-
przerwań tylko oczekiwać w pętli nikat startowy, oraz inicjalizowa-
na zakończenie przetwarzania. Pro- ny jest przetwornik A/C. Następnie
gram przedstawiono na list. 13. program przechodzi do wykonania
Do inicjalizowania ustawień czuj- pętli głównej, w której wykonywane
nika służy funkcja initADC(), której są pomiary z kanału czujnika tem-
jedynym zadaniem jest ustawienie peratury (AD2), oraz potencjometru
Rys. 66. Sposób dołączenia do częstotliwości taktującej mikrokon- (AD1), wartości te są przeliczane na
mikrokontrolera testowego czujnika troler na wartość 1 MHz, włącze- napięcie i rezystancje, oraz wyświet-
temperatury nie przetwornika A/C oraz ustawie- lane za pomocą funkcji printf. Na
nie w rejestrze PINSEL1 linii portu końcu pętli umieszczona jest pętla
OV – Bit ten wykorzystywany P0.28 i P0.29 tak aby pełniły rolę opóźniająca tak, więc pomiary wy-
jest w trybie ciągłych pomiarów wejścia przetwornika. Do odczyty- świetlane są z częstotliwością około
i jego ustawienie oznacza, że po- wania wartości napięcia za pomocą 1 Hz. Wykonanie pomiarów z wy-
przednia wartość nie została odczy- przetwornika służy funkcja getADC(), korzystaniem przetworników A/C
tana przed wykonaniem kolejnego której argumentem jest numer ka- jest bardzo proste, i sprowadza się
pomiaru i w związku z tym zosta- nału z którego chcemy odczytać do obsługi dwóch rejestrów. Czy-
ła utracona. Skasowanie tego bitu wartość napięcia. W funkcji tej naj- telników zachęcam do wykonania
następuje automatycznie w wyniku pierw wybierany jest numer kanału samodzielnego ćwiczenia polega-
odczytania tego rejestru. (w trybie pojedynczego próbkowania jącego na rozwinięciu programu
DONE – Bit ten oznacza za- może to być tylko jeden kanał), o wyświetlanie rzeczywistej tempe-
kończenie wykonywania pomiarów oraz ustawiany jest bit START roz- ratury a nie rezystancji czujnika, co
przez przetwornik A/C, i jest on poczynający przetwarzanie. Następ- można w prosty sposób wykonać za
automatycznie zerowany w wyniku nie funkcja czeka w pętli while na pomocą aproksymacji wielomiano-
odczytania tego rejestru, lub zapi- ustawienie bitu DONE, będącego in- wej. W rzeczywistym programie po-
su do rejestru sterującego. Odczy- formacją o zakończeniu przetwarza- sługiwanie się przetwornikiem A/C,
tując ten bit możemy stwierdzić,
że rejestr ADDR zawiera prawidło- List. 13. Program obsługi przetwornika A/C
wy wynik pomiaru. #include „lpc213x.h”
#include „uart.h”
Na podstawie zawartości bi- #include <stdlib.h>
tów CHN, możemy określić kanał, #include <string.h>
#include <stdio.h>
z którego pochodzi wynik pomiaru,
natomiast wartość napięcia wystę- #define P028_ADC01_SEL (1<<24)
#define P029_ADC02_SEL (1<<26)
pującego w tym kanale przetwor-
nika możemy wyznaczyć według /* Initialize ADC */
wzoru: U out =V ref *(A_VAL/1023). inline static void initADC(void)
{
Zestaw rejestrów mikrokontrolera AD0CR = 60<<AD0CR_CLKDIV_BIT | 1<<AD0CR_PDN_BIT;
LPC213x umożliwiający podstawo- PINSEL1 |= P028_ADC01_SEL | P029_ADC02_SEL;
}
wą obsługę przetworników A/C jest
niewielki, a posługiwanie się nimi /* Get ADC Value */
int getADC(int Chan)
jest bardzo proste. Po zapoznaniu {
AD0CR &= ~AD0CR_SEL_MASK;
się z podstawowymi rejestrami mi- AD0CR |= 1<<Chan & AD0CR_SEL_MASK;
krokontrolerów LPC213x możemy AD0CR |= 1<<AD0CR_START_BIT;
while(!(AD0DR & AD0DR_DONE));
przejść do napisania bardzo pro- return (AD0DR >> 6) & 0x3FF;
stego programu (udostępniamy jego }
źródło na CD–EP8/2007B, w pliku /* Funkcja glowna main */
ep9a.zip), który w sposób progra- int main(void)
{
mowy będzie dokonywał pomiaru //Inicjalizacja UART
napięć analogowych i wyświetlał je Uart0Init(UART_BAUD(9600));
//Napis zachety
na terminalu. Do linii AD1 w ze- printf(„Mikrokontrolery z rdzeniem ARM cz IX\r\n”);
printf(„Przetwornik A/C (Czujnik temperatury)\r\n”);
stawie ZL9ARM podłączony jest initADC();
potencjometr umożliwiający usta- int kty,pot;
const float Vref = 3.3;
wienie napięcia, którego zawartość while(1)
zostanie bezpośrednio wyświetlona
kty = getADC(2);
na terminalu. Do linii AD2 nato- pot = getADC(1);
miast podłączony jest dzielnik na- printf(„Vpot = %.2f V\r\n”,(pot/1023.0)*Vref);
float Ukty = (kty/1023.0)*Vref;
pięcia, którego jedna gałąź stanowi printf(„Rkty = %.2f kOhm\r\n”,Ukty/(Vref–Ukty));
rezystancyjny czujnik temperatury for(volatile int i=0;i<1000000;i++);
}
KTY82 (rys. 66) więc zamiast na- return 0;
}
pięcia na terminalu (po przelicze-

Elektronika Praktyczna 8/2007 97


KURS

ny jest kanał, w sposób automatyczny. Obsługa


z którego po- przetwornika A/C w trybie ciągłym
chodzi po- z wykorzystaniem systemu przerwań
miar, i w za- jest niewiele bardziej skomplikowa-
leżności od na, a uwalnia program główny od
tego wynik zajmowania się przetwornikiem. Jak
pomiaru prze- już wcześniej wspomniano większe
kazywany jest mikrokontrolery LPC2134(2144)/6/8
do zmiennej posiadają wbudowane dwa prze-
AdcKty lub tworniki analogowo–cyfrowe, dlate-
A d c Po t . N a go wprowadzono w nich dodatkowy
z a ko ń c z e n i e rejestr ADGSR (0xE0034008), który
procedury ob- umożliwia równoczesne rozpoczęcie
sługi wysy- wykonywania pomiarów przez oba
łana jest in- przetworniki AD0 i AD1. Mapę bi-
formacja do tową rejestru ADGSR przestawiono
kontrolera na rys. 68.
Rys. 67. Tryb pracy ciągłej przetwornika A/C przerwań VIC Poszczególne bity mają takie
informująca same znaczenie w rejestrach AD0CR
bez systemu przerwań nie jest o zakończeniu procedury obsługi. i AD1CR, poszczególnych przetwor-
zbyt wygodne, zwłaszcza, gdy za- Funkcja główna programu (main), ników, z tym, że wykonywane na
leży nam na wykonaniu na bieżą- inicjalizuje port szeregowy (9600 nim operacje odnoszą się do obu
co pomiarów z kilku kanałów, oraz bd), wyświetla komunikat infor- przetworników równocześnie, co
wykonywaniu równolegle innych macyjny, a następnie konfiguruje umożliwia ich synchronizację. Wy-
czynności. W takiej sytuacji należy kontroler przerwań VIC, tak, aby korzystanie trybu ciągłego, powo-
wykorzystać możliwość zgłaszania przerwanie od przetwornika AD0 duje, że przerwania są zgłaszane
przerwań. W przetwornikach A/C zakwalifikowane zostało jak wekto- przez przetwornik bardzo często
nie występuje specjalny rejestr ste- ryzowane. Następnie inicjalizowany wraz z zakończeniem każdego prze-
rujący przerwaniami, i są one zgła- jest przetwornik A/C za pomocą twarzania. Zadaniem program obsłu-
szane do kontrolera VIC zawsze funkcji initADC(), w której włączany gi przerwania jest przepisanie wy-
w momencie ustawienia bitu DONE. jest przetwornik, ustalana jest czę- nik przetwarzania każdego kanału
Aby się nimi posługiwać wystarczy, stotliwość pracy przetwornika, oraz do odpowiedniej komórki pamięci,
odblokować przerwanie AD0 lub wybierane są kanały biorące udział co jest rozwiązaniem stosunkowo
AD1 w kontrolerze przerwań. Na w pomiarze ciągłym. Ustawiane są nie efektownym. Dużo lepiej było-
CD–EP8/2007 umieściliśmy program, także funkcje alternatywne portów, by wyposażyć przetwornik w dodat-
który podobnie jak poprzednio do- tak, aby pełniły rolę wejść A/C. Na kowy zestaw rejestrów umożliwiają-
konuje pomiaru napięcia potencjo- końcu ustawiany jest bit BURST cych przechowywanie danych po-
metru, oraz rezystancji czujnika i od tego momentu przetwornik miarowych z poszczególnych kana-
temperatury, ale zamiast programo- rozpoczyna ciągłe przetwarzanie łów, a przerwanie zgłaszać dopiero
wego sterowania przetwornikiem zgłaszając przerwania, natomiast w momencie wykonania wszystkich
posłużono się tutaj ciągłym trybem program główny wchodzi w pętlę pomiarów. Konstruktorzy Philipsa
pracy oraz przerwaniami. nieskończoną, w której co sekun- zauważyli ten problem i nowsze
W programie tym przetwornik po dę przelicza i wyświetla zawartość mikrokontrolery rodziny LPC214x,
zakończeniu przetwarzania automa- zmiennych AdcKty, AdcPot. Zmien- wyposażyli w zestaw dodatkowych
tycznie zgłasza przerwanie, zmienia ne te są w sposób automatyczny rejestrów, umożliwiających zgłasza-
kanał pomiarowy na następny, oraz aktualizowane przez procedurę ob- nie przerwań przez poszczególne
automatycznie rozpoczyna wykony- sługi przerwania przetwornika A/C. kanały niezależnie, oraz dodatkowe
wanie nowego pomiaru, co przed- Program główny bezpośrednio nie rejestry przechowujące wyniki po-
stawiono na rys. 67. wykonuje pomiarów przetworni- miarów z poszczególnych kanałów.
Kanały, w których będą wykony- kiem A/C a wszystko odbywa się Zastosowanie rozszerzonego zesta-
wane pomiary ustalane są za po-
– – – – – – – – – – – – – – –
mocą bitów SEL w rejestrze ADCR.
Jest to jest jedyny tryb pracy prze-
twornika, w którym można ustawić 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
więcej niż jeden bit w polu SEL.
EDGE START PDN CLK BURST
W momencie zgłoszenia przerwania
program obsługi powinien określić – – – – – – –
numer kanału, z którego pocho- 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
dzi wartość zmierzona (bity CHN), Rys. 68. Rejestr ADGSR
oraz umieścić wynik przetwarzania
– … ADINT OVERRUN DONE
w odpowiedniej zmiennej. W naszym
przypadku za obsługę przerwania 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
od przetwornika odpowiada funkcja 31 … 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
AdcIrq, w której najpierw sprawdza- Rys. 69. Rejestr AD1STAT

98 Elektronika Praktyczna 8/2007


KURS

– … ADGINTEN ADINTEN
7 6 5 4 3 2 1 0
31 … 8 7 6 5 4 3 2 1 0
Rys. 70. Rejestr AD1INTEN

wu rejestrów umożliwia sterowanie bem kompatybilności ze starszym


każdym kanałem niezależnie. Do bratem LPC213x, natomiast jego
sprawdzania statusu poszczegól- wyzerowanie umożliwia zgłaszanie
nych kanałów służy rejestr ADSTAT przerwań przez poszczególne kana-
(AD0: AD0STAT – 0xE0034004 AD1: ły, których maskę zezwoleń okre-
AD1STAT – 0xE0060004), którego ślają bity ADINTEN0…ADINTEN7.
poszczególne bity przedstawiono na Po wyzerowaniu mikrokontrolera
rys. 69. bit ten jest ustawiony w stan 1, co
DONE7...DONE0 – Bity te po- zapewnia tryb kompatybilności ze
dobnie jak globalny bit DONE in- starszymi modelami.
formują o zakończeniu wykonywa- W mikrokontrolerach LPC213x,
niu pomiarów w poszczególnych nie było żadnych rejestrów kon-
kanałach pomiarowych AD0..AD7, trolujących przerwania, ponieważ
oraz o tym, że w rejestrze kanału przetwornik potrafił zgłaszać tylko
danego pomiaru znajduje się pra- jedno przerwanie w momencie za-
widłowa wartość wyniku pomiaru. kończenia wykonywania przetwa-
OVERRUN0…OVERRUN7 – Bity rzania. Tutaj natomiast stało się
te podobne jak globalny bit OV konieczne wprowadzenie dodatko-
informują, o tym, że w danym re- wego rejestru konfiguracyjnego, po-
jestrze kanału poprzednia wartość nieważ każdy kanał przetwornika
pomiarowa nie została odczyta- może zgłaszać osobno przerwanie
na przed zakończeniem bieżącego po zakończeniu wykonania pomia-
przetwarzania, i została nadpisana ru. Do przechowywania wyników
przez nową wartość. pomiarów z poszczególnych kana-
ADINT – Flaga zgłoszenia prze- łów służą rejestry ADDR0…ADDR7,
rwania do kontrolera VIC, usta- których mapę bitów przedstawiono
wiana w stan 1 w momencie, gdy na rys. 71.
przetwornik zgłasza przerwanie. Znaczenie poszczególnych bitów
Sprawdzając stan tego rejestru jest takie samo jak w globalnym
mamy, globalny pogląd na stan rejestrze ADDR, jednak został on
przetwarzania wszystkich kanałów pozbawiony bitów CHN pozwalają-
pomiarowych przetwornika. Ko- cych odczytać numer kanału, po-
lejnym rejestrem umożliwiającym nieważ kanał jest tutaj ściśle okre-
maskowanie przerwań z poszczegól- ślony przez nazwę rejestru. Warto
nych kanałów jest rejestr ADINTEN tutaj wspomnieć ze rejestr ADDR
(AD0: AD0INTEN – 0xE003400C w LPC214x został przemianowany
AD1: AD1INTEN – 0xE006000C), na ADGDR i został zachowany dla
którego mapę bitową przedstawio- kompatybilności z poprzednimi mi-
no na rys. 70. krokontrolerami. Zastosowanie do-
ADINTEN0...ADINTEN7 – Usta- datkowych rejestrów dla przecho-
wienie danego bitu powoduje wywania pomiarów pozwala na-
możliwość zgłaszania przerwania pisać program w taki sposób, aby
przez określony kanał przetwornika dopiero po zakończeniu przetwa-
w momencie zakończenia przetwa- rzania przez wszystkie interesują-
rzania, i jest flagą zezwolenia na ce nas kanały było zgłaszane prze-
przerwanie, natomiast wyzerowanie rwanie. Czytelników posiadających
odpowiedniego bitu powoduje za- nowszy zestaw ewaluacyjny z mi-
blokowanie zgłaszania przerwania krokontrolerem LPC214x zachęcam
od określonego kanału. do poprawienia ostatniego przykła-
ADGINTEN – Ustawienie tego du w taki sposób, aby wykorzystać
bitu w stan 1 powoduje, że tylko nowe możliwości mikrokontrolerów
flaga globalnego zgłoszenia prze- LPC214x.
rwania powoduje generowanie Lucjan Bryndza, EP
przerwania, co jest zgodne z try- lucjan.bryndza@ep.com.pl

DONE OV … – RESULT … –

31 30 … 16 15 14 13 12 11 10 9 8 7 6 … 0
Rys. 71. Rejestry ADDR0…ADDR7

Elektronika Praktyczna 8/2007 99

You might also like