roboforum.ru

Технический форум по робототехнике.

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

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

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

Сообщение Vladimir Semenov » 09 дек 2012, 21:47

Доброго времени суток, уважаемые форумчане! Опыт работы с микроконтроллерами у меня весьма мал, начал погружаться в эту тему, т.к. по работе нужно. Дошел до изучения работы с АЦП в 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
 
Сообщения: 2
Зарегистрирован: 09 дек 2012, 20:12

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20