ну а модуль, соответственно, один.
функции, которые зависят от тактовой (прием-передача бита) я сделал статическими в модуле, чтобы даже соблазна не было с ними работать и компилятор хорошо их инлайнил при необходимости.
т.к. от тактовой по-настоящему зависят только прием-передача бита, то в этих функциях в нужных местах использовал ATOMIC_BLOCK(RESTORE_STATE), чтобы задержки (стандартные из delay.h) не плавали от таковой. собственно, вот и все...
чтобы меньше зависеть от портов и пинов, сделал все через маски, поэтому появилась возможность иметь 8 независимых линий 1-wire на одном порту, что очень удобно для нескольких термодатчиков DS18x20: задал маску 0xFF и подаешь одновременно во все 8 линий сброс, команду старта измерения, потом в нужный момент так же точно сброс, команду чтения результата и опа-на! меняешь маску на 0x01 и считываешь температуру только с 1 датчика, потом сменил маску 0x02 и считал второй... огромный плюс - не надо абсолютно заморачиваться с адресами, т.к. каждый датчик только один на линии! для конечного пользователя намного удобнее, чем меню и инструкция, как датчики приручить
как-то так в общем...


