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

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

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

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

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

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

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

 
Опции темы
Непрочитано 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
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
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.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в ATMEGA16

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

АЦП настроен правильно, но нужно проверять флаг окончания преобразования и сбрасывать его (программно или просто перейдя в прерывание). Иначе, пока флаг установлен, следующее преобразование не запустится
niXto вне форума  
Непрочитано 09.12.2012, 22:00  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
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.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в ATMEGA16

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

Сообщение от Vladimir Semenov Посмотреть сообщение
а мне нужно реализовать задержку произвольного сигнала
Значит Вам достаточно считывать данные с АЦП только после передачи предыдущего блока данных? Иначе надо сохранять в памяти каждый блок данных до передачи на выход.
andries5 вне форума  
Непрочитано 10.12.2012, 20:36  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
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 19:37


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot