/* * Title : ds1822.c * Description : DS1822 subroutine * Author : KAWAMOTO Yasuhisa * URL : http://www.devdrv.co.jp/ * Date : 01/13/2006 */ //----------------------------------------------------------------------------- // Includes //----------------------------------------------------------------------------- #include #include "main.h" //----------------------------------------------------------------------------- // init_ds1822 //----------------------------------------------------------------------------- void init_ds1822(void) { unsigned char i; // Read Scratchpad OWTouchReset(); OWWriteByte(0x55); for(i = 0; i < 8; i++) OWWriteByte(ROMCode[i]); OWWriteByte(0xBE); for(i = 0; i < 9; i++) { ScratchPAD[i] = OWReadByte(); } #ifdef DEBUG uart0_put_val(ScratchPAD[4]); #endif if((ScratchPAD[4] & 0x60) != 0x60) { // Write Scratchpad OWTouchReset(); OWWriteByte(0x55); for(i = 0; i < 8; i++) OWWriteByte(ROMCode[i]); OWWriteByte(0x4E); OWWriteByte(0x00); OWWriteByte(0x00); OWWriteByte(ScratchPAD[4] | 0x60); // R1,R0 = 11b(12bit) } #ifdef DEBUG uart0_put_char('\r'); uart0_put_char('\n'); #endif } //----------------------------------------------------------------------------- // ds1822 //----------------------------------------------------------------------------- void ds1822(void) { unsigned char i; for(i = 0; i < 8; i++) uart0_put_val(ROMCode[i]); // Convert T OWTouchReset(); OWWriteByte(0x55); for(i = 0; i < 8; i++) OWWriteByte(ROMCode[i]); OWWriteByte(0x44); for(i = 0; i < 75; i++) // tCONV = 750ms(12bit) tickDelay(10000*(SYSCLK/100000)/140); // Read Scratchpad OWTouchReset(); OWWriteByte(0x55); for(i = 0; i < 8; i++) OWWriteByte(ROMCode[i]); OWWriteByte(0xBE); for(i = 0; i < 9; i++) { uart0_put_val(OWReadByte()); } uart0_put_char('\r'); uart0_put_char('\n'); }