Цитата(eugmai86 @ Mar 20 2011, 23:22)

Так всеже как правильно таймер запустить чтоб он стартовал с начала сигнала и останавливался по переполнению, а не стартовал при каждом прерывании. Вопрос то по сути не сложный, недавно програмирую, мало что знаю поэтому и спрашиваю.
Нужно при появлении низкого уровня (внешнее прерывание) посчитать кол-во импульсов. Какие импульсы, их длины все написал, подскажите как. Я знаю что есть RC-5 RC-6 еще вагон протоколов, но ведь требуется передать 4 (четыре) команды а не 20.
Не морочьте себе голову с протоколами. В вашем описании немного сбивает с толку, что вы называете импульсами и короткие импульсы на выходе ИК-передатчика и сигналы на выходе ИК-приемника. У приемника на выходе уже имульсы, примерно совпадающие с длительностью пачки из 30коротких импульсов.
Теперь относительно измерения интервала времени между пачками. (Это я предполагаю, что вы вняли моему предложению кодировать кнопки интервалами между пачками.) При поступлении пачки у вас происходит прерывание. Вы должны в подпрограмме обработки перерывания проверить состояние таймера, который заполняется импульсами от основного ТГ контроллера (через прескалер, если он там есть - точно не помню). Тут времянку надо аккуратно посчитать, чтобы таймер не переполнялся при самом большом интервале меду пачками. Дальше, вы посмотрели на содержимое таймера и решили, какая кнопка нажата. После этого вы обнуляете таймер и выходите из прерывания. До прихода следующей пачки. Для пущей надежности окончательное решение о нажатой кнопке можно принимать, когда накопилось три (или пять) одинаковых решений относительно кнопки (я предполагаю, что пачек за время нажатия кнопки уйдет не менее 5-ти).
Как-то так. А с вашей программой вряд ли кто будет подробно разбираться. Ну, если у кого совсем много свободного времени.