Kavka писал(а):Вроде никак.
Тоже излистал мануал по внешним прерываниям, ничего не нашел....
У себя решил проблему так: (Речь идет о декодировании MANCHESTER сигнала)
Изначально было: после сработки внешнего прерывания (А) запрещаем внешние прерывания на время (B) и сразу определяем уровень на выводе PIN, потом таймером отсчитываем промежуток времени (B), опять разрешаем внешние прерывания (C) и ждем нового внешнего прерывания. После его поступления, анализируем время (D) если оно в допустимых рамках, продолжаем по кругу прием битов данных.

Но как я уже сказал, иногда чтение сразу после прерывания, давало не верное значение, т.к. анализируемый сигнал это выпрямленная ВЧ несущая, и иногда фронты не очень крутые, пролазит 125КГц, поэтому иногда перебоило.....
Потом выкрутился: как только истек промежуток времени (B), у нас происходит вызов процедуры разрешающей внешнее прерывание, так вот тут имея наиболее гарантированный прямой участок сигнала, мы и читаем состояние линии и запоминаем его. Прочитанный уровень будет инверсным тому, который вызовет потом прерывание, потом уже во время фактического внешнего прерывания, эту инфу и использую....
Результат 100% меня устроил.
Kavka писал(а):Сам сейчас переписываю прогу с Си на асм. Так как реакция моего алгоритма на Pin Change на Си при 9.6МГц получается хуже 100КГц
Кстати бешенный вариант, писать основную прогу на Си, а скоростное прерывание на асме.... Я просто в облаках от результата..... Сама программа читабельна (Си), а прерывание как капля в море по размеру (асм).
вот что получилось.....