MSP430: mikrokontrolery, które (prawie) nie pobierają
Transkrypt
MSP430: mikrokontrolery, które (prawie) nie pobierają
P O D Z E S P O ŁY
MSP430: mikrokontrolery,
które (prawie) nie
pobierają prądu, część 7
�������I����������������������&-5���
�������I����������������������&-5���
��I����������������������&-5���
� ����������������-4�!���������������.-���������#!�4�����
������I����������������������&-5���
����������������&-5���
� �����.-� �4��������0����!�������-���.-��������������#�
����������������-4�!���������������.-���������#!�4�����
������-4�!���������������.-���������#!�4�����
������������ � #��0#+ � 9���� � 4����� � ��������! � �� � ��
�����.-�
�4��������0����!���� ���-���.-��������������#�
4��������0����!�������-���.-��������������#�
��:����.-���������������������-4�����������������
������������-4�!���������������.-���������#!�4�����
!���������������.-���������#!�4�����
������������
� #��0#+
� 4�����
� �� � ��
���
�
#��0#+
� 9����
� 4������ 9����
� ��������!
� ������������!
��
��#����������4�����������������+������:���#����!����
��.-�
�4��������0����!�������-���.-��������������#�
����!����
���-���.-��������������#�
���������������������-4�����������������
��:����.-���������������������-4�����������������
��!"���
��������
���������!
9���� � 4�����
� ��������! � �� � ��
�0#+
������.�
9������#��0#+
4����� ����������������#0�����������.��������
� �� � ��
��#����������4�����������������+������:���#����!����
���4�����������������+������:���#����!����
�������������
���.-���������������������-4�����������������
������������-4�����������������
�����.�
��!"��� ���������������#0�����������.��������
"���
���������������#0�����������.��������
���������4�����������������+������:���#����!����
"� $ �$ $"
�����������+������:���#����!����
�������������
�!"���
�
pięcia na drugim wejściu
Mikrokontrolery
MSP430
s�!"�$
wyposażone w dużą liczbę różnorodnych
���
�.�
��!"��� ���������������#0�����������.��������
�����������#0�����������.��������
"$O � $$ E
analogowym (port P6.1).
�
$
����������
�
peryferiów.
Czyni
nich uniwersalne narzędzie do zadań o zmieniającym
"� $to$z "
$ $ "
"� �!"���
�
��!"�$
Zakres wynosi 0...+2,5 V
��������0�����������������������:������������
�
��!"�$
E
�
$
� �!"���
E
$ charakterze.
się
Standardem
w elektronice jest konieczność „penetracji” świata ze względu na wykorzy$
$ "
"$O
$ �$
" "� $� $ "$O
�����������-����������5�������������������������������
�!"���
��!"�$
�"� �
E
��!"�$
E
"$O
$co
analogowego,
powoduje, że niezbędnym wyposażeniem mikrokontrolerów
stane wewnętrzne źródło
"$O
�����0�����������������������:������������
$��������0�����������������������:������������
� ��������-��:�$+�9���������������#����4�������4�����
�����������-����������5�������������������������������
referencyjne (2,5 V).
są
przetworniki
analogowo–cyfrowe.
Kolejne
przykłady
aplikacji
12–bitowego
-����������5�������������������������������
��:����0#�#4�+�1��������������������������
$��������-����
��������0�����������������������:������������
��������������������:������������
W odróżnieniu od po��������-��:�$+�9���������������#����4�������4�����
:�$+�9���������������#����4�������4�����
��-��������4��������#��������������#���������+�1�������
������-����������5�������������������������������
przetwornika A/C przedstawiamy w artykule.
�5�������������������������������
p r z e d n i c h p r z y k ł a d ó w,
��:����0#�#4�+�1��������������������������
$��������-����
#4�+�1��������������������������
$��������-����
������
�
�����
�
��
�
�
�
���������#
�
�������
�
#0�����
���-��:�$+�9���������������#����4�������4�����
�������������#����4�������4�����
w tym wyzwalanie konwer�4��������#��������������#���������+�1�������
��-��������4��������#��������������#���������+�1�������
������0����:�-�0����������:�����-���$+�8�-�������������
��0#�#4�+�1��������������������������
���������������������
$��������-���� $��������-����
sji jest dokonywane sprzęPomiar
napięcia
Wyznaczana
wartość
Analogowe
wejście
�
������
�
�����
�
��
�
�
�
���������#
�
�������
�
#0�����
��� �����
� �� � �
� ���������#
� �������
� #0�����
���0���
� �� � �#�:
� -�0�����-/
� ���:� � $+ � >���
������4��������#��������������#���������+�1�������
��������������#���������+�1�������
towo z wykorzystaniem
napięcia
w
[mV]
przechozasilania
0...2,5
V
�:�-�0����������:�����-���$+�8�-�������������
������0����:�-�0����������:�����-���$+�8�-�������������
�����������������5#��-4���������-4���:�����������0��
��� ������
� �� � �
� ���������#
� ������� � #0�����
���������#
jest
w zmiennej
D r u g� i�������
p r� z�#�:
y k� ł#0�����
a�d-�0�����-/
w y- wywana
Przykład trzeci prezen- licznika (TimerA1). Do��0����:�-�0����������:�����-���$+�8�-�������������
�����
�
���0���
�
��
�
���:�
�
$+
�
>���
�����:����-��������-��4�����4����0������4�����:-�����#+�
� �� � �#�: � -�0�����-/ ���:� � $+ � >���
�����:�����-���$+�8�-�������������
ko r z y s t u j e w e w n ę t r z n y napiecie (list. 8).
tuje algorytm pomiaru na- datkowo wykonywana jest
� � ���0���
�����������������5#��-4���������-4���:�����������0��
1���0���4�� ����
���������-4�
� ��������4�
� ���
���������5#��-4���������-4���:�����������0��
� �� � �#�:
� �-�0�����-/
� ���:�
� $+ � >���
�#�:
�
-�0�����-/
�
���:�
�
$+
�
>���
dzielnik
napięcia
zasilania
������-��4�����4����0������4�����:-�����#+�
��:����-��������-��4�����4����0������4�����:-�����#+�
����-��=�����������������#�����-���������4�����-/������
�������������5#��-4���������-4���:�����������0��
#��-4���������-4���:�����������0��
o współczynniku podziaList. 8. Pomiar� ���
napięcia zasilania
� � 1���0���4����� � ���������-4�
� ��������4�
-��-��������-��4�����4����0������4�����:-�����#+�
����
� łu
���������-4�
� ��������4�
���
�������
� �����0����
� � � �����-�
������-/
� 5���#0+�
�����4����0������4�����:-�����#+�
1:2.
Maksymalny
błąd � �//
Plik
naglowkowy
�0���4�����-��=�����������������#�����-���������4�����-/������
���������������#�����-���������4�����-/������
9���-����
� �����.�
��������#�
�#include
���4�#4�
� ��: � ��
� zmierzonego
���� �� ��������4�
���������-4�
� ��������4�
� ���„msp430x44x.h”
na �dzielniku
���������-4�
� ���
� ����0����
�������
� ����0����
� � �������-/
� �����-�
� ������-/ � 5���#0+�
�
�
�
�����-�
�
5���#0+�
�������4������������+�
��=�����������������#�����-���������4�����-/������
napięcia wynosi ±0,04 V.
�����#�����-���������4�����-/������
// Zmienne globalne
���
9���-����
� �����.�
�� ��������#�
���4�#4�
� ��: napiecie
� ��
��
� ��������#�
� ��:� signed
� ��
�� ����0����
� pomiaru
� �����-�
�pozo������-/
5���#0+�
short
= 0;
Algorytm
� �������.�
�����-�
� �������-/
� ���4�#4�
5���#0+�
�������4������������+�
���������+�
��-����
�
�����.�
�
��������#�
�
���4�#4�
�
��:
�
��
stawiono
niezmieniony.
��0�����15�����6����
// Przerwanie po zakonczonej konwersji
� � ��������#�
� ���4�#4� � ��: � ��
#pragma vector = ADC12_VECTOR
���4������������+�
Niewielka różnica pojawia
�
�+�
__interrupt void ISR_ADC12(void)
1�#�������0����������#4������:��������������
się
tylko
w
konfiguracji
{
��0�����15�����6����
�
��15�����6����
����:-�� � ��������� � � � �������� � "�$+ � ��������
�0���
napiecie = �ADC12MEM0;
przetwornika
oraz
w
funk�
0�����15�����6����
__low_power_mode_off_on_exit();
// LPM exit
1�#�������0����������#4������:��������������
�������0����������#4������:��������������
�����������������������#�����:-���������A�!��G+�
��6����
}
cji translacji wyniku. Do
���������
����:-��
���������
���������� �"�$+
� � ��������
� "�$+ ����������
� �0���
�
�
�
�
��������
�0���
1�#�������0����������#4������:��������������
���������#4������:��������������
rejestru
30��� konfiguracji
� ������� � wy������#
� �������������
// Inicjacja
przetwornika ADC12
�-��
�����������������������#�����:-���������A�!��G+�
�������������#�����:-���������A�!��G+�
� ���������
� ��ADC12MCTL0
���������
�������� � "�$+� �0���
� ��������
�0���
void � ADC12Init(void)
niku
na- � ��4����
� ��������
� "�$+
�����������+
� @�������� � �����-�
� ��: � ���� � ��
{
�������������������#�����:-���������A�!��G+�
leży
wpisać
kanał� �nr
11� � � 5#��-4�
30���
�������
��������������
������#
�ADC12CTL0
�������������
���#�����:-���������A�!��G+�
= SHT0_3 + SHT1_3 + REFON + REF2_5V + ADC12ON;
��
� �������
� � ������#
���5��#��-4�
� ������������
����
� �������-4��
SingleConv, Ref–>2.5V, turn on ADC12
��+30���
(bity
ADC12MCTL0.INCH).
�����������+
� @��������
� �����-�
�����
��4����
�
��:
�
����
� ��// ADC12, +SHtime–>32,
�
@��������
�
�����-�
�
��4����
�
��:
�
�
��
����#+�1����4����#����5��#��-4������#��12"$�2>8��
�
�������
�
������#
�
�������������
ADC12CTL1 = CSTARTADD_0
SHS_0 + SHP + ADC12DIV_7 + ADC12SSEL_1 + CONSEQ_0;
�����
� Ponadto
������# �ze�������������
względu
na
�
//
MEM0,
ADCosc, ACLK/8, Single sequence,
� �������������
� ����� ��������-4��
� � 5#��-4� �� ��
�������-4��
� � ���5��#��-4�
������������
����
� �� ����
5#��-4�
�����������������0����""�(�����12"$�2>8�+;@2B)+�
�������+
� @��������
� �����-�
� ��4����
ADC12MCTL0 = SREF_1 + INCH_11;
// 0..Vref, in –> Vdiv
����
� �����-�
� ��4����
����:
� �� � ��: � ����
szerszy
zakres
mierzonych
�����4����#����5��#��-4������#��12"$�2>8��
����#+�1����4����#����5��#��-4������#��12"$�2>8��
ADC12IE = 0x0001;
// MEM0–>przerwanie
���������������:�#�������������������������-/�����:��
�#��-4�
������������
� ����
� � � 5#��-4� � �������-4��
������
� �����
�
�
�
5#��-4�
�
�������-4��
ADC12CTL0 |= ENC;
// włącz konwersję (czekaj na wyzwolenie)
napięć należy ustawić re�����������������0����""�(�����12"$�2>8�+;@2B)+�
��������0����""�(�����12"$�2>8�+;@2B)+�
�����
�
#������
�
��5����-4:
�
��
�
�����.�
�
$!FG
�
(����
�#+�1����4����#����5��#��-4������#��12"$�2>8��
}
���5��#��-4������#��12"$�2>8��
ferencję na wartość 2,5 V
���������������:�#�������������������������-/�����:��
�����:�#�������������������������-/�����:��
�12"$2>8�+ J6$KF)+
������������0����""�(�����12"$�2>8�+;@2B)+�
���""�(�����12"$�2>8�+;@2B)+�
// Glowna funkcja
(bit
ADC12CTL0.REF2_5).
�����
� #������
� �����.�
� $!FG � (����
�����
� ��5����-4:
� �����5����-4:
� �����.�� ���$!FG
� void
(���� main(void)
�����������:�#�������������������������-/�����:��
������������������������-/�����:��
Wartość
napięcia
moż9����.�
�
����:-��
�
�����
�
����-��
� � � ��������4�
{
�12"$2>8�+
J6$KF)+
8�+
J6$KF)+
��
� ������.�
� (���� short ShortTmp1;
unsigned
// Zmienna pomocnicza
5����-4:
�na
��� wyznaczyć
���5����-4:
�����.� � �$!FG
(���� � $!FG
z poniższej
� � #������
�������.-��
"$2>8�+ zależności:
J6$KF)+� ����:-�� � ����� � ����-��
9����.�
�
�
�
��������4�
F)+
WDTCTL = WDTPW + WDTHOLD;
// watchdog, off
��.� � ����:-�� � ����� � ����-��.� � � ��������4�
��� ��+ � __enable_interrupt();
// system przerwan, wlaczony
�������.-��
.�/��
��+ ���$�
�$
9����.�
�
����:-��
�����
����-��
�
�
�
��������4�
���
"$
:-�� � ����� � ����-�� � � � ��������4�$
// inicjacja przetwornika ADC
��.-��
. ��� ��+ � ADC12Init();
. ��� ��+
� �+
� "$ �$ ���
$F���
.
��+
��$�
. /�� ��+
��$�
�$
/��
while
(1)
// glowna petla
��� � �$ ����"!$$��+ ��$ ���
. � �+ ��$�
��+
$
$"$. �����7*
{
..��� /��
��+
� ��$�
��+
�$
/��
���
ADC12CTL0 |= ADC12SC;
// wyzwolenie pojedynczej konw.
+ ��$� $F���
�$
"$ �+ � ��� $F���
$"$�+ ���$
__low_power_mode_3();
// LPM3
$,������
� ���
� �"!$$��+
� ����
���������-4�
���$
���0����
� �+ ��$�
����"!$$��+
���
�+ ��$�. /��
�$
��$
���
$F��� �+ � ��7*
��7*
�. ����0-���������������0-�����
�+
�
F���
ShortTmp1
=
napiecie;
// Przeliczenie wartosci
�
�+
��$�
�$
�"!$$��+
��$
/��
���
���
�$ ����"!$$��+
ShortTmp1
= ShortTmp1 << 3;
// 1 + 7 / 32 –> 1,22
� � � ��$
�������� ���������-4�
� ���0����
�����
�
���� ���7*
���������-4�
�
���0����
��7*� � �,������
�7 optymaE
$ �"ShortTmp1 –= napiecie;
Zgodnie
z ideą
����0-���������������0-�����
"!$$�
�" �"
�������������0-�����
,������
� � � ����
�� ���������-4�
� ���0����
F ShortTmp1 = ShortTmp1 >> 5;
����
� ���������-4�
���0����
�$
�$
lizacji rozłożymy
współ� $ napiecie += ShortTmp1;
�
0-���������������0-�����
�7 $ �" E
$ �"
�7
Eprzekształcenia:
���0-�����
�"
__no_operation();
9���-����
� �"
�����.�
� ����:-��
� � � V�+W�
"!$$�czynnik
�""!$$�
�"
�
F �$
�$
��$
$F }
�7
E
$
�"
�$
$
�7 ����-/�������4�������������4���������+
E"!$$� $ �"
�"
�"
}
F
�" 9���-����
�"�$ F
��$�����.��$ �� ����:-��
�$
�$� �����.�
���-����
� V�+W� � � � V�+W�
$ � ����:-��
����-/�������4�������������4���������+
�� 9���-����
�����4�������������4���������+
�
�����.�
�
����:-��
������������78���!44�9&'�
�����.�
� ����:-�� � � � V�+W� � � � V�+W�
����������4���������+
/�������4�������������4���������+
Elektronika Praktyczna 3/2008
72����0�� � ����-� � �������#4� � ������� � ������#�
� ������������78���!44�9&'�
�����78���!44�9&'�
����:-��
�
��
�
��#���
�
��4.-�#
�
���������
�
(����
��*+")+�
����������78���!44�9&'�
����0�� � ����-� � �������#4� � ������� � ������#�
12–bitowy przetwornik A/C
P O D Z E S P O ŁY
Elektronika Praktyczna 3/2008
73
�������I����������������������&-5���
P O D Z E S P O ŁY
��15�����6����
!
. ��� � �+ �
�$ ���
"$
$
$F����+ �
. " ��+ ��
�$ ��� ��!*"� �+ ��$ ���
��7*
9����.������0-����������������0-�������4����:�����
��������4�-����������������������-��
F
�!*"� ��!*$F
O
aby� �����.�
otrzymać
,���� � ��Zatem
� �������
� ��=-��� � �
wartość
końcową
��#����� � ��:�
� ������
� �������4�nale� � � ��������� �
ży zsumować pięć wyni������O�(�����#���������������)+�9������������
ków konwersji i podzielić
����������4���������4���������+
. " ��+ ��
List. 9. Pomiar napięcia 0…+2,5V
// Plik naglowkowy
#include „msp430x44x.h”
// Zmienne globalne
signed short napiecie = 0;
// Przerwanie po zakonczonej konwersji
sumę przez 8 (przesunąć
��#��������#�
#pragma vector = ADC12_VECTOR
__interrupt void ISR_ADC12(void)
'-./
)2$���3 {
,����������5��#��-4�����������������������
w prawo o 3). Wynik jest
napiecie = ADC12MEM0;
// *5 / 8 –> 0,625
� � �����������
� ����0�����do� 4���
� �����+ � ,����0 �
zapisywany
zmiennej
napiecie += ADC12MEM1;
��0#����-�����MB�(�����12"$2>8�+�B>�!")��
globalnej napiecie.
napiecie += ADC12MEM2;
+= ADC12MEM3;
�����4������ � ��0�#
� �#�������
Zmian �w �������-4�
konfiguracji
*����23!� napiecie
napiecie +=����7�5�����
ADC12MEM4;
,�������� � R���0�
� ���������
� �� � >�����" �
przetwornika
w porównanapiecie = napiecie >> 3;
__low_power_mode_off_on_exit();
// LPM exit
niu z� poprzednimi
�12"$2>8"+�B�)
���� � ��� � ���-przy� �����������
}
�%&'()
kładami jest kilka. Został
������-4��(�����12"$2>8"+2?@�JP)+�
���#�
// Inicjacja przetwornika ADC12
nieco wydłużony
czas
S/H � ���
�����0� � ���5��#��-4�
� �������
� ����:-�
void ADC12Init(void)
{
(bity � ADC12CTL0.SHT0,1)
Q��� � � � ��:-�#
��4������ � ���5��#��-4�-/ �
-(*��:�/,;.<�:�/,;)*@+�:�%&'().<!
ADC12CTL0 = SHT0_5 + SHT1_5 + REFON + REF2_5V + ADC12ON;
w celu �zmniejszenia
wpły//
ADC12,
SHtime–>96,
MultiConv,
Ref–>2.5V,
turn
on
�������%&'()=�19����>?�)=�1����'��$=�/�6>?)�@+=���������%&'()
�������� � ��5����-4:
� � ����:-�# � ��5����-4��
�
ADC12
wu
impedancji
multiplek�:�191*��:�19��:�%&'()&0+*A�:�%&'()11,7*(�:�'.<1,B*�!
ADC12CTL1 = CSTARTADD_0 + SHS_1 + SHP + ADC12DIV_7 + ADC12SSEL_1 + CONSEQ_3;�12"$�2>8�&�+� J6) � � � ������ � ��������� �
������������5,5�=�%&'���=�%'7C�D=�1�������E�����=
sera. Zmieniono
źródło
// start MEM0, TimerA, ACLK/8, Repeat sequence,
�12"$�2>8�&�+;@2B)+
� 1��������
� ������� � �
ADC12MCTL0 = SREF_1 + INCH_1;
// 0..Vref, in –> io1
<'9*((!��������������������+��6=����>?�+��$
wyzwalania
na TimerA1
ADC12MCTL1 = SREF_1 + INCH_1;
�����
�
#���������
�
���#
�
��=-�
�
������-4� � J?�
������������������������5,5�>?��"�������
ADC12MCTL2 = SREF_1 + INCH_1;
(bity ADC12CTL1.SHS)
�12"$�2>8�+J?�)+�9���4��������������=�(�12"
�������������������������GH�"��������#I�2�"���#������"�������3
ADC12MCTL3 = SREF_1 + INCH_1;
oraz tryb pracy przetworADC12MCTL4 = SREF_1 + INCH_1 + EOS;
#������� � ���� � ��� � (�12"$;J+�12"$;J�) � ���
ADC12IE = 0x0010;
// MEM4–>przerwanie
nika na sekwencyjny (bity
ADC12CTL0 |= ENC;
// włącz konwersję (czekaj na wyzwolenie)
�����������������0������������������������4������
ADC12CTL1.CONSEQ).
}
�����+�
Rozbudowy wymagała kon-
// Glowna funkcja
void main(void)
{
(!��������������������������������������"�
WDTCTL = WDTPW + WDTHOLD;
figuracja komórek pamięci
// watchdog, off
wyników. Każdy z pięciu
"�;��65�1���3�<�
rejestrów konfiguracyjnych
���-��� � ���- � � � �������������� � ������
&!�����������������������������=��66
TACCR0 = 204;
// Cykl 1/4s (5 konwersji w cyklu)
musi zawierać informację
TACCR1 = 102;
// Wypelnienie 1/2
���������������������������������"�����=�����"���
-5������������������:��4��������#����-��-/
TACTL = TASSEL_1 + ID_3 + MC_1 + TACLR;
// Timer A, ACLK/8, Up to CCR0
TACCTL0 = OUTMOD_0;
TACCTL1 = OUTMOD_3;
// Set/Reset
����������������������������#��#����"����������%&'
P6DIR &= ~0x02;
// konfiguracja 6.1;
�����������������������������������
P6SEL |= 0x02;
__enable_interrupt();
// system przerwan, wlaczony
��������������������������"����������#�����"�#������
������������������������7�5�
ADC12Init();
// inicjacja przetwornika ADC
while (1)
��������������������������"����"�������������
{
__low_power_mode_3();
�LL��!
����(�:�A����)�>?�(=))
!
__no_operation();
�??�@!
__no_operation();
}
!�����������
}
// glowna petla
// LPM3
o napięciu referencyjnym
4�� � ����= � ���-�����
� �����5� � ���-���� � � � ������ � �
(bity ADC12MCTL0–4.
������������#!��������#0������������������#4�
SREF) i kanale pomiaro����#����������:-�4+�����������#����#0#����������
wym (bity ADC12MCTL0–4.
�0�-�������5����-4����������+�$!F��+�S�.����#�#
INCH). Dodatkowo ostatni
������-4:���������������4���������������������-�
rejestr wymaga ustawie@�����������4���������0�-�����������������4�.
nia bitu końca sekwencji
��� � �������#4��+
� ����:��4�
� �������! � �� �
EOS (bit
ADC12MCTL4.
���5��#��-4�������4�����-/������������������:��
EOS). W rejestrze prze��� � ���� � ��
� ���������
� � � ����-��
� 4��� � ���-
rwań
(ADC12IE)
ustawiamy piąty bit (ADC12IE.
ADC12IE4) tak, by przerwanie wystąpiło po zapisie do ostatniej komórki
w serii.
Ź r ó d ł e m z e g a r a d l a przerwanie. W obsłudze
seria 5 pomiarów. Każdy
z wyników jest zapisywany licznika jest sygnał ACLK, tego przerwania może być
w osobnej komórce bufora. który wymaga oscylatora dokonywane np. uśred- Może się przydać
nianie
w serii.
XLF1.� �����������!
Przewidziano
W ten sposób
zrePodczas pracy z prze���-/ � ����0����!
� �� można
��-����#+
� ,������
� 4��oscy� � � ���#0
� �MB � wyników
��
alizować uśrednianie
lub lator zegarkowy o częstotli- W naszym
�����4��������:�������
�������-���#�����������������0������������������
2+� przykładzie do- twornikiem analogowo–
wości 32,768 kHz. Dodat- datkowo przekształca się cyfrowym w MSP430 warto
����")+ przekształcenie.
� 1���������
�������I�������
�������I��
N���0��
� ������
� ��� � ��-����� � dziel4��� � ����0
� �28Q!�
wynik
do postaci wartości pamiętać o kilku rzeczach:
kowo
wykorzystano
Licznik
generuje
w
tle
��+�Q�������������
�������������-�������X86"+����������������-������
przebieg
któ- nik częstotliwości podsta- napięcia w [mV]. Wartość wiemy,
że rdzeń procesora
���-� � �#5���+
� 9 � prostokątny,
����
�������I�������������������
�������� � � � -�:��������.-� � �$!E*O�B�+
� 1���������
napięcia
rego zbocze
pobierając
9����.�
� ����:-��
� �����wyznaczyć
����-��
� �potrafi
� ��������4�
�12"$2>8"+J@2�T�"
9����.�
�można
����:-��
� �����
� ����-��
� �pracować
� ��������4�
�12"$2>8"+J
� #.���������
� �#�� narastające wy licznika przez 8. Przy
��������������������-�:��������.-������������-������
z
poniższej
zależności:
jest wykorzystywane
do założeniu, że dokonywane
niewiele
prądu,
ale
moduły
�������.-��
��������
� � � -�����
� ��
�������.-��
��������
� � � -��
sekun-� ����� � ����-�� � � � ��������4� „analogowe”
inicjacji każdej ������O+�������0�����#!���������������:������������
konwersji będą 4 pomiary
potrzebują
go
9����.�na
� ����:-��
�0�-��������=����-��
�0�-��������=
. ��� � �+.���� � �+ � �12"$2>8"+J@2�T�")+�Q���4�������
�������� w
� ����������!�
�� � ���#��: � �
� �� � po
F! � �����.�
� ��4����# �.��-������
dę� �����
w serii
5, wartość
serii. Po zakończeniu
więcej.
Pobór� ?-�����
��" ��+ ��
�$"$��� �$kilkakrotnie
�������.-��
�������� � � � -�����
� ���-+
��������4�
� ��� � ��
" ��+ .
��������4�
��
"$
���
$
$
rejestru licznika wynosi:
serii � 4���
pomiarów
prądu
modułu
przetwor����������
� ��� wyzwalane
������
�0�-��������=����-���������-������
�����������+
� ���� � ���:
. ��� � �+ �
�����������+
�
$F����+
�
$F����+
�
jest przerwanie. Z następnika
z włączoną
�$ ���
��������=-����#�������
��������4�
���referencją
� ��
� � � 4���� � ���
�$E*O� �".�" ��+
"$
����������#��+
. "��
��+ .
��
�+ ��$
�� �$ ��� ��!*"�
�$ ��� ��!*"�
�+ ��$ ��� � ����������#��+�9����
���
$" ��+��7*
'$$�0�
�$��
zboczem zegara sewynosi
ok.
2,5
mA.
��7*
������+ � ,nym
� ����:����
�����������+ � ����
� ��:�������
������!
� ��� ��
�������
��Jeśli
-���#
���MB
O��� �"��F $F����+ �
-���#
ria pomiarów
budujemy
aplikację zasilaną
� ���������
� 4��� � ��� zapisywana
����������#��+�9�����������������
. " ��+ 9����.������0-����������������0-�������4����:�����������
��
�$ ��� ��!*"� �+ ��$ ���
9����.������0-����������������0-�������4����:�����������
�������.-��4����������
�������.-��4���
��7*
jest od początku. Zarówno
bateryjnie, ma �to
Procesor w trakcie
pra�MBogromne
� ����
� ���������
��������4�-����������������������-��
��������4�-����������������������-��������� � -���#-�����MB!�������4����
-�����MB!����
przetwornik, jak i moduł cy 9����.������0-����������������0-�������4����:�����������
Nie
zapominajWartość współczynnika znaczenie.
przetwornika pozosta�������.-��4�����������������#4��
��� � ��������4�
����
���
� ��������4�
F
F
S/H w dalszym ciągu są je w
przedaje
się my zatem wyłączać
trybie uśpienia. Po przekształcenia
�!*"� �!*"�
��!*$F
��!*$F
��������4�-����������������������-��
-�����MB!�������4�����4����5��#��-4
�����
�
�����
�
��+
�
���
�����
�
�����
��
O
O
taktowane z własnego re- ostatniej konwersji w se- zapisać
jeśli go w danej
*MO z zadawalającym twornika,
��� � ��������4�
� � � ��4����.�
� ���
Fprzybliżeniem
�#�����������!
�
��+
�
�#�����������!
zonatora RC.
chwili
nie
potrzebujemy.
w
postaci:
rii budzi go z tego stanu
�!*"�
,���� ���!*$F
�� � �������
� �����.�
� ��=-���
� ������� ������
,����
� �� � �������
� �����.�
� ��=-���
74
����� � ����� � ���5��#��-4�
��+ � ���6!
� ����
� � ���
� �����
O � ������ � �������4� � � � ���������
���5��#��-4�
�
��#�����
� ��:�
� �#�:� � �#�:�
��#�����
� ��:� � ������ � �������4� � ��#�����������!
� ���������
�
��+
�
$�Y+
�
?������
��������-/�����#+�@
��������-/��
,���� � ������O�(�����#���������������)+�9�������������4����
�� � �������
�
�����.�
�
��=-���
�
������
������O�(�����#���������������)+�9�������������4����
���5��#��-4� ��������������
�������������
� ��4���
�������������
��#����� � ��:�
� ������
� �������4� � � � ��������� � �#�:� Elektronika Praktyczna
3/2008
����������4���������4���������+
����������4���������4���������+
��������-/�����#+�@�������������
�������.-��
�
�������
�������.-��
��
������O�(�����#���������������)+�9�������������4����
��������������������#!
� ��4����#
� ��
�D�J8+
,����������5��#��-4��������������������������#�
,����������5��#��-4��������������������������#�
� �����
�������#!
� ���
P O D Z E S P O ŁY
eMeSpEk 430
Czytelników zainteresowanych mikrokontrolerami MSP430 zachęcamy
do udziału w konkursie (piszemy o nim na str. 8) i odwiedzenia targów
Automaticon 2008, podczas których będzie można otrzymać komputerek
z mikrokontrolerem MSP430F1232 (egzemplarz modelowy widoczny na
zdjęciu poniżej).
Oprócz mikrokontrolera wyposażonego w 8 kB + 256 B pamięci Flash
i 256 B pamięci RAM, komputerek wyposażono w dwa źródła sygnałów
zegarowych, dwa mikroprzełączniki, interfejs RS232, złącze JTAG, złącze
USB (do zasilania), stabilizator napięcia 3,3 V, głośnik piezoceramiczny,
gniazdo baterii 3 V oraz złącze wyświetlacza LCD 2 x16 znaków
ze sterownikiem 44780. Wszystkie linie I/O wyprowadzono na złącza
szpilkowe.
Opis budowy komputerka opublikujemy w EP4/2008 wraz ze
szczegółowym wykazem nagród.
Ostania uwaga dotyczy
konfiguracji portu wykorzystywanego do pomiarów analogowych. Należy
nie zapominać o ustawieniu odpowiedniego rejestru PxSEL. Wiąże się to
z możliwością wystąpienia
prądów pasożytniczych
w przypadku, gdy analogowy sygnał będzie w okolicy wartości napięcia progowego bufora. Rejestr PxSEL wyłącza bufory portu,
dlatego nie ma nawet konieczności odpowiedniego
ustawienia kierunku transmisji danych.
Piotr Tadrzak
Contrans TI
Pamiętajmy również, że bity
konfiguracyjne w rejestrach
przetwornika w większości
nie mogą być zmieniane
w trakcie jego pracy (bit
ADC12CTL1.ENC=1).
Ko l e j n ą s p r a w ą j e s t
„gospodarka” sygnałami
zegarowymi i częstotliwością taktowania peryferiów,
a podczas konwersji A/C
należy wyłączać rdzeń
procesora. Wspomnieć warto również o rozsądnym
dobieraniu czasu próbkowania w układzie S/H oraz
o podstawie jego generacji. W zależności od tego,
jakim zegarem taktujemy
moduł, różne będą czasy
S/H, przy tej samej konfiguracji rejestrów.
R
E
K
Elektronika Praktyczna 3/2008
L
A
M
A
75