//---------------------------------------- // Reset DS1820 //---------------------------------------- char ResetDS1820(void) { char a; DDRD.3=1; DQ = 0; //pull DQ line low delay_us(490); // leave it low for about 490us DQ = 1; // allow line to return high DDRD.3=0; delay_us(55); // wait for presence 55 uS presence = DQ; // get presence signal delay_us(316); // wait for end of timeslot 316 uS a=presence; DDRD.3=1; LCD_int(0,6,"RESET: %02u",(int)a); LCD_int(0,7,"RESET: %02u",presence); return a; // presence signal returned } // 0=presence, 1 = no part