Оцените такой вариант:
Прием из аринка - Прерывания INT0, INT1 устанавливают флаги и запускают таймер0 на 1\2500000 секунды (получается примерно 50 прерываний за полупериод сигнала аринка).
По прерыванию таймера мы проверяем состояние ног и считаем счетчик который сравнивается с пороговыми значениями - так мы проверяем длительность полупериодов и узнаем наступлиа ли пауза или нет. Если приняли бит то записываем его в 32битное слово, если записаны все 32 бита то проверяем четность и записываем в массив памяти. В свою очередь есть прерывание УАРТа которое постоянно циклически шлет слова из этого массива, если они есть.
Передача в аринк - Если сработало прерывание УАРТа то принимаем оттуда посылки и соединяем их в 32битное слово, которое записывается в свой массив памяти, и потом запускаем таймер2 с частотой 96кГц.
По прерыванию записываем слово из массива памяти во временную пременную и побитно отправляем в аринк, после 32 бита делаем паузу и дальше по циклически опрашиваем массив памяти.
У меня получается все выполняется только в прерываниях... подскажите как лучше организовать программу ?
Чертежик посылки, а точнее как выглядят последние 3 бита слова, пауза между словами, и первый бит нового слова.
http://img13.imageshost.ru/img/2013/01/17/...f7c0b28e52d.jpg