Цитата(Kuzmi4 @ Jan 25 2008, 09:16)

На счёт 2-го - ну на счёт настройки таймера - 192 от 195 - не сильно отличается - комп должен кушать- что он в принципе и делает, а на счёт 288/254 - я то понимаю что это выжидание в полтора байта, чтоб после старта начать проверять в середине значения - "0" или "1". Я в принципе проверяю не в середине - ближе к краю - знаю чем чревато, но скушало ж...
Неправильный подход. Для асинхронного протокола и так всего 5% на разницу скоростей, а вы своими руками её уменьшаете, спрашивается, зачем? Да, на столе и в тепличных условиях иногда будет работать, а в реале не будет. Кроме того, надо менять подход, вы не сможете записать 288 в 8-битный таймер, там максимум 255. Проще всего сделать так. В прерывании инт0 поставить константу=144, т.е. на длительность половины бита, и счетчик бит установить на 9 (фиктивный счет старт-бита).
Цитата(Kuzmi4 @ Jan 25 2008, 09:16)

На счёт 3-го - действительно TCNT0 сбрасывается в прерывании по сравнению, однако код не маленький и у меня таймер успевает натикать 3 раза - вот я его сбрасываю - понимаю что не очень корректно - каюсь...
Так нельзя делать, кто ж подводит часы каждый раз после приёма бита? А если длина кода изменится, подводить по-другому? Пусть они себе тикают сами по себе и щёлкают точно в середине бита - это максимально достижимый оптимум.
Цитата(Kuzmi4 @ Jan 25 2008, 09:16)

На счёт 5-го - та мне и нужно было проверить 1 раз..
Ну вы ж принимаете несколько байт, значит, потенциально мс может быть 1, 2, 3 и т.д. А проверяете почему-то на 1. А если мс=2 - это не ошибка?
Цитата(Kuzmi4 @ Jan 25 2008, 09:16)

А вот на счёт 4-го я с вами не согласен - читал как то документацию на SIGNAL и INTERRUPT в WinAVR`е , да и где то на форуме даже дискуссия была по этому поводу - в обсчем суть в том что в SIGNAL нету кли а в INTERRUPT - есть. Хардварно ж флажок I не сбрасывается при вызове любого прерывания.... Поправьте или ткните носом, если не прав
Неправы, вот цитата из doc2466o, page 14
When an interrupt occurs, the Global Interrupt Enable I-bit is cleared and all interrupts
are disabled. The user software can write logic one to the I-bit to enable nested interrupts.
All enabled interrupts can then interrupt the current interrupt routine. The I-bit is
automatically set when a Return from Interrupt instruction – RETI – is executed.