AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
09.12.2012, 20:58
|
|
Прохожий
Регистрация: 09.12.2012
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Помогите настроить АЦП в ATMEGA16
Доброго времени суток, уважаемые форумчане! Опыт работы с микроконтроллерами у меня весьма мал, начал погружаться в эту тему, т.к. по работе нужно. Дошел до изучения работы с АЦП в ATMEGA 16. Сейчас у меня стоит задача - нужно сделать так, чтобы АЦП с как можно большей частотой в реальном времени оцифровывал входной сигнал и сразу же передавал его на один из портов (а дальше там уже ЦАП). Получается этакий повторитель - выходной сигнал равен входному.
Программы пишу на Си в CodeVisionAVR. Вот текст программы:
// Программа для работы с встроенным АЦП микроконтроллера ATmega16.
// Микроконтроллер оцифровывает входное напряжение и подает его на выход,
// где подразумевается наличие ЦАП - таким образом реализуется повторение
// входного сигнала на выходе.
// Используемые библиотеки:
#include ‹mega16.h›
// Начало программы
void main(void)
{
// Настраиваем порты:
DDRA = 0b00000000; // Все выводы порта А настраиваем на входы (0 - вход, 1 - выход)
PORTA = 0b11111111; // Подключаем внутренние подтягивающие резисторы к выводам порта A.
DDRC=0b11111111; // Все выводы порта C настраиваем как выходы (0 - вход, 1 - выход)
PORTC=0b00000000; // Обнуляем порт С до начала выполнения программы (на всякий случай)
// Настраиваем встроенный АЦП:
ADCSRA = 0b11100100; // включить АЦП, запустить преобразование, непрерывный режим работы, частота считывания 750kHz (12MHz/16)
ADMUX = 0b01100000; /* источник опорного напряжения - источник питания МК - 5 В, выравнивание слева (используем
только 8 бит регистра ADCH), входной канал ADC0 */
SFIOR = 0b00000000;
//Основная программа
while(1)
{
PORTC=ADCH; //вывести в порт С значение, полученное в результате считывания
}
}
программа не работает (но компилируется нормально)
Вопросы такие: Правильно ли я настроил АЦП? Нужно ли перед настройкой АЦП настраивать порт А как вход ( т.к. ADC0 соответствует входу PA0)? Корректна ли такая настройка АЦП без настройки прерываний и т.д.?
За любую помощь буду очень благодарен! Не судите строго - я только начинающий...
|
|
|
|
09.12.2012, 21:15
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Помогите настроить АЦП в ATMEGA16
Сообщение от Vladimir Semenov
|
выходной сигнал равен входному.
|
И зачем это нужно? Если ваше устройство аналог перемычки ...
__________________
Осторожно , злой кот
|
|
|
|
09.12.2012, 21:40
|
|
Прохожий
Регистрация: 09.12.2012
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Помогите настроить АЦП в ATMEGA16
Устройство это нужно сейчас в учебных целях. После того, как я его сделаю, буду думать как сделать на его базе задержку по времени. В аналоговой схемотехнике имеется огромное множество схем, реализующих задержку по времени (Sвых(t)=Sвх(t-tзадержки), но они все работают корректно только с гармоническими сигналами (или с прямоугольными импульсами при использовании таймерных схем и т.д.), а мне нужно реализовать задержку произвольного сигнала, вот и начал изучать МК чтобы это сделать.
|
|
|
|
09.12.2012, 21:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Помогите настроить АЦП в ATMEGA16
Тогда параллельно изучай FIFO-память, пригодится
АЦП настроен правильно, но нужно проверять флаг окончания преобразования и сбрасывать его (программно или просто перейдя в прерывание). Иначе, пока флаг установлен, следующее преобразование не запустится
|
|
|
|
09.12.2012, 22:00
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Помогите настроить АЦП в ATMEGA16
Vladimir Semenov, Вы не находите, что для ваших целей AVR просто мелковаты ?
__________________
Осторожно , злой кот
|
|
|
|
09.12.2012, 22:08
|
|
Прохожий
Регистрация: 09.12.2012
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Помогите настроить АЦП в ATMEGA16
Сообщение от niXto
|
Тогда параллельно изучай FIFO-память, пригодится
АЦП настроен правильно, но нужно проверять флаг окончания преобразования и сбрасывать его (программно или просто перейдя в прерывание). Иначе, пока флаг установлен, следующее преобразование не запустится
|
-Спасибо большое за помощь)))) буду дальше ковыряться)))
|
|
|
|
09.12.2012, 22:12
|
|
Прохожий
Регистрация: 09.12.2012
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Помогите настроить АЦП в ATMEGA16
Сообщение от dosikus
|
Vladimir Semenov, Вы не находите, что для ваших целей AVR просто мелковаты ?
|
- Вот и узнаем... Использовать компьютер нельзя, т.к. это все должно работать в устройстве в коробочке с входом и выходом, а МК - надеюсь ATMEGA 16 прокатит...
|
|
|
|
09.12.2012, 23:25
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Помогите настроить АЦП в ATMEGA16
Сообщение от Vladimir Semenov
|
- Вот и узнаем... Использовать компьютер нельзя, т.к. это все должно работать в устройстве в коробочке с входом и выходом, а МК - надеюсь ATMEGA 16 прокатит...
|
Термин "прокатит" достоен разработчика МК.
Иные мучаются вопросами частотного спектра задерживаемого сигнала, необходимой при этом частоте выборок, скоростными свойствами ЦАП. А тут оказывается все просто - знай себе наращивай цифру любимой меги...
Вообще-то вся "перемычка" укладывается в две строчки на Си. Читаем АЦП и выводим результат в регистр ШИМа. Все это добросовестно дергает таймер, настроенный по тем самым требованиям, от которых вы так старательно увиливаете.
Ну а задерживать... Вы хоть оценочно прикидывали глубину фифо-стека на выбранной вами скорости?
Да, и еще. Ведь компьютер тоже может подойти под ваше описание "коробочка со входом и выходом". Не задумывались?
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
09.12.2012, 23:36
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.02.2008
Сообщений: 1,802
Сказал спасибо: 124
Сказали Спасибо 602 раз(а) в 419 сообщении(ях)
|
Re: Помогите настроить АЦП в ATMEGA16
Сообщение от Vladimir Semenov
|
а мне нужно реализовать задержку произвольного сигнала
|
Значит Вам достаточно считывать данные с АЦП только после передачи предыдущего блока данных? Иначе надо сохранять в памяти каждый блок данных до передачи на выход.
|
|
|
|
10.12.2012, 20:36
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
|
Re: Помогите настроить АЦП в ATMEGA16
Сообщение от Vladimir Semenov
|
ADCSRA = 0b11100100; // включить АЦП, запустить преобразование, непрерывный режим работы, частота считывания 750kHz (12MHz/16)
|
Почитайте внимательно даташит. И особенно раздел с АЦП.
Там вы узнаете, что для ADC преобразования используется свой источник синхроимпульсов. Причём его частота должна быть из диапазона 50-200 кГц (частота выбирается делением основной частоты).
Одно измерение занимает около 13 циклов этого источника.
То бишь, максимальная частота оцифровки составляет всего около 15 кГц.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Помогите настроить TMR1
|
Segriv |
Микроконтроллеры, АЦП, память и т.д |
1 |
28.03.2012 21:47 |
Помогите настроить АЦП в Atmega32
|
sergx1300 |
Микроконтроллеры, АЦП, память и т.д |
72 |
09.11.2010 00:28 |
USB АЦП на ATmega16 переделать на ATmega8
|
98mildg1 |
Микроконтроллеры, АЦП, память и т.д |
12 |
25.09.2010 20:29 |
АЦП в ATMEGA16
|
chipic128 |
Микроконтроллеры, АЦП, память и т.д |
56 |
18.03.2007 12:23 |
как правильно настроить АЦП
|
polimer |
Микроконтроллеры, АЦП, память и т.д |
1 |
10.12.2004 19:37 |
Часовой пояс GMT +4, время: 19:27.
|
|