DS18B20 not respond after a CONVERT T command

Dear friends,
I have hooked a DS18B20 to mega128 running at 8MHz int clock, and pulle up 4k7, AT 3.3V. I have included code. Problem is that after issuing a SKIP ROM + CONVERT T command the IC is not responding “pull bus low as convertion is in progress”

Any ideas ?
Thanks a lot

*   File name :DS18B20                                                             *
#include <avr\io.h>
#define  F_CPU 8000000UL
#include <util\delay.h>
#include <avr/pgmspace.h>

#define THERM_CMD_SKIPROM        0xCC                    //SKIP ROM command
#define THERM_CMD_CONVERTTEMP    0x44                    //START CONVERT T command
#define THERM_CMD_READSCRATCHPAD 0xBE                    //READ SCRATCHPAD  command

void DS18B20_Reset (void);
void DS18B20_Command (unsigned char DS_CMD);

*                                                                                            *
* Main Handler                                                                             *
* Description: Kernel handler and task manager                                             *
*                                                                                    *
int main(void)
  DDRG  &=~ 0x01;                                     //Setup data direction for PORTA
  PORTG &=~ 0x01;                                     //Setup data output on PORTA      
  DDRA=  0xFF;                                        //Setup data direction for PORTA
  PORTA = 0x00;                                       //Setup data output on PORTA      
*                                                                              *
*     Main program loop excecuted here                                         *
*     Foreground process                                           *
*                                                                              *
for(;;)                                               //Endless loop
 {//--------------------------------------------------//loop point -P1start-

    DS18B20_Reset();                                  //Reset DS18B20
    _delay_us(60);                                    //Delay for 60us
    DS18B20_Command(THERM_CMD_SKIPROM);               //Send SKIP ROM COMMAND
    _delay_us(60);                                    //Delay for 60us
    DS18B20_Command(THERM_CMD_CONVERTTEMP);           //Send CONVERT T COMMAND

     while (bit_is_clear(PING,0))                     //Wait for DS18B20 to complete conversion
         PORTG |= 0x04;                                 //Open led while waiting
       PORTG &=~ 0x04;                                //Close led when conversion completes
         _delay_ms(1);                                  //Delay for 1ms until next sequence

 }//--------------------------------------------------//loop point -P1end-
return 0;                                             

void DS18B20_Reset (void)
   DDRG  |= 0x01;                                     //Pull bus low
   DDRG &=~ 0x01;                                     //Release bus
     while (bit_is_clear(PING,0))                     //Wait for DS18B20 to finish respond
         PORTA |= 0x80;                                 //Open led while waiting
       PORTA &=~ 0x80;                                //Close led when conversion completes    

void DS18B20_Command (unsigned char DS_CMD)
   for (uint8_t i = 0; i < 8; ++i)                              
         if (bit_is_set(DS_CMD,0))
         DDRG  |= 0x01;                               //Pull bus low
         DDRG &=~ 0x01;                               //Release bus
         else if (bit_is_clear(DS_CMD,0))
         DDRG  |= 0x01;                               //Pull bus low
         DDRG &=~ 0x01;                               //Release bus
      DS_CMD >>= 1;                                   //Shift next bit right

I think you are missing some code.

Reset, Skip ROM, Convert Command

But, in addition -

Then wait for 750 ms


Reset, Skip ROM, Send Command and then read from the DS1820.

I have tested code at;


Peter Anderson