Помогите организовать проверку на обрыв линии ds18b20

Обсуждаем цифровые устройства...
Ответить
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Сообщение mas123 »

culibin 100 писал(а):я в него не в вникал
Догадываешься, что я хочу тут сказать? :shock:
culibin 100 писал(а):этот кусочек мне товарищ наделил
Риторический вопрос - а почему было у этого "товарища" не проконсультироваться насчет контроля наличия датчика?
Реклама
Встал на лапы
Сообщения: 88
Зарегистрирован: Ср апр 29, 2009 10:35:56
Откуда: кр. лиман украина

Сообщение culibin 100 »

он сам не в курсе. говорит вот так гдето надыбал вот так написал работает и ладно.....вот в таком виде и мне пришло.
Реклама
Друг Кота
Сообщения: 3342
Зарегистрирован: Ср янв 02, 2013 08:37:35

Сообщение АСУ »

Тогда стоит почитать https://yadi.sk/d/WO1GDuK5JiSeg и перечитать, о чём писали раньше…
Встал на лапы
Сообщения: 88
Зарегистрирован: Ср апр 29, 2009 10:35:56
Откуда: кр. лиман украина

Сообщение culibin 100 »

вот так решил реализовать..что скажите?
DDRC |= (1 << 1); // порт на вывод 1или 0 << бит который меняем
PORTC &= ~ (1 << 2); // сброс бита 1
delay_ms(490);
PORTC |= (1 << 2); // установка бита 1
DDRC &= ~ (1 << 2); // сброс бита 1 порт на ввод
delay_ms(70);
if (wire==1){goto eror;}; // если нет ответа авария
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 3342
Зарегистрирован: Ср янв 02, 2013 08:37:35

Сообщение АСУ »

culibin 100 писал(а):вот так решил реализовать..что скажите?
При сбросе шины, я делаю так: проверяю пин порта шины (если 0 – значит неисправность, выходим) -> если 1, то порт шины на выход -> пауза 480 мкс -> порт шины на вход -> пауза 60 мкс -> проверяю пин порта шины (если 1 – значит нет сигнала присутствия датчика или обрыв шины) -> если 0, значит пауза 280 мкс -> проверяю пин порта шины (если 0 – значит неисправность…), если 1 значит всё нормуль, инициализация датчика прошла успешно. Вот и все дела… датчик ожидает следующих действий…
Реклама
Встал на лапы
Сообщения: 88
Зарегистрирован: Ср апр 29, 2009 10:35:56
Откуда: кр. лиман украина

Сообщение culibin 100 »

вот такая функция у меня получилась..все отлично работает мож кому пригодиться.спасибо всем за помощ.
eror_ds() // шина сидит на portc.2
{ #asm("cli") ; по прерыванию работает динамическая индикация поэтому отключаю
if (wire==0){goto eror1;}; // если 0 значит авария замыкание 1 все норм идем дальше
DDRC |= (1 << 2); // порт на вывод
PORTC &= ~ (1 << 2); // 0 на выход
delay_us(490);
PORTC |= (1 << 2); // 1 на выход
DDRC &= ~ (1 << 2); // порт на ввод
delay_us(60);
if (wire==1){goto eror2;}; // если нет ответа на шине 1 авария обрыв
goto next;//если нет повреждений идем на next
eror1: #asm("sei"); (тут нужные действтия и циклим по метке goto eror1) //короткое замыкание разрешим прерывания для отображения на экране ошибки.
eror2: #asm("sei"); (тут нужные действтия и циклим по меткеgoto eror2) //обрыв
next:
};
Реклама
Ответить

Вернуться в «Цифровая техника»