Страница 1 из 1

Режим уменьшения шумов АЦП (ADC Noise Reduction) и таймеры

Добавлено: Сб июн 28, 2014 12:33:34
wanes101
Всем привет
Что то в документации не нашел. А если МК в этом режиме, то тактирование таймеров выключается или нет?
, в документации сказано что возможно пробуждение МК от таймера 0.
Еще не понял а если даже таймер 0 точно работает, то он в этом случае должен работать в асинхронном режиме или все же тактирование от ядра остается.
Вот из даташита
котором останавливается ЦПУ, но продолжают работу АЦП, внешние прерывания, наблюдение за адресом двухпроводной последовательного шины, таймер-счетчик 0 и сторожевой таймер (конечно, если были предварительно активизированы). Фактически в данном режиме прекращается синхронизация ввода-вывода (clkI/O), ядра ЦПУ (clkCPU) и флэш-памяти (clkFLASH), а остальная синхронизация продолжает работу.

Как бы я и сам могу разобраться если попробую попрограммировать, но это долго.
Если даже работает только таймер 0 и только асинхронно, то ведь потребуется внешний НЧ кварц?. Это не желательно ибо устройство должно быть компактно.
Режим сна нужен для повышения точности АЦП, АЦП мерит ускорение.
МК atmega128

Re: Режим уменьшения шумов АЦП (ADC Noise Reduction) и тайме

Добавлено: Сб июн 28, 2014 15:35:38
Pink-Pank
При завершении преобразования будет сгенерировано прерывание от АЦП, которое переведет микроконтроллер в рабочий режим, и начнется выполнение подпрограммы обработки этого прерывания.
А это режим ADC Noise
Поскольку тактовый сигнал подсистемы ввода/вывода clkI/O в этом режиме не формируется, возврат микроконтроллера в рабочий режим может произойти только в результате сброса (аппаратного, от сторожевого таймера, от схемы BOD) или в результате генерации следующих прерываний:
• прерывания по совпадению адреса от интерфейса TWI;
• внешнего прерывания (обнаруживаемого асинхронно);
• прерывания от EEPROMпамяти и SPMпрерывания;
• прерывания от АЦП.
А тактирование таймеров происходит от тактового сигнала периферии

Re: Режим уменьшения шумов АЦП (ADC Noise Reduction) и тайме

Добавлено: Сб июн 28, 2014 17:06:17
wanes101
А тактирование таймеров происходит от тактового сигнала периферии
Я читал, что тактирование таймеров происходит от одного генератора, на котором работает ядро AVR (1-16MHz)
просто этот сигнал породит через делители в (2/64/128/1024) раза и т.д.
Так в этом режиме таймеры отключаются от этой тактовой частоты? И работают только асинхронно или генератор работает и таймер(ы) тактируются этим сигналом?
просто в документации сказано, что выход из этого режима возможен при помощи таймера 0, а при помощи таймера 1?
таймер 0 в этом режиме работает только асинхронно на своем генераторе и внешнем кварце?
может работать этот таймер асинхронно без внешнего кварца?

Re: Режим уменьшения шумов АЦП (ADC Noise Reduction) и тайме

Добавлено: Сб июн 28, 2014 17:45:16
uk8amk
По уму выход из данного режима сна происходит через соответствующее прерывание АЦП. Иной источник, пробуждающий МК ранее окончания преобразования, ухудшает точность.

Посмотрите в даташите табличку Table 18. Active Clock Domains and Wake Up Sources in the Different Sleep Modes
Там нарисовано какие источники тактирования в данном режиме остаются включенными и способны пробуждать систему.

Неасинхронные счетчики останавливаются поскольку блокируется источник clkI/O.

Еще вдогонку:
• Bit 3 – AS0: Asynchronous Timer/Counter0
When AS0 is written to zero, Timer/Counter0 is clocked from the I/O clock, clkI/O. When AS0 is
written to one, Timer/Counter is clocked from a crystal Oscillator connected to the Timer Oscillator
1 (TOSC1) pin. When the value of AS0 is changed, the contents of TCNT0, OCR0, and
TCCR0 might be corrupted.
Т.е. асинхронность работы подразумевает часовой кварц.

Re: Режим уменьшения шумов АЦП (ADC Noise Reduction) и тайме

Добавлено: Сб июн 28, 2014 18:58:16
Pink-Pank
Именно в этом режиме таймеры не работают (даже асинхронные), потому что отсутствует тактирование периферии, необходимое в том числе и для обнаружения тиков асинхронного таймера. В режиме Idle таймеры могут работать. отключается только ЦПУ.
СпойлерИзображение

Re: Режим уменьшения шумов АЦП (ADC Noise Reduction) и тайме

Добавлено: Сб июн 28, 2014 19:39:57
wanes101
Pink-Pank писал(а):Именно в этом режиме таймеры не работают (даже асинхронные), потому что отсутствует тактирование периферии, необходимое в том числе и для обнаружения тиков асинхронного таймера. В режиме Idle таймеры могут работать. отключается только ЦПУ.
Однако вы ошибаетесь ибо в даташите написано
в котором останавливается ЦПУ, но продолжают работу АЦП, внешние прерывания, наблюдение за адресом двухпроводной последовательного шины, таймер-счетчик 0 и сторожевой таймер (конечно, если были предварительно активизированы). Фактически в данном режиме прекращается синхронизация ввода-вывода (clkI/O), ядра ЦПУ (clkCPU) и флэш-памяти (clkFLASH), а остальная синхронизация продолжает работу.
И еще из некоторых других абзацев я думаю что сам генератор не выключается, просто выключается синхронизация не нужных устройств, что написано в данном тексте из даташита.
Мне кажется что может работать в этом режиме счетчик и синхронно, просто я так понимаю из даташита что выключается лишь синхронизация ядра и еще др. не нужной периферии, но таймер 0 вроде тактируется так же?

Re: Режим уменьшения шумов АЦП (ADC Noise Reduction) и тайме

Добавлено: Сб июн 28, 2014 21:21:53
Pink-Pank
Да, у 128 это так. Можете и таймером разбудить. Я первый раз по Евстифееву смотрел
Спойлер
ADC Noise
Reduction Mode
When the SM2..0 bits are written to 001, the SLEEP instruction makes the MCU enter ADC
Noise Reduction mode, stopping the CPU but allowing the ADC, the External Interrupts, the
Two-wire Serial Interface address watch, Timer/Counter0 and the Watchdog to continue
operating (if enabled). This sleep mode basically halts clkI/O, clkCPU, and clkFLASH, while allowing
the other clocks to run.
This improves the noise environment for the ADC, enabling higher resolution measurements. If
the ADC is enabled, a conversion starts automatically when this mode is entered. Apart form the
ADC Conversion Complete interrupt, only an External Reset, a Watchdog Reset, a Brown-out
Reset, a Two-wire Serial Interface address match interrupt, a Timer/Counter0 interrupt, an
SPM/EEPROM ready interrupt, an External Level Interrupt on INT7:4, or an External Interrupt on
INT3:0 can wake up the MCU from ADC Noise Reduction mode.
Естественно, сам генератор не выключается. Иначе пробуждение было бы очень долгим. Просто обрывается цепь тактирования

Re: Режим уменьшения шумов АЦП (ADC Noise Reduction) и тайме

Добавлено: Вс июн 29, 2014 03:52:56
nirq
Шумит оцифратор на фоне шумов датчика или датчик на фоне шумов оцифратора?
Бывают акселерометры с АЦП уже встроенным внутрь. И не только АЦП.