PICO I2C FW

Dependencies:   USBDevice

Revision:
18:d913ec9dd9c2
Parent:
17:401a5bb8d403
Child:
19:7081d6f6288b
--- a/main.cpp	Fri Aug 31 19:28:28 2018 +0000
+++ b/main.cpp	Fri Aug 31 19:47:40 2018 +0000
@@ -4,46 +4,8 @@
 #include "USBSerial.h"
 #include <ctype.h>
 
-
-#define I2C_ADDRESS 0x30    // DS2484 I2C address
-#define DS2484_ADD  0x30    // DS2484 I2C write address
-
-
 #define PERIOD      10       // Logging period in seconds
 
-//DS2484 Status register bits
-#define OWB 0x01            // status reg, One Wire Busy
-#define PPD 0x02            // status reg, Presence Pulse Detected
-#define SD  0x04            // status reg, Short Detected
-#define LL  0x08            // status reg, Logic Level
-#define RST 0x10            // status reg, Device Reset  (DS2484 Reset)
-#define SBR 0x20            // status reg, Single Bit Result
-#define TSB 0x40            // status reg, Triplet Second Bit
-#define DIR 0x80            // status reg, Branch Direction Taken
-//DS2484 Command bytes
-#define RESET       0xF0    // DS2484 Reset
-#define SRP         0xE1    // DS2484 Set Read Pointer
-#define WDC         0xD2    // DS2484 Write Device Configuration                     
-#define ACP         0xC3    // DS2484 Adjust one wire Control Port
-#define OW_RESET    0xB4    // DS2484 One Wire Reset
-#define OW_SB       0x87    // One Wire Single Bit (write or read)
-#define OWWB        0xA5    // One Wire Write Byte
-#define OWRB        0x96    // One Wire Read Byte
-#define OWT         0x78    // One Wire Triplet  (read 2 bits, write 1 bit)
-//One Wire Commands
-#define OW_SEARCH   0xF0    // Search Rom
-#define OW_READ     0x33    // Read Rom
-#define OW_MATCH    0x55    // Match Rom
-#define OW_SKIP     0xCC    // Skip Rom
-#define OW_OD_MATCH 0x69    // Match Rom
-#define OW_OD_SKIP  0x3C    // Skip Rom
-#define OW_ALARM    0xEC    // Alarm Search
-// OT07 OW commands
-#define OT07_OW_CONVERT     0x44    //OT07 OW convert temperature command
-#define OT07_OW_WRITE       0xCC    // OT07 OW Write Register command
-#define OT07_OW_READ        0x33    // OT07 OW Read Register command
-#define OT07_OW_RESET       0x82    // OT07 OW Soft Reset command
-
 //OT07 Registers
 #define OT07_STATUS         0x00    // OT07 status regiter
 #define OT07_INT_EN         0x01    // OT07 Interrupt Enable
@@ -224,227 +186,6 @@
 }
 
 // *****************************************************************************
-//   OW_reset()
-//   returns  0 no device present,  1 device present
-// *****************************************************************************
-
-int OW_reset(){
-    char data[2];                       // define as minimun array size so 'data' is a pointer
-    data[0] = OW_RESET;                 // One Wire Reset 0xB4     
-    i2c.write(DS2484_ADD,data,1,0);     // write reset command to DS2484
-    wait_ms(1);                     
-    do{                                 // poll OW-busy 
-        i2c.read(DS2484_ADD,data,1);    // read back status byte from DS2484        
-    }while(OWB & data[0]);    
-    if(PPD & data[0])return 1;          // Presence Pulse Detected bit true?
-    return 0;                           // else 
-} // end OW_reset()
-
-// *****************************************************************************
-//   OW_write_byte(char)   takes char to send over one wire
-//   returns  DS2484 status byte
-// *****************************************************************************
-
-char OW_write_byte(char byte){
-
-    char data[2];
-    data[0] = 0xA5;
-    data[1] = byte;
-    i2c.write(DS2484_ADD,data,2,1);
-    i2c.read(DS2484_ADD,data,1);    // read status byte  
-    
-    // db.printf("[%02X]",byte);              
-    wait_us(700);                   // assumes normal speed OW write
-    return data[0];                 // return DS2484 Status byte
-   
-}// end OW_write_byte()
-
-
-// *****************************************************************************
-//   OW_read_byte(char *, int)    char* (save data pointer)
-//                                int (number of bytes to read)
-//   returns  0x00
-//
-//   assumes OW_reset, OW_match rom, and OW device register read address already sent.
-//   
-// *****************************************************************************
-
-char OW_read_byte(char* a, int n){
-
-    char data[2];
-    int i; 
-    
-    //read n bytes of data 
-    i=0;                       
-    do{                         
-        data[0] = OWRB;                     // send 0x96;   DS2484 command, OW read byte
-        i2c.write(DS2484_ADD,data,1,0);
-        wait_us(600);
-        do{
-            i2c.read(DS2484_ADD,data,1);    // read status byte and test OW-busy?                                
-        }while(data[0]&0x01 == 1);          // status bit[0] set --> OW busy 
-                             
-        //get byte from DS2484
-        data[0] = SRP;                      // send 0xE1, set read pointer
-        data[1] = 0xE1;                     // set read pointer address 0xE1 read OW data
-        i2c.write(DS2484_ADD,data,2,1);            
-        i2c.read(DS2484_ADD,data,1);        // read bytes from OW register
-                            
-        a[i] = data[0];
-
-        i++;
-        //pc.printf("[%02X] ",data[0]);
-    }while(i<n);
-    //for(i=0;i<n;i++) db.printf("OW_read_byte - [%2d][%02X]\r\n",i,a[i]);
-    return 0x00;
-}// end OW_read_byte()
-
-
-
-// *****************************************************************************
-//   OW_match_rom(char *)      pointer to device_id byte array
-//   returns 0x00
-//   assumes OW_reset alread sent
-// *****************************************************************************
-
-char OW_match_rom(char *device_id){
-    
-    int i;
-    //Match rom
-    OW_write_byte(OW_MATCH);                    // send 0x55, match rom command                      
-    //send rom code for device
-    for(i=0;i<8;i++){
-        OW_write_byte(device_id[i]);           //I2C write ow byte 
-    } 
-    return 0x00;
-    
-}// end OW_macth_rom
-
-
-// *****************************************************************************
-//   search_rom(char *)         pointer to start of 2D array rom_id_list
-//   returns  number of devices found
-// *****************************************************************************
-
-
-int search_rom(char rom_id_list[MAX_DEVICES][ID_LENGTH]){   // searches for all device on OW bus, returns # found
-
-    int bit_num;
-    int byte_num;
-    int last_zero;
-    int last_discrep;
-    int search_dir;
-    int rom_count;
-    char byte_mask;
-    int last_device;
-    int i; 
-    
-    char rom_id[8];     //used in rom search
-    char data[8];
-    char crc;
-    
-    //init for first search only
-    last_device = 0;
-    last_discrep = 0;
-    rom_count = 0;
-    
-    for(i=0;i<8;i++)rom_id[i] = 0x00;  //clear rom_id    
-    
-    do{  // loop for each rom search (end when last_device = 1)
-                        
-        //init variable for each search
-        bit_num = 1;
-        byte_num = 0;
-        byte_mask = 1;
-        last_zero = 0;
-        
-                                                                        
-        //OW reset
-        if(OW_reset()){  //returns 1 if at least one device present                
-            //test if last device found
-            if(last_device!=1){         // more devices to find                                
-                search_dir = 0;                    
-                OW_write_byte(OW_SEARCH);       //send 0xF0 over one wire to init search rom              
-                                
-                do{
-                    //determine search direction
-                    if(bit_num < last_discrep){ //before last discrepancy
-                        if((rom_id[byte_num] & byte_mask) > 0){// use last rom path
-                            search_dir = 1;             // last path was 1
-                        }else{
-                            search_dir = 0;             // last path was 0
-                        }
-                    }else{                              // at or past last discrepancy
-                        if(bit_num == last_discrep){    // at last discrepancy
-                            search_dir = 1;             //been here before so use 1
-                        }else{
-                            search_dir = 0;             //past last discrepancy so use 0
-                        }
-                    }
-                                    
-                    //write direction bit and get reply                               
-                    data[0] = 0x78;
-                    data[1] = search_dir << 7;          //sets bit 7 of status reg to search_dir
-                    i2c.write(DS2484_ADD,data,2,1);                                    
-                                    
-                    wait_us(250);
-                                    
-                    //read in rom_id bits
-                    i2c.read(DS2484_ADD,data,1);        // read status byte   
-                                    
-                    //(todo) check for no device error here
-                                    
-                    //get search direction used by triplet command                                   
-                                    
-                    if(data[0]&0x80){                   //true --> DIR bit = 1
-                        search_dir = 1;                                        
-                    }else{
-                        search_dir = 0;                                        
-                    }
-                    
-                    //test for discrepancy (both 0 and 1 present at current bit number)(TSB = 0 (1's present) and SBR = 0 (0's present))
-                    if(!(data[0] & 0x60)){             // true --> discrepancy exist, both TSB and SBR = 0                                               
-                        if(search_dir == 0)last_zero = bit_num; 
-                    }
-                    if(search_dir == 1){               // write search dir to rom bit
-                        rom_id[byte_num] |= byte_mask;
-                    }else{
-                        rom_id[byte_num] &= ~byte_mask;
-                    }
-                                    
-                    //increment bit_num and byte_num if needed
-                    bit_num++;
-                    byte_mask <<= 1;        //rotate 1 bit left
-                    if(byte_mask == 0){     //if bit shifts out of byte set byte to 1
-                        byte_num++;             //also increnent byt num
-                        byte_mask = 1;     
-                    }
-                                    
-                                
-                }while(bit_num<65);  //bit nun started at 1 so end after 64 
-                last_discrep = last_zero;
-                if(last_discrep == 0)last_device = 1;
-                //copy rom_id into rom_id_list and calc crc of first 7 bytes
-                crc = 0x00;                 // reset crc8 total to 0
-                for(i=7;i>=0;i--){
-                    rom_id_list[rom_count][i] = rom_id[i];
-                }              
-                
-                //clac_crc of rom ID
-                for (i=0;i<7;i++){
-                    crc = calc_crc8(crc, rom_id[i]);
-                }
-                                                                                              
-                rom_count++;  
-            }//if(last_device..)
-        }else{//if prescent -- if no device present rom count is 0
-            return 0;
-        }
-    }while(last_device == 0); 
-    return rom_count;
-}// end search_rom()
-
-// *****************************************************************************
 //   OT07_write_register(char, char, char)  writes single byte to OT07
 //                       char   I2C address
 //                       char   OT07 register address
@@ -577,354 +318,6 @@
     return T;  
 }
 
-// *****************************************************************************
-//   alarm_search(char *)         pointer to start of 2D array rom_id_list
-//   returns  number of devices found with alarm triggered
-// *****************************************************************************
-
-int alarm_search(char rom_id_list[MAX_DEVICES][ID_LENGTH]){   // searches for all devices with alarm triggered on OW bus, returns # found
-
-    int bit_num;
-    int byte_num;
-    int last_zero;
-    int last_discrep;
-    int search_dir;
-    int rom_count;
-    char byte_mask;
-    int last_device;
-    int i; 
-    
-    char rom_id[8];   //used in rom search
-    char data[8];
-    char crc;
-    
-    //init for first search only
-    last_device = 0;
-    last_discrep = 0;
-    rom_count = 0;
-    
-    for(i=0;i<8;i++)rom_id[i] = 0x00;  //clear rom_id    
-    
-    do{  // loop for each rom search (end when last_device = 1)
-                        
-        //init variable for each search
-        bit_num = 1;
-        byte_num = 0;
-        byte_mask = 1;
-        last_zero = 0;
-        
-                                                                        
-        //OW reset
-        if(OW_reset()){  //returns 1 if at least one device present                
-            //test if last device found
-            if(last_device!=1){         // more devices to find                                
-                search_dir = 0;                    
-                OW_write_byte(OW_ALARM);       //send 0xEC over one wire to init alarm search              
-                                
-                do{
-                    //determine search direction
-                    if(bit_num < last_discrep){ //before last discrepancy
-                        if((rom_id[byte_num] & byte_mask) > 0){// use last rom path
-                            search_dir = 1;             // last path was 1
-                        }else{
-                            search_dir = 0;             // last path was 0
-                        }
-                    }else{                              // at or past last discrepancy
-                        if(bit_num == last_discrep){    // at last discrepancy
-                            search_dir = 1;             //been here before so use 1
-                        }else{
-                            search_dir = 0;             //past last discrepancy so use 0
-                        }
-                    }
-                                    
-                    //write direction bit and get reply                               
-                    data[0] = 0x78;
-                    data[1] = search_dir << 7;          //sets bit 7 of status reg to search_dir
-                    i2c.write(DS2484_ADD,data,2,1);                                    
-                                    
-                    wait_us(250);
-                                    
-                    //read in rom_id bits
-                    i2c.read(DS2484_ADD,data,1);        // read status byte   
-                                    
-                    //(todo) check for no device error here
-                                    
-                    //get search direction used by triplet command                                   
-                                    
-                    if(data[0]&0x80){                   //true --> DIR bit = 1
-                        search_dir = 1;                                        
-                    }else{
-                        search_dir = 0;                                        
-                    }
-                    
-                    //test for discrepancy (both 0 and 1 present at current bit number)(TSB = 0 (1's present) and SBR = 0 (0's present))
-                    if(!(data[0] & 0x60)){             // true --> discrepancy exist, both TSB and SBR = 0                                               
-                        if(search_dir == 0)last_zero = bit_num; 
-                    }
-                    if(search_dir == 1){               // write search dir to rom bit
-                        rom_id[byte_num] |= byte_mask;
-                    }else{
-                        rom_id[byte_num] &= ~byte_mask;
-                    }
-                                    
-                    //increment bit_num and byte_num if needed
-                    bit_num++;
-                    byte_mask <<= 1;        //rotate 1 bit left
-                    if(byte_mask == 0){     //if bit shifts out of byte set byte to 1
-                        byte_num++;             //also increnent byt num
-                        byte_mask = 1;     
-                    }
-                                    
-                                
-                }while(bit_num<65);  //bit nun started at 1 so end after 64 
-                last_discrep = last_zero;
-                if(last_discrep == 0)last_device = 1;
-                //copy rom_id into rom_id_list and calc crc of first 7 bytes
-                crc = 0x00;                 // reset crc8 total to 0  
-                for(i=7;i>=0;i--){
-                    rom_id_list[rom_count][i] = rom_id[i];
-                }                 
-                
-                //clac_crc of rom ID
-                for (i=0;i<7;i++){
-                    crc = calc_crc8(crc, rom_id[i]);
-                }
-                                                                                              
-                rom_count++;  
-            }//if(last_device..)
-        }else{//if prescent -- if no device present rom count is 0
-            return 0;
-        }
-    }while(last_device == 0);
-
-    //check if rom_id from alarm search is all 1s (this means there was a presence pulse but no alarm is triggered)
-    bool bad_rom_id = true;
-    for(int i = 0; i < 7; i++)
-    {
-        if(rom_id_list[0][i] != 0xFF)
-            bad_rom_id = false; //found a byte in the rom id that isn't all 1s
-    }
-    if(bad_rom_id)
-        return 0;
-    
-    return rom_count;
-}// end alarm_search()
-
-
-// ********************  write_OW_register()  ********************************
-// write_OW_register(char*, int, int, char*) 
-//                          char*   pointer to rom_id 
-//                          int     start address
-//                          int     number of bytes to write
-//                          char*   pointer to write data location
-// returns  0 if CRC match data 
-// returns -1 if CRC does not match data
-// 
-// *****************************************************************************
-
-
-
-int write_OW_register(char *device_ID, int start_add, int n, char *data){
-    int i;   
-    //select device
-    OW_reset();
-    OW_match_rom(device_ID);
-    //set start address
-    OW_write_byte(OT07_OW_WRITE);       // send 0xCC, OW write register command for OT07
-    OW_write_byte(start_add);           // send write register start address 
-    OW_write_byte(n-1);                 // send length of bytes to write (00-> one byte)
-    for(i=0;i<n;i++){                   // send n bytes of data
-        OW_write_byte(data[i]);
-    }
-    OW_read_byte(data,2);               // read 2 byte CRC
-    
-    // --- todo ----
-    // calculate CRC of
-    // Command + length + n bytes sent
-    // compare with 2 bytes read
-   
-    return 0;
-    
-}//end write_OW_register
-
-
-
-
-// ********************  read_OW_register()  ********************************
-// read_OW_register(char*, int, int, char*) 
-//                          char*   pointer to rom_id 
-//                          int     start address
-//                          int     number of bytes to read, not including CRC bytes
-//                          char*   pointer to save data location
-// returns  0 if CRC match data 
-// returns -1 if CRC does not match data
-// 
-// *****************************************************************************
-
-
-
-int read_OW_register(char *device_ID, int start_add, int n, char *data){
-       
-    //int i;
-    //select device
-    OW_reset();
-    OW_match_rom(device_ID);
-    //set start address
-    OW_write_byte(OT07_OW_READ);        // send 0x33, OW read register command for OT07
-    OW_write_byte(start_add);           // send read register start address 
-    OW_write_byte(n-1);                   // send length of bytes to read (0 -> 1 byte)
-    OW_read_byte(data,n+2);             // read n bytes plus 2 byte CRC
-    
-    // --- todo ----
-    // calculate CRC of
-    // Command + length + n bytes
-    // compare with last 2 bytes read   
-    return 0;
-    
-}//end read_OW_register
-
-int set_test_mode(char *device_id){
-    char data[4];
-    
-    // enter test mode
-    OW_reset();
-    OW_match_rom(device_id);            // match ROM                                
-    OW_write_byte(OT07_OW_WRITE);       // device write register command
-    OW_write_byte(0xFF);                // device register address
-    OW_write_byte(0x00);                // number of bytes to write -1
-    OW_write_byte(0x54);                // first half of test mode pass code                                    
-    OW_read_byte(data,2);               // read 2 byte CRC 
-                                   
-    OW_reset();
-    OW_match_rom(device_id);
-    OW_write_byte(OT07_OW_WRITE);       // device write register command
-    OW_write_byte(0xFF);                // device register address
-    OW_write_byte(0x00);                // number of bytes to write -1
-    OW_write_byte(0x4D);                // second half of test mode pass code
-    OW_read_byte(data,2);               // read 2 byte CRC 
-    
-    // set ADC_ENABLED                               
-    OW_reset();
-    OW_match_rom(device_id);
-    OW_write_byte(OT07_OW_WRITE);       // device write register command
-    OW_write_byte(0x81);                // device register address
-    OW_write_byte(0x00);                // number of bytes to write -1
-    OW_write_byte(0x04);                // ADC_ENABLED code    
-    OW_read_byte(data,2);               // read 2 byte CRC
-    
-    OW_reset();
-    OW_match_rom(device_id); 
-    OW_write_byte(OT07_OW_WRITE);       // device write register command
-    OW_write_byte(0x98);                // device register address
-    OW_write_byte(0x05);                // number of bytes to write -1
-    OW_write_byte(0x40);                // add 98 data 40
-    OW_write_byte(0xD4);                // add 99 data D4 
-    OW_write_byte(0xE0);                // add 9A data E0 
-    OW_write_byte(0xB3);                // add 9B data B3 
-    OW_write_byte(0x09);                // add 9C data 09 
-    OW_write_byte(0xBA);                // add 9D data BA    
-    OW_read_byte(data,2);               // read 2 byte CRC 
-     
-     
-    //OTP copy
-    OW_reset();
-    OW_match_rom(device_id); 
-    OW_write_byte(OT07_OW_WRITE);       // device write register command
-    OW_write_byte(0x80);                // device register address
-    OW_write_byte(0x00);                // number of bytes to write -1
-    OW_write_byte(0x82);                //    
-    OW_read_byte(data,2);               // read 2 byte CRC 
-    
-    OW_reset();
-    OW_match_rom(device_id);
-    OW_write_byte(OT07_OW_WRITE);       // device write register command
-    OW_write_byte(0x80);                // device register address
-    OW_write_byte(0x00);                // number of bytes to write -1
-    OW_write_byte(0x02);                //    
-    OW_read_byte(data,2);               // read 2 byte CRC 
-       
-    
-    OW_reset();
-    OW_match_rom(device_id);    
-    OW_write_byte(OT07_OW_WRITE);       // device write register command
-    OW_write_byte(0xFF);                // device register address
-    OW_write_byte(0x00);                // number of bytes to write -1
-    OW_write_byte(0x00);                // exit Test mode   
-    OW_read_byte(data,2);               // read 2 byte CRC 
-    return 0;
-}// end set_test_mode()
-
-
-
-// ********************  convert_temperature()  ********************************
-// convert_temperature()
-// returns 0
-// dose not block for 0.75 seconds.
-// *****************************************************************************
-
-int convert_temperature(){   // convert sent to all OW devices
-
-    char data[8];   
-    OW_reset();
-                        
-    OW_write_byte(OW_SKIP);     // send 0xCC, skip rom command
-    
-    // activate strong pullup                       
-    data[0] = WDC;              // send 0xD2 Write Device Configuration     
-    data[1] = 0xA5;             // 1010 0101 b  strong and active pullup on
-    i2c.write(DS2484_ADD,data,2,0);
-                        
-    //convert command
-    OW_write_byte(OT07_OW_CONVERT);       // send 0x44, Convert Temperature
-    OW_read_byte(data,2);                 // read 2 byte CRC
-    return 0;
-}
-
-
-// ********************  convert_temperature()  ********************************
-// convert_temperature(char *)  takes 8 byte rom_id as input
-// returns 0
-// dose not block for 0.75 seconds.
-// *****************************************************************************
-
-int convert_temperature(char *device_id){ 
-
-    char data[8];   
-    OW_reset();
-    OW_match_rom(device_id);    // send device id 
-    
-    // activate strong pullup                       
-    data[0] = WDC;              // send 0xD2 Write Device Configuration     
-    data[1] = 0xA5;             // 1010 0101 b  strong and active pullup on
-    i2c.write(DS2484_ADD,data,2,0);
-                        
-    //convert command
-    OW_write_byte(OT07_OW_CONVERT);       // send 0x44, Convert Temperature
-    OW_read_byte(data,2);                 // read 2 byte CRC
-    return 0;
-}
-
-//************************  get_temperature()  *********************************
-// get_temperature(char *)  takes 8 byte rom_id as input
-// returns                  double temperature in oC
-//******************************************************************************
-
-double get_temperature(char *device_id){
- 
-    char t[4];
-    double T;
-    int count;
- //   char data[2];  
-    
-    read_OW_register(device_id,OT07_FIFO_DATA,0x02,t);     // Read temperature from FIFO, 2 bytes 
-    //calculate temperture from data     
-    count = (int)(t[0]*256 + t[1]);
-    if (count >= 32768)count = count - 65536;     // 2s comp
-    T = (double)count*0.005; 
-    
-    return T;    
-}// end get_temperature()
-
 
 void write_settings_file(int interval, bool device_logged[MAX_DEVICES])
 {
@@ -1472,27 +865,6 @@
                         
                         case 'T':
                         case 't':            
-                                if(n == 2){//get temperatures from selected device                                                              
-                                    for(k=0;k<8;k++){                   
-                                        device_id[k] = rom_id_list[device][k];   // get device_id from rom_id_list
-                                    }      
-                                    convert_temperature(device_id);          //send OW convert selected device
-                                    wait(0.02);  //wait 20 ms for convert temperature to complete                         
-                                    T[0] = get_temperature(device_id);
-                                    pc.printf("device[%02X]  temperature[%.3f]\r\n",device,T[0]);
-                                }
-                                if(n == 3){ // "t 1 5"  get temperature for devices 1 thru 5
-                                        
-                                    convert_temperature();          //send OW convert to all devices
-                                    wait(0.02);  //wait 750 ms for convert temperature to complete 
-                                    for(j=device;j<=arg1;j++){
-                                        for(k=0;k<8;k++){                   
-                                            device_id[k] = rom_id_list[j][k];   // get device_id from rom_id_list
-                                        } 
-                                        pc.printf("device[%02X]  temperature[%.3f]\r\n",j,get_temperature(device_id));
-                                    }                       
-                                }
-                                
                                 
                                 if(n == 2){//get temperatures from selected device                                                            
                                         
@@ -1530,6 +902,7 @@
                         case 'x':   
                         case 'X':   // experimental modes
                                     // ******************  set up ADC enabled in test mode*****************
+                                    /*
                                     pc.printf("<set ADC_ENABLED in test mode>\r\n");
                                     
                                     for(j=0;j<device_count;j++){                                   
@@ -1537,7 +910,7 @@
                                             device_id[k] = rom_id_list[j][k];   // get device_id from rom_id_list
                                         }
                                         set_test_mode(device_id);
-                                    } 
+                                    } */
                             break;
                             
                                                
@@ -1557,16 +930,23 @@
       if(log_flag == true){                       
             if(time_count >= time_to_sample){ //take next sample
                 time_to_sample += log_interval;   // calculate time for next sample
-                   
+                
+                ///////////////////////temp conversion and assignment to T[]//////////////////////////////////////
                 // start conversion    
-                convert_temperature();
+                /*convert_temperature();
                 wait(0.02);               //wait 20ms for convert to complete
                 for(j=0;j<device_count;j++){ 
                     for(k=0;k<8;k++){                   
                         device_id[k] = rom_id_list[j][k];   // get device_id from rom_id_list
                     }
                     T[j] = get_temperature(device_id);            
+                }*/
+                for(j=0;j<device_count;j++){            
+                    convert_temperature(OT07[j].I2C_address);
+                    wait(0.02);  //wait 20ms for convert temperature to complete 
+                    T[j] = get_temperature(OT07[j].I2C_address); 
                 }
+                /////////////////////////////////////////////////////////////////////////////////////////////////
 
                 //open file for microSD logging
                 FILE *fp = fopen(log_file, "a");