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

 
 
> АЦП запускается от спящего режима!, хотя я его об этом не просил :(
777777
сообщение Apr 29 2010, 06:04
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Я делаю спящий режим обычным (idle):
Код
    SMCR = _BV(SE); // Idle sleep mode

А АЦП хочу запускать от таймера:
Код
    ADCSRA = _BV(ADEN) | _BV(ADATE) | _BV(ADIE) | 5;
    ADCSRB = 3; // запуск по Timer/Counter0 Compare Match A

несмотря на это он запускается каждый раз, как только процессор входит в спящий режим. Более того, если выкинуть команду sleep, то он не запускается вообще, даже от таймера. Как же заставить его работать по таймеру?

Нашел, оказывается

7.1 Idle Mode
<...>
If the ADC is enabled, a conversion starts automatically when this mode is entered.

Чем же тогода этот sleep отличается от ADC Noise Reduction Mode? И как войти в спящий режим не запуская АЦП?

Сообщение отредактировал 777777 - Apr 29 2010, 05:54
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SysRq
сообщение May 1 2010, 13:07
Сообщение #2


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Отбросить лишнее измерение? Флаг таймера всё равно ж надо сбрасывать. Как-то так (AVR Studio не симулирует, а железки нету подходящей):
Код
ISR(ADC_vect)
{
    if(TIFR0 & _BV(OCF0A))
    {
        TIFR0 = _BV(OCF0A);    
        // Get ADC conversion result
    }
}
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 13:45
Рейтинг@Mail.ru


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