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

 
 
> АЦП на Atmega
shemmer
сообщение Sep 23 2007, 09:55
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 23-09-07
Из: Томск
Пользователь №: 30 759



Добрый день

Вот решил сделать блок питания с управлением на МК
Возникли проблемы с АЦП, а именно:
Не могу настроить его так чтобы он мерил многократно, а не 1 раз
Работаю в CVAVR, симулирую в ПРОТЕУСЕ

Делаю так:
interrupt [ADC_INT] void adc_isr(void){
Vizm=ADCW;
Vpr = (float) Vizm; //переводим формат данных из целочисленно в фиксированную арифметику
Vpr = Vpr * 0.03128; //умножаем на множитель масштаба(измерение до 32В)
Vdec = (int) Vpr; //выделяем целую часть;
Vpr = Vpr - (float) Vdec;//выделяем милливольты
Vpr = Vpr * 1000; //избавляемся от целой части
Vmili = (int) Vpr; //переводим милливольты в вольты
}
Дальше преобразовываю в BCD и вывожу на LED.(ADCSRA=0b11011111;
ADMUX=0b11000000

Но он делает преобразование 1 раз и останавливается.
Если установить ADFR=1, то в протеусе на индикаторе кракозябры
(может на железе будет нормально?)
Как заставить делать преобразование многократно?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
WEST128
сообщение Sep 23 2007, 10:17
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 13-10-06
Из: Россия, Томск
Пользователь №: 21 291



Тут надо приводить не ваш код обработки данных с АЦП, а то, как вы инициализируете его регистры. Там есть несколько режимов работы, если вы не хотите сами запускать АЦП, то настройте его в режиме непрерывного преобразования (FreeRunning). По поводу используемого вами симулятора можно сказать, что он бывает ошибается, проверять всегда лучше на железке. Неплохо бы привести тип вышего контроллера.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st August 2025 - 08:02
Рейтинг@Mail.ru


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