This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TM4C1294NCPDT: TM4C1294NCPDT 1-wire interface

Part Number: TM4C1294NCPDT

Hi Team,

We are using GPIO as 1-Wire interface for the TM4C1294NCPDT with DS18S20

but the DS18S20 is not responding.

pls find below the code used.

Kindly advice any inputs. we are struck in the 1-wire testing.

the code is below..

-------------------------------------


void readTherm(void){
/*Temp Sensor*/

char opbuffer[100];
int32_t ret=0,i=0,dataToSend=0;

GPIOPinTypeGPIOOutput(GPIO_PORTM_BASE,GPIO_PIN_4);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);

/*Reset*/

GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(800);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
microSecDelay(150);

delay(100);

/*Skip Rom command*/
for(i=0;i<8;i++){
//GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE,GPIO_PIN_4);
dataToSend = 0;
dataToSend = ((0xCC >> (i))& 0x01);
//sprintf(opbuffer,"ROM Command %d Data to send = %x \r\n",i,dataToSend);
//UART_Send(opbuffer);
if(dataToSend == 1){
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(20);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
microSecDelay(82);
}else{
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(83);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
}
microSecDelay(11);
}

microSecDelay(12);


for(i=0;i<8;i++){
//GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE,GPIO_PIN_4);
dataToSend = 0;
dataToSend = ((0xB4 >> (i))& 0x01);
//sprintf(opbuffer,"ROM Command %d Data to send = %x \r\n",i,dataToSend);
//UART_Send(opbuffer);
if(dataToSend == 1){
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(20);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
microSecDelay(82);
}else{
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(83);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
}
microSecDelay(11);
}

microSecDelay(12);

for(i=0;i<8;i++){
//GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE,GPIO_PIN_4);
dataToSend = 0;
dataToSend = ((0xFF >> (i))& 0x01);
//sprintf(opbuffer,"ROM Command %d Data to send = %x \r\n",i,dataToSend);
//UART_Send(opbuffer);
if(dataToSend == 1){
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(20);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
microSecDelay(82);
}else{
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(83);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
}
microSecDelay(11);
}

microSecDelay(12);

delay(100);
/*Reset*/

GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(800);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
microSecDelay(150);

delay(100);

/*Skip Rom command*/
for(i=0;i<8;i++){
//GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE,GPIO_PIN_4);
dataToSend = 0;
dataToSend = ((0xCC >> (i))& 0x01);
//sprintf(opbuffer,"ROM Command %d Data to send = %x \r\n",i,dataToSend);
//UART_Send(opbuffer);
if(dataToSend == 1){
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(20);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
microSecDelay(82);
}else{
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(83);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
}
microSecDelay(11);
}

microSecDelay(12);

/*Convert T command*/
for(i=0;i<8;i++){
//GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE,GPIO_PIN_4);
dataToSend = 0;
dataToSend = ((0x44 >> (i))& 0x01);
//sprintf(opbuffer,"ROM Command %d Data to send = %x \r\n",i,dataToSend);
//UART_Send(opbuffer);
if(dataToSend == 1){
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(20);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
microSecDelay(82);
}else{
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(83);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
}
microSecDelay(11);
}

delay(7);

/*Reset*/

GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(800);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
microSecDelay(150);

delay(5);

/*Convert T command*/
for(i=0;i<8;i++){
//GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE,GPIO_PIN_4);
dataToSend = 0;
dataToSend = ((0xCC >> (i))& 0x01);
//sprintf(opbuffer,"ROM Command %d Data to send = %x \r\n",i,dataToSend);
//UART_Send(opbuffer);
if(dataToSend == 1){
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(20);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
microSecDelay(82);
}else{
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(83);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
}
microSecDelay(11);
}

microSecDelay(12);

for(i=0;i<8;i++){
//GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE,GPIO_PIN_4);
dataToSend = 0;
dataToSend = ((0xBE >> (i))& 0x01);
//sprintf(opbuffer,"ROM Command %d Data to send = %x \r\n",i,dataToSend);
//UART_Send(opbuffer);
if(dataToSend == 1){
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(20);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
microSecDelay(82);
}else{
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);
microSecDelay(83);
GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,GPIO_PIN_4);
}
microSecDelay(11);
}
// GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_4,0);

//GPIOPinTypeGPIOInput(GPIO_PORTM_BASE,GPIO_PIN_4);
//ret = GPIOPinRead(GPIO_PORTM_BASE,GPIO_PIN_4);
// sprintf(opbuffer,"Respon = %x \r\n",ret);
//(opbuffer);

}

------------------------

Regards,

Sumathi

  • Hello Sumathi,

    While I would like to try and guide you some, I have no knowledge of the DS18S20 device, so you are going to have to help me understand what part of the code is failing and why so I can advise. I am not able to review the code for accuracy of interfacing with your chosen device, but I can help address any issues you've identified that are specific to the TM4C GPIO peripheral.

    Best Regards,

    Ralph Jacobi