|
|
  |
ADC в MSP430F1132 |
|
|
|
Jan 31 2008, 09:18
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 5-01-05
Пользователь №: 1 809

|
Вопрос от "чайника". Пытаюсь измерить VCC через внутренний MUX с опорой 1,5V, а потом в случае превышения VCC напряжения 3V, перейти на измерения с опорой 2,5V. Но измерения с опорой 1,5V дают завышенный результат, как будто нужно расчитывать значение не из VCC/2 , а (VCC - 1V)/2. При этом измерения через пины дают правильный результат. Руководствуюсь примерами типа fet120_adc_05.c от TI. В чем я не прав?
|
|
|
|
|
Feb 1 2008, 06:39
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 5-01-05
Пользователь №: 1 809

|
Напряжение VCC меняется в диапазоне 2.0V - 3.4V. Нет стабильного питания. AdcChannel = VCC_CHNL; // VCC_CHNL=11 ADC10CTL1 = AdcChannel<<12; ADC10CTL0 = SREF_1 + ADC10SHT_2 + ADC10SR + REFON + ADC10ON + ADC10IE; ADC10CTL0 |= ENC + ADC10SC; Нужно измерять VCC и в зависимости от значения вкл/выкл зарядник. Все просто - казалось-БЫ.
|
|
|
|
|
Feb 1 2008, 12:33
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 5-01-05
Пользователь №: 1 809

|
Спасибо за советы. А насчет опоры, так при VCC=2V VREF=2,5V явно не "раскачается". Задача и стоит - по мере заряда на VCC переключиться с VREF=1,5V на VREF=2,5V. А когда включать CPUOFF=1 до запуска ADC или после? Спасибо.
|
|
|
|
|
Feb 1 2008, 13:51
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 5-01-05
Пользователь №: 1 809

|
Спасибо. ADC10CTL0 = SREF_1 + ADC10SHT_2 + ADC10SR + REFON + ADC10ON + ADC10IE; for(ulong i = 0; i < N; i++); ADC10CTL0 |= ENC + ADC10SC; // ADC10 enable set __bis_SR_register(CPUOFF); //в LPM3 и ждем прерывания Правильно ли понял?
|
|
|
|
|
Feb 1 2008, 14:30
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 5-01-05
Пользователь №: 1 809

|
А при выходе из обработчика по ADC надо ли ? __bic_SR_register_on_exit(CPUOFF); или что-то другое? Спасибо.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|