![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Has base BMU code but sends dummy temperature and voltage readings to test CAN
Dependencies: CUER_CAN DS1820 LTC2943 LTC6804 mbed
Fork of BMS_BMUCore_Max by
Diff: main.cpp
- Revision:
- 0:0a5f554d2a16
- Child:
- 1:51477fe4851b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Dec 22 15:11:29 2016 +0000 @@ -0,0 +1,120 @@ +/* +Should add a sleep in here +Should also consider the different errors that need to be sent +*/ +#include "mbed.h" +#include "CANParserBMU.h" +#include "Data_Types_BMU.h" +#include "CAN_Data.h" +#include "CAN_IDs.h" + +using namespace CAN_IDs; + +// Function definitions +void transmit_data(); +void read_EEPROM_startup(); +void write_EEPROM(); +void take_measurements(); +void read_temperature_sensors(); +void update_SOC(); +void read_sensors(); +void init(); + +CAN can(CAN_READ_PIN, CAN_WRITE_PIN); //Create a CAN object to handle CAN comms + +int main() +{ + int c = 0; + init(); + read_EEPROM_startup(); + // Read from the eeprom at startup to fill in the values + while (true) + { + // Reading + read_sensors(); + // Dont want to read the temperature sensors during each iteration of the loop + if (c == 0) + { + read_temperature_sensors(); + } + else if(c >= 4) + { + c = -1; + } + c++; + + // Check the data + take_measurements(); + + // Update the SOC + update_SOC(); + + //Store data in the eeprom + write_EEPROM(); + + // CAN bus transactions + transmit_data(); + + // Conserve power - enter a low powered mode + } +} + +void transmit_data() +{ + /* + Place all of the collected data onto the CAN bus + */ +} + +void read_EEPROM_startup() +{ + // Read from location 0 on startup + +} + +void write_EEPROM() +{ +/* + First must read from location 0 to get a pointer to a location + Then write the data into the eeprom, using a new location every time + Must check that the data you are writing isn't outside the boaunds of the storage space + +*/ +} + +void take_measurements() +{ + +/*Data to check: + *No data from the sensore + *Temperature bounds + *Cell overvoltage + *Current overvoltage +Have an array of error flags +*/ +} + +void read_temperature_sensors() +{ + //this is a separate function since reading the temperature will be less frequent +} + +void update_SOC() +{ + // Update the SOC value +} + +void read_sensors() +{ +// Like the sound of passing the data in as an array so call by reference could use pointers or a while loop to copy data over?? +// Read every sensor apart from the temperature sensors +// Read BMS_BCUCORE_balancing +// Read SOC +} + + +void init() +{ + // Is this required?? +} +