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

 
 
> Ну совсем детский вопрос по АЦП, запрет-разрешение прерывания
ArtemKAD
сообщение Apr 16 2010, 19:47
Сообщение #1


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Не подскажет ли кто такую мелочь. Надо в процессе работы сперва запретить прерывание АЦП, а затем его разрешить. Естественно не трогая биты флага и не перезапуская преобразование. Не подскажет ли кто как это совсем правильно сделать.
Проц - AtMega48 . Смущает - все биты в перемешку в ADCSRA и просто устанавливая/сбрасывая бит можно там цеплять в т.ч. и соседние...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ArtemKAD
сообщение Apr 17 2010, 19:51
Сообщение #2


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
А вот зачем это делать - запрещать прерывания АЦП - это другой вопрос. Спрашивается, зачем тогда по прерыванию вообще работать.

Запрет прерывания понадобился в другом прерывании. Точнее в прерывании SPI работающим в Slave-режиме и принимающем длинную колбасу данных. Во время приема проц не может надолго отвлекаться (иначе потеряет байты). Но за время приема всей колбасы он может терять несколько символов принимаемых по USART-у.
В результате в прерывании SPI понадобилось временно запретить все прерывания кроме USART-а, а затем в не критичных местах глобально разрешить прерывания (по сути только USART).

По поводу "зачем вообще по прерыванию" - еще проще. АЦП меряет некоторые величины влияющие на работу всей, достаточно разветвленной программы. Устанавливать в каждом цикле еще и процедуру обработки АЦП - лишний код и тормоза в цикле.
Цитата
ADCSRA=10000xxx; - запрет прерывания
ADCSRA=10001xxx;- разрешение прерывний.
И ничего нигде не испортится.

Вот хорошо-бы кабы так... Смущает бит ADSC . В режиме одиночного преобразование преобразование начинается по первому наростающему фронту тактовой АЦП при установленном ADSC . По моему если вдруг нечаянно сбросить бит ADSC между его установкой и первым фронтом (тактовая проца в несколько раз выше тактовой АЦП), то преобразование может вообще не начаться. А если установить после его прекращения, то оно начнется заново (а с учетом уже стоящего флага - результат может быть весьма хреновый)... К тому-же тут еще и вопрос - а что станется с текущим преобразованием если во время его сбросить ADSC ?

ЗЫ. Зря тему перенесли в раздел "для начинающих". Несмотря на кажущуюся простоту вопрос ДАЛЕКО не так прост...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ArtemKAD   Ну совсем детский вопрос по АЦП   Apr 16 2010, 19:47
- - ILYAUL   Цитата(ArtemKAD @ Apr 17 2010, 00:02) Не ...   Apr 16 2010, 21:08
- - V_G   Скорее всего, ADSC=ADIF=0, остальные флаги считать...   Apr 16 2010, 23:36
- - DpInRock   Цитатаросто устанавливая/сбрасывая бит можно там ц...   Apr 16 2010, 23:37
|- - ILYAUL   Цитата(DpInRock @ Apr 17 2010, 03:52) А в...   Apr 17 2010, 11:14
- - DpInRock   ЦитатаCкорее не совсем так, вот что по этому повод...   Apr 17 2010, 11:21
|- - ILYAUL   Цитата(DpInRock @ Apr 17 2010, 15:36) А в...   Apr 17 2010, 11:52
- - DpInRock   Значит так. Выбросьте это на помойку. И пользуйтес...   Apr 17 2010, 13:21
|- - ILYAUL   Цитата(DpInRock @ Apr 17 2010, 17:36) Зна...   Apr 17 2010, 13:39
|- - ILYAUL   Цитата(ArtemKAD @ Apr 18 2010, 00:06) ......   Apr 17 2010, 21:41
- - ArtemKAD   ЦитатаЧто бы обработать какое либо вложенное преры...   Apr 19 2010, 07:22
|- - ILYAUL   Цитата(ArtemKAD @ Apr 19 2010, 11:37) ......   Apr 19 2010, 07:52
- - ArtemKAD   ЦитатаНо он предоставляет выбор , с какими прерыва...   Apr 19 2010, 08:40
- - ILYAUL   Цитата(ArtemKAD @ Apr 19 2010, 12:55) ЗЫ....   Apr 19 2010, 09:59


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 01:36
Рейтинг@Mail.ru


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