|
@@ -43,7 +43,7 @@ void controller_SetCurrent(uint8_t slot_id, int16_t current_mA){
|
|
|
if(timeout==0){
|
|
if(timeout==0){
|
|
|
printf("Tx transmit not completed");
|
|
printf("Tx transmit not completed");
|
|
|
}
|
|
}
|
|
|
- printf("STATUS ***SetCurrent successful for slot %d with current %d mA***\n", slot_id, current_mA);
|
|
|
|
|
|
|
+ printf("STATUS ***SetCurrent successful for slot %d with current %d mA, target_address:0x%02X\n", slot_id, current_mA, target_address);
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -95,7 +95,7 @@ bool getBatteryMeasurement(uint8_t slot_id){
|
|
|
//Dynamic addressing:
|
|
//Dynamic addressing:
|
|
|
|
|
|
|
|
uint8_t target_address= TARGET_BASE_ADDRESS + ((slot_id & 0b00000100) >> 2);
|
|
uint8_t target_address= TARGET_BASE_ADDRESS + ((slot_id & 0b00000100) >> 2);
|
|
|
- //printf("Target Address 0x%02X \n", target_address);
|
|
|
|
|
|
|
+ printf("Target Address 0x%02X \n", target_address);
|
|
|
|
|
|
|
|
//Enable the Interrupt:
|
|
//Enable the Interrupt:
|
|
|
DL_I2C_enableInterrupt(I2C_1_INST, DL_I2C_INTERRUPT_CONTROLLER_TXFIFO_TRIGGER);
|
|
DL_I2C_enableInterrupt(I2C_1_INST, DL_I2C_INTERRUPT_CONTROLLER_TXFIFO_TRIGGER);
|
|
@@ -151,6 +151,10 @@ bool getBatteryMeasurement(uint8_t slot_id){
|
|
|
//Make RX Buffer ready to receive the data
|
|
//Make RX Buffer ready to receive the data
|
|
|
//DL_I2C_flushControllerRXFIFO(I2C_1_INST);
|
|
//DL_I2C_flushControllerRXFIFO(I2C_1_INST);
|
|
|
|
|
|
|
|
|
|
+ // Clear any garbage
|
|
|
|
|
+ memset(rxPacket.rxBuffer, 0, sizeof(rxPacket.rxBuffer));
|
|
|
|
|
+
|
|
|
|
|
+ DL_I2C_enableInterrupt(I2C_1_INST, DL_I2C_INTERRUPT_CONTROLLER_RXFIFO_TRIGGER);
|
|
|
|
|
|
|
|
while (DL_I2C_getControllerStatus(I2C_1_INST) & DL_I2C_CONTROLLER_STATUS_BUSY)
|
|
while (DL_I2C_getControllerStatus(I2C_1_INST) & DL_I2C_CONTROLLER_STATUS_BUSY)
|
|
|
;
|
|
;
|
|
@@ -168,13 +172,13 @@ bool getBatteryMeasurement(uint8_t slot_id){
|
|
|
printf("Rx transmit not completed");
|
|
printf("Rx transmit not completed");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- DL_I2C_enableInterrupt(I2C_1_INST, DL_I2C_INTERRUPT_CONTROLLER_RXFIFO_TRIGGER);
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
measurement.voltage= rxPacket.rxBuffer[0] | (rxPacket.rxBuffer[1] << 8);
|
|
measurement.voltage= rxPacket.rxBuffer[0] | (rxPacket.rxBuffer[1] << 8);
|
|
|
measurement.current= rxPacket.rxBuffer[2]|(rxPacket.rxBuffer[3] << 8);
|
|
measurement.current= rxPacket.rxBuffer[2]|(rxPacket.rxBuffer[3] << 8);
|
|
|
measurement.temperature = rxPacket.rxBuffer[4] | (rxPacket.rxBuffer[5] << 8);
|
|
measurement.temperature = rxPacket.rxBuffer[4] | (rxPacket.rxBuffer[5] << 8);
|
|
|
measurement.slot_state = (SlotState)(rxPacket.rxBuffer[6]);
|
|
measurement.slot_state = (SlotState)(rxPacket.rxBuffer[6]);
|
|
|
- DL_I2C_flushControllerRXFIFO(I2C_1_INST);
|
|
|
|
|
|
|
+ //DL_I2C_flushControllerRXFIFO(I2C_1_INST);
|
|
|
//Storing the measurements in Battery structure:
|
|
//Storing the measurements in Battery structure:
|
|
|
battery_data[slot_id].battery_measurement= measurement;
|
|
battery_data[slot_id].battery_measurement= measurement;
|
|
|
|
|
|