Radiohobby Forum

Интернет конференция журнала "Радиохобби"

Вы не вошли.

Объявление

Подписка на новые материалы от Николая Сухова - ролики, схемы, модели, онлайн конференции, консультации, чат.

Внимание! Почта в доменах Яндекс и Mail.ru не будет работать в профилях форумчан, из-за введённых правительством Украины санкций против этих компаний. Всем, кто ранее использовал подобную почту, для сохранения прежней функциональности форума, рекомендуется её поменять.

Огромная просьба, заливать тематические картинки и файлы в личные файловые каталоги на форуме, чтобы они не потерялись, со временем!

Ссылка "Загрузки" находится справа внизу формы набора сообщения.

Подписка на журнал "Радиохобби" прекращена. Подробности. Форум же - продолжает свою работу.

#1 04.05.2006 22:02:23

vovan
Участник
Откуда: Тула
Здесь с 18.03.2004
Сообщений: 96

Микроконтроллерное управление звуком 2

В №2 2006 есть макрос:
#define WAIT { while(tm==0); tm=0; count++; }

Вопрос :
1.если соблюдается условие (tm==0) то выполнются оба оператора или только tm=0;
2.если условие не истино  - оператор count++; выполняется?

пример использования макроса:

while((bit_is_set(PIND, RC5))&&(count<16)) WAIT;

Отредактировано vovan (04.05.2006 22:04:32)

Вне форума

#2 06.05.2006 19:40:51

vovan
Участник
Откуда: Тула
Здесь с 18.03.2004
Сообщений: 96

Re: Микроконтроллерное управление звуком 2

отбой, разобрался.

Вне форума

#3 06.05.2006 23:41:22

Николай Сухов
Главный редактор
Откуда: Киев
Здесь с 19.01.2004
Сообщений: 894
Сайт

Re: Микроконтроллерное управление звуком 2

vovan пишет:

отбой, разобрался.

Хорошо, что разобрался. А интересно, когда N2/2006 поступил к подписчикам Тулы?

Вне форума

#4 07.05.2006 19:05:11

Николай Сухов
Главный редактор
Откуда: Киев
Здесь с 19.01.2004
Сообщений: 894
Сайт

Re: Микроконтроллерное управление звуком 2

vovan пишет:

В №2 2006 есть макрос:
#define WAIT { while(tm==0); tm=0; count++; }

Вопрос :
1.если соблюдается условие (tm==0) то выполнются оба оператора или только tm=0;
2.если условие не истино  - оператор count++; выполняется?

пример использования макроса:

while((bit_is_set(PIND, RC5))&&(count<16)) WAIT;

1. Макроопределение WAIT было введено только с целью сокращения журнального места (чтобы листинг поместился на одной
странице). Это не рекомендация к действию, а образец того, какие иезуитские конструкции могут встретиться в реальных
Си-программах+

2. Если серьезно, то строка 56 после подстановки макроса и форматирования текста должна выглядеть следующим образом:
while((bit_is_set(PIND, RC5))&&(count<16)) //Строка 56, проверка RC5=лог.1 и счетчик <16
{ while(tm==0); //Ждать очередного прерывания (каждые 111 мкс)
  tm=0; //После прерывания tm=1 в строке 21, поэтому обнуляем tm
  count++; //Увеличиваем на единицу счетчик и переходим вновь к строке 56
} //

Итого происходит задержка времени длительностью 16х111 мкс, при этом известно, что состояние линии RC5 постоянно было
в лог.1. Если за указанный промежуток времени из-за помехи состояние линии RC5 перешло бы в лог.0, то случился бы досрочный выход из цикла while в строке 56, при этом счетчик count был бы меньше 16, что является признаком помехи.

3. Теперь ясны ответы. Если условие (tm==0) соблюдается, то не выполняется ни один из операторов,
программа зацикливается внутри while(tm==0). Если условие не истинно, то последовательно выполняются операторы tm=0, затем count++ и далее опять на строку 56.

Вне форума

#5 08.05.2006 10:24:21

vovan
Участник
Откуда: Тула
Здесь с 18.03.2004
Сообщений: 96

Re: Микроконтроллерное управление звуком 2

Николай Сухов пишет:

Хорошо, что разобрался. А интересно, когда N2/2006 поступил к подписчикам Тулы?

к сожалению на это полугодие я не подписался, а статью приобретал у Вас.

Вне форума

#6 08.05.2006 10:34:36

vovan
Участник
Откуда: Тула
Здесь с 18.03.2004
Сообщений: 96

Re: Микроконтроллерное управление звуком 2

Николай Сухов пишет:

1. Макроопределение WAIT было введено только с целью сокращения журнального места ...

Просто не обратил внимание на точку с запятой после оператора while(tm==0); и считал что {tm=0; count++;} являютса его телом.
Спасибо за ответ, но жаль что про это ничего не написано в статье.

Вне форума

#7 09.05.2006 17:46:26

vovan
Участник
Откуда: Тула
Здесь с 18.03.2004
Сообщений: 96

Re: Микроконтроллерное управление звуком 2

Еще непонятно назначение строки 66

for (j=0; j < 12; j++) WAIT;

Вне форума

#8 10.05.2006 07:26:02

Николай Сухов
Главный редактор
Откуда: Киев
Здесь с 19.01.2004
Сообщений: 894
Сайт

Re: Микроконтроллерное управление звуком 2

vovan пишет:

к сожалению на это полугодие я не подписался, а статью приобретал у Вас.

Через www.radiohobby.ldc.net/bestbuy.html  ? Можно и так, но имхо лучше всетаки оформить подписку - она как раз сейчас в разгаре на второе полугодие.

Вне форума

#9 10.05.2006 19:04:06

vovan
Участник
Откуда: Тула
Здесь с 18.03.2004
Сообщений: 96

Re: Микроконтроллерное управление звуком 2

vovan пишет:

Еще непонятно назначение строки 66

for (j=0; j < 12; j++) WAIT;

какую роль играет этот цикл из 13 временных интервалов по 111 секунд для декодирования RC-5?

Вне форума

#10 15.05.2006 18:57:17

vovan
Участник
Откуда: Тула
Здесь с 18.03.2004
Сообщений: 96

Re: Микроконтроллерное управление звуком 2

Николай Сухов пишет:

Через www.radiohobby.ldc.net/bestbuy.html  ? Можно и так, но имхо лучше всетаки оформить подписку - она как раз сейчас в разгаре на второе полугодие.

сегодня подписался

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.030 сек, 7 запросов выполнено - Использовано памяти: 592.6 Кбайт (Пик: 642.97 Кбайт) ]