24.02.2009

PulseIn() в Arduino

Немного повозившись со своим sketch-ем, я пришел к выводу, что не работает инициализация однопроводной шины. Внимательно присмотрелся - а там стоял вызов PulseIn:

if (!pulseIn(dataPin,HIGH,70)) return false;
if (!pulseIn(dataPin,LOW,280)) return false;

Прочитал внимательно релиз-ноты, вот что изменилось:

Modifying pulseIn() to wait for a transition to start timing (i.e. ignoring any pulse that had already started when the function was called)

То есть, говоря по-русски, теперь PulseIn ждет начала импульса, и злостоно игнорирует ситуацию, когда ожидаемый уровень уже установлен (не запускает таймер). Заменил на строчку:

pulseIn(dataPin,LOW,70);

... и всё тут же заработало! Так что релиз 0013 - вполне жизнеспособный (ну кто бы сомневался?)

Комментариев нет:

Отправить комментарий