#include <Userinterface.h>
#include <Arduino.h>
#include <stdint.h>
//#include "Linduino.h"
#include "LT_SPI.h"
#include "LTC68042.h"
#include <SPI.h>
const uint8_t TOTAL_IC = 1;//!<number of ICs in the isoSPI network LTC6804-2 ICs must be addressed in ascending order starting at 0.
uint16_t cell_codes[TOTAL_IC][12];
uint16_t aux_codes[TOTAL_IC][6];
uint8_t tx_cfg[TOTAL_IC][6];
uint8_t rx_cfg[TOTAL_IC][8];
void setup()
{
Serial.begin(9600);
LTC6804_initialize(); //Initialize LTC6804 hardware
init_cfg();
}
void loop()
{
wakeup_sleep();
LTC6804_wrcfg(TOTAL_IC,tx_cfg);
print_config();
wakeup_sleep();
int8_t error = LTC6804_rdcfg(TOTAL_IC,rx_cfg);
if (error == -1)
{
Serial.println("A PEC error was detected in the received data");
}
print_rxconfig();
wakeup_sleep();
LTC6804_adcv();
delay(3);
Serial.println("cell conversion completed");
Serial.println();
wakeup_sleep();
error = LTC6804_rdcv(0, TOTAL_IC,cell_codes); // Set to read back all cell voltage registers
if (error == -1)
{
Serial.println("A PEC error was detected in the received data");
}
print_cells();
delay(1000);
}
void init_cfg()
{
for(int i = 0; i<TOTAL_IC;i++)
{
tx_cfg[0] = 0xFE;
tx_cfg[1] = 0xFE;
tx_cfg[2] = 0xFE;
tx_cfg[3] = 0xFE ;
tx_cfg[4] = 0xFE ;
tx_cfg[5] = 0xFE ;
}
}
void print_menu()
{
Serial.println("Please enter LTC6804 Command");
Serial.println("Write Configuration: 1");
Serial.println("Read Configuration: 2");
Serial.println("Start Cell Voltage Conversion: 3");
Serial.println("Read Cell Voltages: 4");
Serial.println("Start Aux Voltage Conversion: 5");
Serial.println("Read Aux Voltages: 6");
Serial.println("loop cell voltages: 7");
Serial.println("Please enter command: ");
Serial.println();
}
void print_cells()
{
for (int current_ic = 0 ; current_ic < TOTAL_IC; current_ic++)
{
Serial.print(" IC ");
Serial.print(current_ic+1,DEC);
for(int i=0; i<12; i++)
{
Serial.print(" C");
Serial.print(i+1,DEC);
Serial.print(":");
Serial.print(cell_codes[current_ic]*0.0001,4);
Serial.print(",");
}
Serial.println();
}
Serial.println();
}
void print_aux()
{
for(int current_ic =0 ; current_ic < TOTAL_IC; current_ic++)
{
Serial.print(" IC ");
Serial.print(current_ic+1,DEC);
for(int i=0; i < 5; i++)
{
Serial.print(" GPIO-");
Serial.print(i+1,DEC);
Serial.print(":");
Serial.print(aux_codes[current_ic]*0.0001,4);
Serial.print(",");
}
Serial.print(" Vref2");
Serial.print(":");
Serial.print(aux_codes[current_ic][5]*0.0001,4);
Serial.println();
}
Serial.println();
}
void print_config()
{
int cfg_pec;
Serial.println("Written Configuration: ");
for (int current_ic = 0; current_ic<TOTAL_IC; current_ic++)
{
Serial.print(" IC ");
Serial.print(current_ic+1,DEC);
Serial.print(": ");
Serial.print("0x");
serial_print_hex(tx_cfg[current_ic][0]);
Serial.print(", 0x");
serial_print_hex(tx_cfg[current_ic][1]);
Serial.print(", 0x");
serial_print_hex(tx_cfg[current_ic][2]);
Serial.print(", 0x");
serial_print_hex(tx_cfg[current_ic][3]);
Serial.print(", 0x");
serial_print_hex(tx_cfg[current_ic][4]);
Serial.print(", 0x");
serial_print_hex(tx_cfg[current_ic][5]);
Serial.print(", Calculated PEC: 0x");
cfg_pec = pec15_calc(6,&tx_cfg[current_ic][0]);
serial_print_hex((uint8_t)(cfg_pec>>8));
Serial.print(", 0x");
serial_print_hex((uint8_t)(cfg_pec));
Serial.println();
}
Serial.println();
}
void print_rxconfig()
{
Serial.println("Received Configuration ");
for (int current_ic=0; current_ic<TOTAL_IC; current_ic++)
{
Serial.print(" IC ");
Serial.print(current_ic+1,DEC);
Serial.print(": 0x");
serial_print_hex(rx_cfg[current_ic][0]);
Serial.print(", 0x");
serial_print_hex(rx_cfg[current_ic][1]);
Serial.print(", 0x");
serial_print_hex(rx_cfg[current_ic][2]);
Serial.print(", 0x");
serial_print_hex(rx_cfg[current_ic][3]);
Serial.print(", 0x");
serial_print_hex(rx_cfg[current_ic][4]);
Serial.print(", 0x");
serial_print_hex(rx_cfg[current_ic][5]);
Serial.print(", Received PEC: 0x");
serial_print_hex(rx_cfg[current_ic][6]);
Serial.print(", 0x");
serial_print_hex(rx_cfg[current_ic][7]);
Serial.println();
}
Serial.println();
}
void serial_print_hex(uint8_t data)
{
if (data< 16)
{
Serial.print("0");
Serial.print((byte)data,HEX);
}
else
Serial.print((byte)data,HEX);
}
this is code which i am using ...do you have schematic of ltc 6804