88 #define POLL_DELAY 2000 105 uint32_t speed = 500000;
107 Serial.begin(115200);
109 if (
doprint) Serial.println(F(
"Detecting Addresses..."));
112 while (*device != NULL)
114 if (
doprint) Serial.print(F(
" Device: "));
115 if (
doprint) Serial.print((*device)->getType());
116 if (
doprint) Serial.print(F(
" Address: "));
117 if (
doprint) Serial.print((*device)->getAddress(), HEX);
119 if (
doprint) Serial.print(F(
", Speed: "));
120 if (
doprint) Serial.print((*device)->getMaxSpeed(), DEC);
124 pmbusNoPec->
enablePec((*device)->getAddress());
125 (*device)->changePMBus(pmbusPec);
128 if (speed > (*device)->getMaxSpeed())
129 speed = (*device)->getMaxSpeed();
134 rail = (rails = detector->
getRails());
135 while (*rail != NULL)
137 if (
doprint) Serial.print(F(
" Rail: "));
138 if (
doprint) Serial.print(F(
" Address: "));
139 if (
doprint) Serial.print((*rail)->getAddress(), HEX);
140 if (
doprint) Serial.print(F(
" Pages: "));
141 if (
doprint) Serial.print((*rail)->getNoPages(), DEC);
147 if (
doprint) Serial.print(
"Changing bus speed to ");
148 if (
doprint) Serial.println(speed, DEC);
152 while ((*device) != 0)
160 Serial.println(F(
"Id,Time(ms),Address,NoPages,Multiphase,Type,Value"));
173 Serial.print(F(
","));
175 Serial.print(F(
",0x"));
177 Serial.print(F(
",0x"));
179 Serial.print(F(
","));
181 Serial.print(F(
","));
183 else Serial.print(
"0");
184 Serial.print(F(
","));
196 while ((*rail) != NULL)
202 Serial.print(F(
"SWORD,0x"));
203 Serial.println(status, HEX);
206 if ((*rail)->hasCapability(
HAS_VIN))
208 f = (*rail)->readVin(
true);
210 Serial.print(F(
"VIN,"));
211 Serial.println(f, DEC);
214 if ((*rail)->hasCapability(
HAS_VOUT))
216 f = (*rail)->readVout(
true);
218 Serial.print(F(
"VOUT,"));
219 Serial.println(f, DEC);
222 if ((*rail)->hasCapability(
HAS_IIN))
224 f = (*rail)->readIin(
true);
226 Serial.print(F(
"IIN,"));
227 Serial.println(f, DEC);
230 if ((*rail)->hasCapability(
HAS_IOUT))
232 f = (*rail)->readIout(
true);
234 Serial.print(F(
"Iout,"));
235 Serial.println(f, DEC);
238 if ((*rail)->hasCapability(
HAS_PIN))
240 f = (*rail)->readPin(
true);
242 Serial.print(F(
"PIN,"));
243 Serial.println(f, DEC);
246 if ((*rail)->hasCapability(
HAS_POUT))
248 f = (*rail)->readPout(
true);
250 Serial.print(F(
"POUT,"));
251 Serial.println(f, DEC);
254 if ((*rail)->hasCapability(
HAS_TEMP))
256 f = (*rail)->readInternalTemperature(
true);
258 Serial.print(F(
"TEMP,"));
259 Serial.println(f, DEC);
262 f = (*rail)->readEfficiency(
true);
266 Serial.print(F(
"EFF,"));
267 Serial.println(f, DEC);
270 if ((*rail)->isMultiphase())
272 f = (*rail)->readPhaseBalance(
true);
274 Serial.print(F(
"IBAL,"));
275 Serial.println(f, DEC);
static LT_PMBusDevice ** device
LT_PMBusRail ** getRails()
uint16_t readMfrSpecialId()
Read the special of a polyphase rail.
LTC SMBus Support: API for a shared SMBus layer.
static LT_SMBusPec * smbusPec
uint8_t getAddress()
Get ther rail address.
virtual void setSpeed(uint32_t speed)
Set the speed. If > 100000, enable clock stretching.
LTC SMBus Support: Implementation for a shared SMBus layer.
void changePMBus(LT_PMBus *pmbus)
Change the pmbus.
LTC SMBus Support: Implementation for a shared SMBus layer.
String status(void)
Returns a descriptive string based on status of pins.
Header File for Linduino Libraries and Demo Code.
static LT_PMBusDetect * detector
static void loop()
Repeats Linduino loop.
void enablePec(uint8_t address)
Enable pec for all transactions.
static LT_PMBusRail ** rails
static LT_PMBusDevice ** devices
static void print_info(LT_PMBusRail *rail)
Print basic info.
static LT_PMBus * pmbusNoPec
LTC SMBus Support: Implementation for a LTC3880 Fault Log.
LT_PMBusDevice ** getDevices()
static LT_PMBus * pmbusPec
LT_I2CBus: Routines to communicate to I2C by Wire Library.
void changeSpeed(uint32_t speed)
Change the speed of the bus.
LTC PMBus Support: Implementation for a LTC Fault Log.
uint8_t getNoPages()
Get the number of pages in the rail.
static void setup()
Initialize Linduino.
uint16_t readStatusWord()
Read the status word of a polyphase rail.
bool isMultiphase()
Ask if the rail is multiphase.
static LT_SMBusNoPec * smbusNoPec
LTC SMBus Support: Implementation for a shared SMBus layer.
virtual LT_I2CBus * i2cbus(void)=0
Library Header File for LT_PMBusDevice.
void detect()
Detect devices on bus.
LTC PMBus Support: Math conversion routines.
PMBusRail communication. For Multiphase Rails.
static LT_PMBusRail ** rail
LTC SMBus Support: Implementation for a shared SMBus layer.