реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ADC в MSP430F1132
vvs
сообщение Jan 31 2008, 09:18
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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. В чем я не прав?
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 31 2008, 19:02
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



А у вас случайно напряжение питания не выше, чем 3В? Время выборки установили не меньше, чем в даташите указано?
Go to the top of the page
 
+Quote Post
vvs
сообщение Feb 1 2008, 06:39
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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 и в зависимости от значения вкл/выкл зарядник. Все просто - казалось-БЫ.
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 1 2008, 08:57
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Между включением АЦП и запуском преобразования необходима пауза не меньше 30мкс, чтобы ошибка преобразования не превышала 0,5 LSB. У вас же эта задержка вроде как отсутствует.
Кстати, зачем нужно опору 1,5В использовать, если напряжение до 3,4В бывает? Вам обязательно нужно измерять напряжение питания с точностью до единиц мВ?
ИМХО используйте опору 2,5В и не парьтесь!
P.S. кстати для уменьшения шума и повышения точности измерения на время преобразования рекомендуется ядро МК "усыплять" и выключать периферию, которая активно "ногодрыгает" (типа PWM).
Go to the top of the page
 
+Quote Post
vvs
сообщение Feb 1 2008, 12:33
Сообщение #5


Участник
*

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



Спасибо за советы. А насчет опоры, так при VCC=2V VREF=2,5V явно не "раскачается". Задача и стоит - по мере заряда на VCC переключиться с VREF=1,5V на VREF=2,5V. А когда включать CPUOFF=1 до запуска ADC или после? Спасибо.
Go to the top of the page
 
+Quote Post
msalov
сообщение Feb 1 2008, 12:49
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(vvs @ Feb 1 2008, 14:33) *
А когда включать CPUOFF=1 до запуска ADC или после?
А как вы запустите АЦП при CPUOFF=1 ??
Go to the top of the page
 
+Quote Post
vvs
сообщение Feb 1 2008, 13:51
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 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 и ждем прерывания
Правильно ли понял?
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 1 2008, 14:29
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(vvs @ Feb 1 2008, 18:51) *
Правильно ли понял?
Да, примерно так. Либо можно запускать преобразование от таймера, по прерыванию от АЦП считывать получившееся значение, а остальное время "спать".
Go to the top of the page
 
+Quote Post
vvs
сообщение Feb 1 2008, 14:30
Сообщение #9


Участник
*

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



А при выходе из обработчика по ADC надо ли ?
__bic_SR_register_on_exit(CPUOFF);
или что-то другое?
Спасибо.
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 1 2008, 14:36
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Если все, что нужно посчитать в прерывании сделаете, то наверное нет. Если же что-то выполнять после вызова прерывания, то конечно же нужно ядро "будить".
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 20:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01608 секунд с 7
ELECTRONIX ©2004-2016