Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

Помогите настроить АЦП в ATMEGA16

Непрочитано 09.12.2012, 20:58  
Vladimir Semenov
Прохожий
 
Регистрация: 09.12.2012
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vladimir Semenov на пути к лучшему
По умолчанию Помогите настроить АЦП в 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)? Корректна ли такая настройка АЦП без настройки прерываний и т.д.?

За любую помощь буду очень благодарен! Не судите строго - я только начинающий...
Реклама:
Vladimir Semenov вне форума  
Непрочитано 09.12.2012, 21:15  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в ATMEGA16

Сообщение от Vladimir Semenov Посмотреть сообщение
выходной сигнал равен входному.
И зачем это нужно? Если ваше устройство аналог перемычки ...
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 09.12.2012, 21:40  
Vladimir Semenov
Прохожий
 
Регистрация: 09.12.2012
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vladimir Semenov на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в ATMEGA16

Устройство это нужно сейчас в учебных целях. После того, как я его сделаю, буду думать как сделать на его базе задержку по времени. В аналоговой схемотехнике имеется огромное множество схем, реализующих задержку по времени (Sвых(t)=Sвх(t-tзадержки), но они все работают корректно только с гармоническими сигналами (или с прямоугольными импульсами при использовании таймерных схем и т.д.), а мне нужно реализовать задержку произвольного сигнала, вот и начал изучать МК чтобы это сделать.
Vladimir Semenov вне форума  
Непрочитано 09.12.2012, 21:55  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в ATMEGA16

Тогда параллельно изучай FIFO-память, пригодится

АЦП настроен правильно, но нужно проверять флаг окончания преобразования и сбрасывать его (программно или просто перейдя в прерывание). Иначе, пока флаг установлен, следующее преобразование не запустится
niXto вне форума  
Непрочитано 09.12.2012, 22:00  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в ATMEGA16

Vladimir Semenov, Вы не находите, что для ваших целей AVR просто мелковаты ?
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 09.12.2012, 22:08  
Vladimir Semenov
Прохожий
 
Регистрация: 09.12.2012
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vladimir Semenov на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в ATMEGA16

Сообщение от niXto Посмотреть сообщение
Тогда параллельно изучай FIFO-память, пригодится

АЦП настроен правильно, но нужно проверять флаг окончания преобразования и сбрасывать его (программно или просто перейдя в прерывание). Иначе, пока флаг установлен, следующее преобразование не запустится
-Спасибо большое за помощь)))) буду дальше ковыряться)))
Vladimir Semenov вне форума  
Непрочитано 09.12.2012, 22:12  
Vladimir Semenov
Прохожий
 
Регистрация: 09.12.2012
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vladimir Semenov на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в ATMEGA16

Сообщение от dosikus Посмотреть сообщение
Vladimir Semenov, Вы не находите, что для ваших целей AVR просто мелковаты ?
- Вот и узнаем... Использовать компьютер нельзя, т.к. это все должно работать в устройстве в коробочке с входом и выходом, а МК - надеюсь ATMEGA 16 прокатит...
Vladimir Semenov вне форума  
Непрочитано 09.12.2012, 23:25  
ut1wpr
Почётный гражданин KAZUS.RUN
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в ATMEGA16

Сообщение от Vladimir Semenov Посмотреть сообщение
- Вот и узнаем... Использовать компьютер нельзя, т.к. это все должно работать в устройстве в коробочке с входом и выходом, а МК - надеюсь ATMEGA 16 прокатит...
Термин "прокатит" достоен разработчика МК.
Иные мучаются вопросами частотного спектра задерживаемого сигнала, необходимой при этом частоте выборок, скоростными свойствами ЦАП. А тут оказывается все просто - знай себе наращивай цифру любимой меги...
Вообще-то вся "перемычка" укладывается в две строчки на Си. Читаем АЦП и выводим результат в регистр ШИМа. Все это добросовестно дергает таймер, настроенный по тем самым требованиям, от которых вы так старательно увиливаете.
Ну а задерживать... Вы хоть оценочно прикидывали глубину фифо-стека на выбранной вами скорости?
Да, и еще. Ведь компьютер тоже может подойти под ваше описание "коробочка со входом и выходом". Не задумывались?
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 09.12.2012, 23:36  
andries5
Почётный гражданин KAZUS.RUN
 
Регистрация: 19.02.2008
Сообщений: 1,840
Сказал спасибо: 128
Сказали Спасибо 613 раз(а) в 430 сообщении(ях)
andries5 на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в ATMEGA16

Сообщение от Vladimir Semenov Посмотреть сообщение
а мне нужно реализовать задержку произвольного сигнала
Значит Вам достаточно считывать данные с АЦП только после передачи предыдущего блока данных? Иначе надо сохранять в памяти каждый блок данных до передачи на выход.
andries5 вне форума  
Непрочитано 10.12.2012, 20:36  
Godzilla82
Почётный гражданин KAZUS.RUN
 
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Помогите настроить АЦП в ATMEGA16

Сообщение от Vladimir Semenov Посмотреть сообщение
ADCSRA = 0b11100100; // включить АЦП, запустить преобразование, непрерывный режим работы, частота считывания 750kHz (12MHz/16)
Почитайте внимательно даташит. И особенно раздел с АЦП.

Там вы узнаете, что для ADC преобразования используется свой источник синхроимпульсов. Причём его частота должна быть из диапазона 50-200 кГц (частота выбирается делением основной частоты).

Одно измерение занимает около 13 циклов этого источника.

То бишь, максимальная частота оцифровки составляет всего около 15 кГц.
Godzilla82 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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 18:37


Часовой пояс GMT +4, время: 00:44.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.