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

 
 
> АЦП ATtiny44A
wayfarer_lex
сообщение Oct 11 2011, 19:36
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 27-06-10
Пользователь №: 58 167



Доброго времени суток!
Прошу помощи, не могу получить корректный результат преобразования из АЦП модуля.
Написал простейшую прогу:
Код
#include <ioavr.h>

#define ADMUX_VALUE  0x81 //Выбираем внутренний источник опорного напряжения и канал ADC1
#define ADCSRA_VALUE 0x85 //Выбираем предделитель частоты для задания опорной частоты АЦП; так же задаем режим одиночного АЦ преобразования
#define ADCSRB_VALUE 0x00

int main(void){
unsigned char v;

   PRR_PRADC = 0; //Выключаем режим пониженного потребления, то есть разрешаем работу АЦП
   ADCSRA_ADEN = 1; //Включаем модуль АЦП, до включения все попытки доступа к битовым полям регистров АЦП будут некорректными
   //Инициализируем АЦП регистры
   ADCSRA = ADCSRA_VALUE;
   ADMUX  = ADMUX_VALUE;
   ADCSRB = ADCSRB_VALUE;
   //В порт Б будем выводить младший ниббл результата АЦ преобразования
   DDRB  = 0x0F;
   PORTB = 0x00;
   for (;;){
      ADCSRA_ADSC = 1; //Запускаем преобразование
      while (ADCSRA_ADIF == 0){}; //Дожидаемся окончания преобразования
      v = ADCMn; //Вычитываем младшие разряды результата преобразования
      PORTB = v;
   }
   return 0;
}


В итоге на выходах порта B имею постоянно одно и тоже значение. То есть АЦП не работает.
Подобный исходник легко запускается на ATmega16 и выдает нормальные значения.
Подскажите какие есть особенности у АЦП ATtiny44A.

IDE: IAR 5.51.0

Заранее спасибо за ответы.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:41
Рейтинг@Mail.ru


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