K U R S
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,
mikroprocesorowych bardzo często zachodzi
jeżeli chodzi o przetworniki A/C
potrzeba pomiaru wielkości analogowych, które
i zawierajÄ… w sobie wszystko to, co
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-
układu wykonawczego. Do zamiany sygnału z postaci analogowej na
wane (21x4/6/8) zawierajÄ… po dwa
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
są raczej przeciętne, które w zależności od wersji zawierają do
wykorzystane do podłączenia inter-
dwóch 10 bitowych 8 kanałowych przetworników A/C oraz jeden
fejsu USB, dlatego pierwszy prze-
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-
analogowych.
gujÄ… siÄ™ trybem sukcesywnej aprok-
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,
Tab. 7. PrzyporzÄ…dkowanie poszcze-
jest stosunkowo niski w porówna- linie zaznaczone kolorem szarym
gólnych linii wejściowych przetwor-
niu z innymi mikrokontrolerami np. występują tylko w mikrokontrolerach
ników A/C (linie zaznaczone kolorem
ATmega8. Na rys. 63 przedstawiono 4/6/8.
szarym występują tylko w mikrokon-
budowę wewnętrzną przetworników Jak wspomniano w jednym z po-
trolerach 21x4/21x6/21x8)
A/C mikrokontrolerów LPC213x/ przednich odcinków każda linia I/O
Wejście A/C LPC213x LPC214x
214x. prezentowanych mikrokontrolerów
AD0.0 P0.27
może współpracować
AD0.1 P0.28 P0.28
z logiką 5 V, ale wyłącz-
AD0.2 P0.29 P0.29
nie w trybie GPIO. Gdy
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
AD1.6 P0.21 P0.21
Rys. 63. Budowa przetwornika A/C w mikrokontro- start przetwarzania wy-
AD1.7 P0.22 AD1.7
lerach LPC213x/214x znaczany jest w sposób
Elektronika Praktyczna 8/2007
95
K U R S
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 zródła napięcia referen-
nia. Skonfigurowanie odpowiedniego 11 cykli przetwornika (F ), nato- cyjnego, a napięcie to jest pobiera-
adc
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 zró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łą- zró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 zró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 /CLKDIV)+1, gdzie F 101 Przetwarzanie zostanie miar. Odczytując je możemy okre-
pclk pclk
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
31 30 & 27 26 25 24 & 16 15 14 13 12 11 10 9 8 7 6 & 0
powoduje rozpoczęcie przetwarzania
cyklicznego z wszystkich kanałów Rys. 65. Rejestr AD1DR
Elektronika Praktyczna 8/2007
96
K U R S
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ózniają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
#include lpc213x.h
wy wynik pomiaru.
#include uart.h
Na podstawie zawartości bi-
#include
#include
tów CHN, możemy określić kanał,
#include
z którego pochodzi wynik pomiaru,
#define P028_ADC01_SEL (1<<24)
natomiast wartość napięcia wystę-
#define P029_ADC02_SEL (1<<26)
pujÄ…cego w tym kanale przetwor-
nika możemy wyznaczyć według
/* Initialize ADC */
inline static void initADC(void)
wzoru: U =V *(A_VAL/1023).
out ref
{
Zestaw rejestrów mikrokontrolera
AD0CR = 60< PINSEL1 |= P028_ADC01_SEL | P029_ADC02_SEL;
LPC213x umożliwiający podstawo-
}
wą obsługę przetworników A/C jest
/* Get ADC Value */
niewielki, a posługiwanie się nimi
int getADC(int Chan)
jest bardzo proste. Po zapoznaniu {
AD0CR &= ~AD0CR_SEL_MASK;
siÄ™ z podstawowymi rejestrami mi-
AD0CR |= 1<krokontrolerów LPC213x możemy AD0CR |= 1< while(!(AD0DR & AD0DR_DONE));
przejść do napisania bardzo pro-
return (AD0DR >> 6) & 0x3FF;
}
stego programu (udostępniamy jego
zródło na CD EP8/2007B, w pliku
/* Funkcja glowna main */
int main(void)
ep9a.zip), który w sposób progra-
{
mowy będzie dokonywał pomiaru
//Inicjalizacja UART
Uart0Init(UART_BAUD(9600));
napięć analogowych i wyświetlał je
//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);
printf( Vpot = %.2f V\r\n ,(pot/1023.0)*Vref);
miast podłączony jest dzielnik na-
float Ukty = (kty/1023.0)*Vref;
pięcia, którego jedna gałąz stanowi
printf( Rkty = %.2f kOhm\r\n ,Ukty/(Vref Ukty));
for(volatile int i=0;i<1000000;i++);
rezystancyjny czujnik temperatury
}
KTY82 (rys. 66) więc zamiast na- return 0;
}
pięcia na terminalu (po przelicze-
Elektronika Praktyczna 8/2007
97
K U R S
ny jest kanał, w sposób automatyczny. Obsługa
z którego po- przetwornika A/C w trybie ciągłym
c h o d z i p o - z wykorzystaniem systemu przerwań
miar, i w za- jest niewiele bardziej skomplikowa-
l e żn o śc i od na, a uwalnia program główny od
t e g o w y n i k 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-
A d c K t y l u b tworniki analogowo cyfrowe, dlate-
A d c Po t . N a go wprowadzono w nich dodatkowy
z a końc zenie rejestr ADGSR (0xE0034008), który
procedury ob- umożliwia równoczesne rozpoczęcie
s ł u g i w y s y- wykonywania pomiarów przez oba
Å‚ana jest in- przetworniki AD0 i AD1. MapÄ™ bi-
formacja do towÄ… rejestru ADGSR przestawiono
k o n t r o l e r a na rys. 68.
Rys. 67. Tryb pracy ciągłej przetwornika A/C przerwań VIC Poszczególne bity mają takie
i n f o r m u j Ä… c a 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-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
twornika, w którym można ustawić
więcej niż jeden bit w polu SEL.
EDGE START PDN CLK BURST
W momencie zgłoszenia przerwania
program obsługi powinien określić
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
numer kanału, z którego pocho-
dzi wartość zmierzona (bity CHN), Rys. 68. Rejestr ADGSR
oraz umieścić wynik przetwarzania
& ADINT OVERRUN DONE
w odpowiedniej zmiennej. W naszym
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
przypadku za obsługę przerwania
31 & 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
od przetwornika odpowiada funkcja
AdcIrq, w której najpierw sprawdza- Rys. 69. Rejestr AD1STAT
Elektronika Praktyczna 8/2007
98
K U R S
& 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
Wyszukiwarka
Podobne podstrony:
Mikrokontrolery ARM cz1
Mikrokontrolery ARM cz10
Mikrokontrolery ARM cz14
Mikrokontrolery ARM cz8
Mikrokontrolery ARM cz12
Mikrokontrolery ARM cz15
Mikrokontrolery ARM cz19
Mikrokontrolery ARM cz3
Mikrokontrolery ARM cz6
Mikrokontrolery ARM cz22
Mikrokontrolery ARM cz18
Mikrokontrolery ARM cz18
Mikrokontrolery ARM cz11
Mikrokontrolery ARM cz13
Mikrokontrolery ARM cz17
Mikrokontrolery ARM cz5
Mikrokontrolery ARM cz20
Mikrokontrolery ARM cz7
Mikrokontrolery ARM cz9
więcej podobnych podstron