А по-моему у него та же проблема, что и у меня была - с кварцем. Все на вид правильно, однако стоит проверить , соответствуют ли временные задержки указанным. Если zheka не опытней, чем я, то он наверняка тоже CKSEL не прошил.
А вот у меня другие проблемы. У же говорил, что код-пример из CodeVision Выдает буквенно-цифровой бред. Вот я выдрал код функции, измеряющей температуру:
Код
float ds18b20_temperature(unsigned char *addr)
{
unsigned char resolution;
if (ds18b20_read_spd(addr)==0) return -9999;
resolution=(__ds18b20_scratch_pad.conf_register>>5) & 3;
if (ds18b20_select(addr)==0) return -9999;
w1_write(0x44);
delay_ms(conv_delay[resolution]);
if (ds18b20_read_spd(addr)==0) return -9999;
w1_init();
return (*((int *) &__ds18b20_scratch_pad.temp_lsb) & bit_mask[resolution])*0.0625;
}
Что-то я не вижу там обработки заявленного __ds18b20_scratch_pad.temp_msb (старшего байта). Нет его (temp_msb) упоминания и во всех других файлах имеющих отношение к демо-проекту. Может я не прав, конечно... Но если прав - объясните, как доработать функцию, чтобы она полностью обрабатывала ответ датчика.
Сообщение отредактировал ogogogogogogogogogo - Apr 17 2006, 18:32