Не могу запустить датчик DS18B20.
Опишу картину.
Вначале я подключилдатчик к микроконтроллеру ATMega8 и перепробовал из нескольких примеров код инициализации датчика. Не работало.
Напомню сведения из DataSheet:
То есть, надо подать импульс 480 мкс,подождать 15-60 мкс, после чего последует импульс от датчика длиной 60-240 мкс.
А мой контроллер не ловит этот импульс. Начинаю ковыряться, выясняю, что импульс от датчика есть, но следует ранее чем через 15 мкс.. и заканчивается ранее чем через 60 мкс.
Подключаю осциллограф. Вот картина (прошу обратить внимание - инвертирована по сравнению с даташитом):
сразу же после тестового импульса появляется импульс датчика, очень короткий. То есть датчик отзывается, но как-то вяло.
Дай-ка думаю, попробую его опросить. Посылаю код 0XF0 - поиск ROM code - отвечает гад - один бит выдает в линию.
На остальные команды не реагирует.
Еще один немаловажный момент - в даташите написано - что тестовый импульс от микроконтроллера должен быть не менее 480 мкс.
Вышеописанная осциллограмма наблюдается даже при 50 мкс.
Вот фрагменты программы:
Код
#define DQW PORTD.0
#define DQR PIND.0
#define DQD DDRD.0
///////////////////////////
unsigned char ow_reset(void)
{
unsigned char presence;
DQW = 0;
DQD = 1;
delay_us(500);
DQD = 0;
delay_us(70);
presence=DQD;
delay_us(450);
return(presence);
}
void main ()
{
while (1)
{
ow_reset();
write_byte(0xF0);
for(k = 0; k < 9; k++)
{
get[k] = read_byte();
}
}
}
Подключаю так:
Что посоветуете? Неисправность датчика? Не могу пока проверить - датчик один, а в магазинах обещают подвезти бог знает когда...