Do you have a question? Post it now! No Registration Necessary
- Vadim Harlamov
September 28, 2003, 6:59 am

Как поживаете, All ?
Пытаюсь сделать первый проект на MSP430F149
Hе получается запустить АЦП в режиме sequence of chanels и выгребать данные по
прерыванию при завершении преобразования.
Кто-нибудь из олл этот режим использовал?
Буду сильно признателен за примеры работы с АЦП в этом режиме сюда или на
vadim snipped-for-privacy@yahoo.com, да и вообще за любые примеры для сабж, желательно на С.
Диск от TI есть ;)
C уважением, Vadim Harlamov.
Пытаюсь сделать первый проект на MSP430F149
Hе получается запустить АЦП в режиме sequence of chanels и выгребать данные по
прерыванию при завершении преобразования.
Кто-нибудь из олл этот режим использовал?
Буду сильно признателен за примеры работы с АЦП в этом режиме сюда или на
vadim snipped-for-privacy@yahoo.com, да и вообще за любые примеры для сабж, желательно на С.
Диск от TI есть ;)
C уважением, Vadim Harlamov.

ADC in MSP430
Vadim Harlamov wrote to All on Sun, 28 Sep 2003 10:59:11 +0400:
VH> Пытаюсь сделать первый проект на MSP430F149
VH> Hе получается запустить АЦП в режиме sequence of chanels и выгребать данные
VH> по прерыванию при завершении преобразования.
VH> Кто-нибудь из олл этот режим использовал?
VH> Буду сильно признателен за примеры работы с АЦП в этом режиме сюда или на
VH> vadim snipped-for-privacy@yahoo.com, да и вообще за любые примеры для сабж, желательно на
VH> С. Диск от TI есть ;)
На этом диске должны быть примеры работы с АЦП для разных режимов. Файлики
называются типа fet140_adc12_xx.c.
Я использовал: запуск - много каналов однократно - стоп - прерывание -
забираем результат.
// -------------------------------------------------
//
//
// Инициализация
//
//
// Setup ADC12 & REF, ref = 2.5V, sampling time, multiCH
ADC12CTL0 = ADC12ON+REFON+REF2_5V+SHT0_10+SHT1_10+MSC;
// Use sampling timer, setup conversion mode, start in 0CH
ADC12CTL1 = SHP+CONSEQ_1+CSTARTADD_0;
ADC12MCTL0 = INCH_6+SREF_0; // Select channel A6 (Alpha),Vref+
ADC12MCTL1 = INCH_6+SREF_0; // Select channel A6 (Alpha),Vref+
ADC12MCTL2 = INCH_6+SREF_0; // Select channel A6 (Alpha),Vref+
ADC12MCTL3 = INCH_6+SREF_0; // Select channel A6 (Alpha),Vref+
ADC12MCTL4 = INCH_6+SREF_0; // Select channel A6 (Alpha),Vref+
ADC12MCTL5 = INCH_6+SREF_0; // Select channel A6 (Alpha),Vref+
ADC12MCTL6 = INCH_6+SREF_0; // Select channel A6 (Alpha),Vref+
ADC12MCTL7 = INCH_6+SREF_0; // Select channel A6 (Alpha),Vref+
ADC12MCTL8 = INCH_10+SREF_1; // Select channel A10 (Temperature), Vref+
ADC12MCTL9 = INCH_10+SREF_1; // Select channel A10 (Temperature), Vref+
ADC12MCTL10 = INCH_10+SREF_1; // Select channel A10 (Temperature), Vref+
ADC12MCTL11 = INCH_5+SREF_1; // Select channel A5 (Pressure), Vref+
ADC12MCTL12 = INCH_5+SREF_1; // Select channel A5 (Pressure), Vref+
ADC12MCTL13 = INCH_5+SREF_1; // Select channel A5 (Pressure), Vref+
ADC12MCTL14 = INCH_7+SREF_1; // Select channel A7 (Battery), Vref+
ADC12MCTL15 = INCH_7+SREF_1+EOS; // Select channel A7 (Battery), Vref+
ADC12IE = (word)(1 << 15); // Enable ADC12IFG.15
// -------------------------------------------------
//
//
// Запуск
//
static void Start()
{
__disable_interrupt();
ADC12CTL0 |= ENC; // ADC enable conversion
ADC12CTL0 |= ADC12SC; // ADC start conversion
__bis_SR_register(LPM0_bits + GIE);
}
// -------------------------------------------------
//
//
// Обработчик прерывания
//
__interrupt void TADC::ConversionComplete()
{
word x = ADC12MEM15; // clear interrupt flag
__bic_SR_register_on_exit(LPM0_bits);
}
Ну, и потом данные забираешь, обрабатываешь... Я это делаю не в обработчике
прерываний. Во время оцифровывания CPU вырублено, спит, чтобы не шуметь.
Просыпается в обработчике прерывания.
...so long!
### Тяжело в мyчении - легко в гpобy.
VH> Пытаюсь сделать первый проект на MSP430F149
VH> Hе получается запустить АЦП в режиме sequence of chanels и выгребать данные
VH> по прерыванию при завершении преобразования.
VH> Кто-нибудь из олл этот режим использовал?
VH> Буду сильно признателен за примеры работы с АЦП в этом режиме сюда или на
VH> vadim snipped-for-privacy@yahoo.com, да и вообще за любые примеры для сабж, желательно на
VH> С. Диск от TI есть ;)
На этом диске должны быть примеры работы с АЦП для разных режимов. Файлики
называются типа fet140_adc12_xx.c.
Я использовал: запуск - много каналов однократно - стоп - прерывание -
забираем результат.
// -------------------------------------------------
//
//
// Инициализация
//
//
// Setup ADC12 & REF, ref = 2.5V, sampling time, multiCH
ADC12CTL0 = ADC12ON+REFON+REF2_5V+SHT0_10+SHT1_10+MSC;
// Use sampling timer, setup conversion mode, start in 0CH
ADC12CTL1 = SHP+CONSEQ_1+CSTARTADD_0;
ADC12MCTL0 = INCH_6+SREF_0; // Select channel A6 (Alpha),Vref+
ADC12MCTL1 = INCH_6+SREF_0; // Select channel A6 (Alpha),Vref+
ADC12MCTL2 = INCH_6+SREF_0; // Select channel A6 (Alpha),Vref+
ADC12MCTL3 = INCH_6+SREF_0; // Select channel A6 (Alpha),Vref+
ADC12MCTL4 = INCH_6+SREF_0; // Select channel A6 (Alpha),Vref+
ADC12MCTL5 = INCH_6+SREF_0; // Select channel A6 (Alpha),Vref+
ADC12MCTL6 = INCH_6+SREF_0; // Select channel A6 (Alpha),Vref+
ADC12MCTL7 = INCH_6+SREF_0; // Select channel A6 (Alpha),Vref+
ADC12MCTL8 = INCH_10+SREF_1; // Select channel A10 (Temperature), Vref+
ADC12MCTL9 = INCH_10+SREF_1; // Select channel A10 (Temperature), Vref+
ADC12MCTL10 = INCH_10+SREF_1; // Select channel A10 (Temperature), Vref+
ADC12MCTL11 = INCH_5+SREF_1; // Select channel A5 (Pressure), Vref+
ADC12MCTL12 = INCH_5+SREF_1; // Select channel A5 (Pressure), Vref+
ADC12MCTL13 = INCH_5+SREF_1; // Select channel A5 (Pressure), Vref+
ADC12MCTL14 = INCH_7+SREF_1; // Select channel A7 (Battery), Vref+
ADC12MCTL15 = INCH_7+SREF_1+EOS; // Select channel A7 (Battery), Vref+
ADC12IE = (word)(1 << 15); // Enable ADC12IFG.15
// -------------------------------------------------
//
//
// Запуск
//
static void Start()
{
__disable_interrupt();
ADC12CTL0 |= ENC; // ADC enable conversion
ADC12CTL0 |= ADC12SC; // ADC start conversion
__bis_SR_register(LPM0_bits + GIE);
}
// -------------------------------------------------
//
//
// Обработчик прерывания
//
__interrupt void TADC::ConversionComplete()
{
word x = ADC12MEM15; // clear interrupt flag
__bic_SR_register_on_exit(LPM0_bits);
}
Ну, и потом данные забираешь, обрабатываешь... Я это делаю не в обработчике
прерываний. Во время оцифровывания CPU вырублено, спит, чтобы не шуметь.
Просыпается в обработчике прерывания.
...so long!
### Тяжело в мyчении - легко в гpобy.
Site Timeline
- » преобразователь 232-485
- — Next thread in » Microcontrollers (Russian)
-
- » C++
- — Previous thread in » Microcontrollers (Russian)
-
- » По моему это гениально
- — Newest thread in » Microcontrollers (Russian)
-
- » TLYp vs lgy
- — The site's Newest Thread. Posted in » Electronics (Polish)
-
- » Regulator ładowania aku 12V-12V / ogranicznik pr ądu
- — The site's Last Updated Thread. Posted in » Electronics (Polish)
-