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

 
 
> АЦП и энергосберегающий режим, проверка работы
Slavik_tz
сообщение Jul 10 2009, 08:33
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 4-07-06
Пользователь №: 18 558



Вот код программы
void InitADC(void)
{
set_sleep_mode(SLEEP_MODE_ADC);//инициализировать енергосберегающий режим
uart_puts("\r MCUCR=");
uart_puti((int)MCUCR);
SET_FRENCH();//устанавливает частоту 112КГц (частота кварца 14 318 180Гц (ADCRA|=_BV(ADPS2)|_BV(ADPS1)|_BV(ADPS0)))
ADCCR|=_BV(ADEN);//Выбрать одиночное преобразования
ADMUX|=_BV(REFS0)|_BV(ADLAR);//результ преобразование выравнивается в левую сторону 8бит
ADCCR|=_BV(ADIE);//разрешить прерывание по окончанию преобразования АЦП
uart_puts("\r ADCCR=");
uart_puti((int)ADCCR);
uart_puts("\r ADMUX=");
uart_puti((int)ADMUX);
TCCR0|=_BV(CS01);
TCNT0=0;
ADCCR|=_BV(ADSC);//запустить АЦП
sleep_mode();//перйти в енергосберегающий режим
TCCR0=0;
uart_puts("\r Timer=");
uart_puti((int)TCNT0);
}
результат таков:
MCUCR=16 (00010000b)
ADCCR=143 (10001111b)
ADMUX=96 (01100000b)
Timer=5
вопрос: почему таймер =5, если должен быть равен 25(первое одиночное преобраз)*128(коеффициент деления АЦП)/8 mod(255)= 145 (прерываний от таймера нет), от чего может быть

и следующее вот функция
//Функция получения температуры, параметр kan=номер канала
unsigned int GetTemp(uint8_t kan)
{
volatile unsigned int Temp=0;//значение температуры возращаемое функцией
ADMUX+=kan;
TCCR0|=_BV(CS00);
TCNT0=0;
ADCCR|=_BV(ADSC);//запустить преобразование
//sleep_mode();//ждать пока не закончиться
TCCR0=0;
Temp=(unsigned int)ADCH;//результат в регистр
// _delay_us(1);
uart_puts(" Timer=");
uart_puti((int)TCNT0);
uart_puts(" Temp=");
uart_puti(Temp);
uart_puts(" ");
ADMUX&=~_BV(MUX0)&~_BV(MUX1)&~_BV(MUX2);
return Temp+170;// прибавить начальные установки
}
SIGNAL(SIG_ADC)
{
;
}

вопрос следующего характера если раскоментировать sleep_mode() вообще эта функции не работает,
от чего может возникать прерывание, в Proteus sleep вообще не работает, это его глюк или я что-то делаю не так
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 22:58
Рейтинг@Mail.ru


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