Jump to content
f82212057

energia serial monitor not working

Recommended Posts

Hello,

I'm try to use msp-exp430g2553et launchpad with energia

but the serial monitor doesn't work.

I'm using the example code:(One Wire DS18X20_temperature)

I found it need to change RXD TXD but I changed it display "no more addresses"

please help, thanks!

IMG_2133.thumb.JPG.429c5667158ac001ab1b8a63e1b47b5b.JPG

image.thumb.png.b50beda621c167b5bd8d0b06ea0c382d.png

IMG_2134.thumb.JPG.1c89dba2e1aca1c30b03d90f5dacd7fc.JPG

image.thumb.png.5de92b622245268047a488f14de66522.png

Share this post


Link to post
Share on other sites

"No more addresses." means it can't find the sensor. Also, it seems that you wired the sensor to 5v. Note that the MSP430 I/O's are _not_ 5v tolerant. The sensor might have put 5 volt on the line damaging the I/O. Also, if the sensor module you are using is a 5v one, it might not detect the 3.3v signal levers the MSP430 put's out.

Do you have a link to the DS18X20 module you are using?

 

Share this post


Link to post
Share on other sites
#include <OneWire.h>

// OneWire DS18S20, DS18B20, DS1822 Temperature Example
//
// http://www.pjrc.com/teensy/td_libs_OneWire.html
//
// The DallasTemperature library can do all this work for you!
// http://milesburton.com/Dallas_Temperature_Control_Library

OneWire  ds(10);  // on pin 10 (a 4.7K resistor is necessary)

void setup(void) {
  Serial.begin(9600);
}

void loop(void) {
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius, fahrenheit;
  
  if ( !ds.search(addr)) {
    Serial.println("No more addresses.");
    Serial.println();
    ds.reset_search();
    delay(250);
    return;
  }
  
  Serial.print("ROM =");
  for( i = 0; i < 8; i++) {
    Serial.write(' ');
    Serial.print(addr[i], HEX);
  }

  if (OneWire::crc8(addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
      return;
  }
  Serial.println();
 
  // the first ROM byte indicates which chip
  switch (addr[0]) {
    case 0x10:
      Serial.println("  Chip = DS18S20");  // or old DS1820
      type_s = 1;
      break;
    case 0x28:
      Serial.println("  Chip = DS18B20");
      type_s = 0;
      break;
    case 0x22:
      Serial.println("  Chip = DS1822");
      type_s = 0;
      break;
    default:
      Serial.println("Device is not a DS18x20 family device.");
      return;
  } 

  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);        // start conversion, with parasite power on at the end
  
  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.
  
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad

  Serial.print("  Data = ");
  Serial.print(present, HEX);
  Serial.print(" ");
  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");
  Serial.print(OneWire::crc8(data, 8), HEX);
  Serial.println();

  // Convert the data to actual temperature
  // because the result is a 16 bit signed integer, it should
  // be stored to an "int16_t" type, which is always 16 bits
  // even when compiled on a 32 bit processor.
  int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // "count remain" gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    // at lower res, the low bits are undefined, so let's zero them
    if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
    //// default is 12 bit resolution, 750 ms conversion time
  }
  celsius = (float)raw / 16.0;
  fahrenheit = celsius * 1.8 + 32.0;
  Serial.print("  Temperature = ");
  Serial.print(celsius);
  Serial.print(" Celsius, ");
  Serial.print(fahrenheit);
  Serial.println(" Fahrenheit");
}

This is the code I used, I correct my sensor to 3V3 voltage , but it still not working.

Another way if I use the wrong voltage would it damage my launchpad?

Share this post


Link to post
Share on other sites

I just now gave this a try with a DS18B20 and it works as expected (see output below).

If you applied 5v then pin 10 might now be damaged. I did try with 5v supply knowing I could damage the MSP430 but that worked as well. 

Try connecting it to pin 6 (P1.4). Also make sure that you change that in your Sketch.

It is also unclear to me from the pictures if you have a 4.7k pullup resistor on the data line (middle pin). If you do not, then that's a requirement for it to operate correctly.

Also, the LaunchPad should have 2 Serial ports exposed. Make sure you select the right one.

ROM = 28 FF 6C 5C 72 15 3 E3
  Chip = DS18B20
  Data = 1 7C 1 4B 46 7F FF C 10 7F  CRC=7F
  Temperature = 23.75 Celsius, 74.75 Fahrenheit
No more addresses.

Robert

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×