Pages: [1]   Go Down
Author Topic: [SLOVED] Arduino Mega - SMBus with a LTC1427 help  (Read 290 times)
0 Members and 1 Guest are viewing this topic.
Northern Ireland
Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello Folks

I'm very new to the whole firmware/software world (I'm hardware electronics engineer) and I'm trying to get a slave device called LTC1427 which is a 10bit current DAC which will be used to vagary the voltage output of a buck boost. This DAC can only receive.

Below is the code that I started to write and got some data coming but I believe the Wire.write commands aren't working correctly. I suspect I'm doing something very silly.

When I say the wire.write commands aren't working correctly what i mean is no matter what hex value I put into the variables the data coming out doesn't change. I'm using an oscilloscope to view that data and clock.

The Wire.beginTransmission does work as I can change these variables and see the difference on the scope.

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <Wire.h>


void setup()                    // run once, when the sketch starts
{
  Wire.begin();
  Serial.begin(115200);        
  
  Serial.println("All work and no play make Stephen a dull boy!");  // prints hello with ending line break
  LTC1427_TX();
}

void LTC1427_TX()
{
  byte ADD     = 0x2D;
  byte value1  = 0x10;
  byte value2  = 0xAA;
  
  Wire.beginTransmission(ADD);
  Wire.write(0,1); //WR
  Wire.write(0,1); //ACK
  Wire.write(value1);//Command
  Wire.write(0,1); //ACK
  Wire.write(value2);//Data TX
  Wire.write(0,1); //ACK
  Wire.endTransmission();
}

void loop()                       // run over and over again
{
                                  // do nothing!
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////

* LTC1427.pdf (206.12 KB - downloaded 12 times.)
« Last Edit: August 24, 2012, 06:35:56 am by stephenlinton » Logged

Northern Ireland
Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Solved my problem, Turns out I was been silly with the Oscilloscope. Below is the code for a saw tooth wave.

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <Wire.h>

void setup()
{
  Wire.begin();
  Serial.begin(115200);
}

byte val = 0;
byte valHi = 0;

void loop()
{
  Wire.beginTransmission(0x2D); //Address when AD0 & AD1 are low
                             
  Wire.write(valHi);           
  Wire.write(val);             
  Wire.endTransmission();     

  val++;       
  if(val == 255)
  {
    val = 0;
valHi++;   
  }
  if(valHi==4)
  {
    valHi=0;
  }
  Serial.print(valHi);
  Serial.print(" ");
  Serial.print(val);
  Serial.println();
  delay(5);
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Logged

Pages: [1]   Go Up
Jump to: