65 #define LTC3887_I2C_ADDRESS 0x4E 66 #define MFR_ADC_CONTROL 0xD8 67 #define ADC_MFR_TELEMETRY_STATUS 0xDA 68 #define MFR_REAL_TIME 0xFB 95 uint8_t *addresses = NULL;
99 uint64_t start_time, current_time;
100 uint64_t max_time = 2^64-1;
106 if (Serial.available())
109 if (user_command !=
'm')
110 Serial.println(user_command);
113 switch (user_command)
118 start_time = micros();
123 current_time = micros();
125 voltage0_time[
i] = current_time > start_time ? current_time - start_time : max_time - start_time + current_time;
126 start_time = current_time;
129 current_time = micros();
131 current0_time[
i] = current_time > start_time ? current_time - start_time : max_time - start_time + current_time;
132 start_time = current_time;
135 current_time = micros();
137 voltage1_time[
i] = current_time > start_time ? current_time - start_time : max_time - start_time + current_time;
138 start_time = current_time;
140 current_time = micros();
142 current1_time[
i] = current_time > start_time ? current_time - start_time : max_time - start_time + current_time;
143 start_time = current_time;
152 Serial.print(voltage0_time[i]);
153 Serial.print(F(
"us\t"));
154 Serial.print(voltage0[i]);
155 Serial.print(F(
"\t"));
156 Serial.print(current0_time[i]);
157 Serial.print(F(
"us\t"));
158 Serial.print(current0[i]);
159 Serial.print(F(
"\t"));
160 Serial.print(voltage1_time[i]);
161 Serial.print(F(
"us\t"));
162 Serial.print(voltage1[i]);
163 Serial.print(F(
"\t"));
164 Serial.print(current1_time[i]);
165 Serial.print(F(
"us\t"));
166 Serial.println(current1[i]);
171 start_time = micros();
182 Serial.println(meas[i]);
190 start_time = micros();
194 current_time = micros();
196 voltage0_time[
i] = current_time > start_time ? current_time - start_time : max_time - start_time + current_time;
197 start_time = current_time;
205 Serial.print(voltage0_time[i]);
206 Serial.print(
"us\t");
207 Serial.println(voltage0[i]);
215 start_time = micros();
219 current_time = micros();
221 voltage1_time[
i] = current_time > start_time ? current_time - start_time : max_time - start_time + current_time;
222 start_time = current_time;
230 Serial.print(voltage1_time[i]);
231 Serial.print(
"us\t");
232 Serial.println(voltage1[i]);
240 start_time = micros();
244 current_time = micros();
246 current0_time[
i] = current_time > start_time ? current_time - start_time : max_time - start_time + current_time;
247 start_time = current_time;
255 Serial.print(current0_time[i]);
256 Serial.print(
"us\t");
257 Serial.println(current0[i]);
265 start_time = micros();
269 current_time = micros();
271 current1_time[
i] = current_time > start_time ? current_time - start_time : max_time - start_time + current_time;
272 start_time = current_time;
280 Serial.print(current1_time[i]);
281 Serial.print(
"us\t");
282 Serial.println(current1[i]);
296 Serial.println(meas[i]);
311 Serial.println(meas[i]);
325 Serial.println(meas[i]);
329 addresses = smbus->
probe(0);
330 while (*addresses != 0)
332 Serial.print(F(
"ADDR 0x"));
333 Serial.println(*addresses++, HEX);
337 Serial.println(
"Incorrect Option");
350 Serial.print(F(
"\n***************************************************************\n"));
351 Serial.print(F(
"* LTC3887 Fast Telemetry Program *\n"));
352 Serial.print(F(
"* *\n"));
353 Serial.print(F(
"* This program demonstrates how program fast telemetry *\n"));
354 Serial.print(F(
"* *\n"));
355 Serial.print(F(
"* Set the baud rate to 115200 and select the newline terminator.*\n"));
356 Serial.print(F(
"* *\n"));
357 Serial.print(F(
"*****************************************************************\n"));
364 Serial.print(F(
"\n 0-Loop Fast Out\n"));
365 Serial.print(F(
" 1-Loop Fast Vin 0\n"));
366 Serial.print(F(
" 2-Loop Fast Vout 0\n"));
367 Serial.print(F(
" 3-Loop Fast Vout 1\n"));
368 Serial.print(F(
" 4-Loop Fast Iout 0\n"));
369 Serial.print(F(
" 5-Loop Fast Iout 1\n"));
370 Serial.print(F(
" 6-Loop Fast Temp Ext 0\n"));
371 Serial.print(F(
" 7-Loop Fast Temp Ext 1\n"));
372 Serial.print(F(
" 8-Loop Fast Temp Int\n"));
373 Serial.print(F(
" 9-Bus Probe\n"));
374 Serial.print(F(
"\nEnter a command:"));
unsigned char user_command
LTC SMBus Support: Implementation for a shared SMBus layer.
Header File for Linduino Libraries and Demo Code.
float readIout(uint8_t address, bool polling)
Get the measured output current.
static void print_prompt()
Prints main menu.
static uint8_t ltc3887_i2c_address
float readVout(uint8_t address, bool polling)
Get the measured output voltage.
LT_I2CBus: Routines to communicate to I2C by Wire Library.
static void setup()
Initialize Linduino.
static void print_title()
Prints the title block when program first starts.
virtual void writeByte(uint8_t address, uint8_t command, uint8_t data)=0
SMBus write byte command.
virtual uint8_t readByte(uint8_t address, uint8_t command)=0
SMBus read byte command.
void setPage(uint8_t address, uint8_t page)
Set the page.
static void loop()
Repeats Linduino loop.
float readExternalTemperature(uint8_t address, bool polling)
Get the measured external temperature.
virtual uint8_t * probe(uint8_t command)=0
SMBus bus probe.
float readInternalTemperature(uint8_t address, bool polling)
Get the measured internal temperature.
LTC SMBus Support: Implementation for a shared SMBus layer.
float readVin(uint8_t address, bool polling)
Get the input voltage.
void setVout(uint8_t address, float voltage)
Set output voltage.
#define ADC_MFR_TELEMETRY_STATUS
#define LTC3887_I2C_ADDRESS