[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Просмотрел описание физического уровня протокола 1-Wire Bus в Data Sheet на DS18S20 и тотчас возникли вопросы по его программной реализации.
Шина асинхронная, требует соблюдения временнЫх параметров.
При реализации чтения бита проблем вроде не видно: Запрещаешь прерывания на 15мкс и читаешь. Ограничения на паузы между битами вроде нет.
Видится проблема при передаче мастером на шину "0": необходимо удержать "0" на время 60...120мкс. Как это лучше делать?
Запрещать прерывания на 70-80мкс на мой взгляд нельзя, время уже достаточно большое. А не запрещать тоже нельзя: где гарантия, что не произойдут несколько прерываний, которые вынесут меня за пределы "time slot". Я тут вижу только один выход: применение аппаратного Compare для формирования импульса.
Два вопроса:
1.Как кто формирует физический уровень протокола 1-Wire Bus?
2.Что будет, если "time slot" превысит 120мкс, но будет меньше времени ресета (480мкс)?
E-mail: info@telesys.ru