Использую в своем проекте сабж для измерения температуры воды аквариума. Так вот. пока датчик стоял на макетке всё было нормально. Как только я его припаял через экранированный провод (метра-2-3) датчик стал показывать температуру 0 градусов. Если вернуть датчик назад - всё работает нормально.
Почему такое происходит - не могу понять. Вешал конденсатор на питание на самом датчике - ноль реакции. Ставил задержку около секунды перед измерением и выборкой данных, тоже ноль реакции.
Вот код, который использую.
Код: Выделить всё
int GetTemperature()
{
int temp;
setGIEoff();
// сначала считаем температуру - потом сделаем замер
// так будет быстрее, чем ждать 750 мс
Ow_Reset(&PORTC, 0);
Ow_Write(&PORTC, 0, 0xCC); // Issue command SKIP_ROM
Ow_Write(&PORTC, 0, 0xBE); // Issue command READ_SCRATCHPAD
temp = Ow_Read(&PORTC, 0);
temp = (Ow_Read(&PORTC, 0) << 8) + temp;
// считали, теперь запустим новый замер температуры
Ow_Reset(&PORTC, 0); // Onewire reset signal
Ow_Write(&PORTC, 0, 0xCC); // Issue command SKIP_ROM
Ow_Write(&PORTC, 0, 0x44); // Issue command CONVERT_T
setGIEon();
temp = temp * 5;
return temp;
}


