|
Коллеги, никак не удается получить уточнение температуры. Пока читаю только основную температуру (0xAA) - все хорошо. Когда начинаю вычитывать другие регистры, основная температура становится 125 градусов. Пробовал не сбрасывать DS1821 перед командой 0x41 (кто-то посоветовал), основная температура становится нормальной, но уточняющие цифры ведут себя странно, практически не меняются с изменением температуры. Посмотрите, может увидите глюк?
reset_DS();
wr_DS(0xEE);
do {
reset_DS();
wr_DS(0xAC);
x = rdDS();
}
while( x & 0x80 );
reset_DS();
wr_DS(0xAA);
x=rd_DS();
f=(float)x;
reset_DS();
wr_DS(0xA0);
a=rd_DS9();
reset_DS();
wr_DS(0x41);
reset_DS();
wr_DS(0xA0);
b=rd_DS9();
f = f -0.5 + (float)(a-b)/a;
printf("a=%d b=%d T = %f\r\n", a, b, f);
E-mail: info@telesys.ru