Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ADC Noise Reduction
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
white.wind
Не получается съэмулировать (для начала) такой режим на VMLAB.

Из всех найденных описаний (рабочих примеров не встретил) я понял, что после установки режима проц должен остановится потом отработать прерывание ADC и продолжить выполнение основного кода. Делал так:

Код
...
ISR (ADC_vect)
{
    // Тут ничего
}
...

void main(void)
{
    init_uart();
    init_adc();

    sei();
    
    while(1)
    {

        ADCSRA |= (1<<ADSC);    // Запуск преобразования

        MCUCR |= (1<<7);        // Разрешение засыпания
        MCUCR |= (1<<SM0);    // Включение в ADC Noise Reduction

        uart_putchar(ADCH);        // ADCH, поскольку 8-ми разрядный режим.

    }
}


Пробовал разные вариации, первой была сначала разрешить засыпание, потом инициировать преобразование, потом включить режим ADC Noise Reduction. Все равно не получается.

Общая картина такова, не взирая на желание усыпить проц, он продолжает выполнять команды. Изредка цикл прерывается выполненным преобразованием.

Может быть инициировать преобразование после переключения в ADC NR режим? Но по идее, к этому времени он уже должен спать.

Подскажите как побороть этот режим help.gif

PS. Заметил странность VMLAB бит SE регистра MCUCR считает 6-тым, в то время как по ДШ он 7-ой (последний). Я пробовал и так и так. Камень - Atmega32.
otrog
Насколько я себе это представляю, перед "uart_putchar(ADCH);" надо дать команду SLEEP(усыпить контроллер). А значение АЦП читать в прерывании.
Могу и ошибиться.
Pyku_He_oTTyda
вставка на ассемблере sleep необходима. В этом месте программа остановится до возникновения прерывания АЦП, дальше выполнение программы со следующей команды после sleep
white.wind
Большое спасибо, про SLEEP я не подумал.
defunct
строчку

MCUCR |= (1 << SE)|(1 << SM0)

Вынесите из цикла и разместите до sei();
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.