current monitoring dlc update lol

This commit is contained in:
n.jayaprakash
2024-05-13 13:35:20 +02:00
parent da0eefe38d
commit f173f23cff
12 changed files with 1214 additions and 1167 deletions

View File

@ -27,7 +27,7 @@ void can_sendloop() {
status_data[2] = rxstate.tsacfans;
status_data[3] = rxstate.radiatorfans;
status_data[4] = rxstate.pwmaggregat;
status_data[5] = rxstate.pwmpumps;
status_data[5] = rxstate.cooling_pump;
status_data[6] = 0xFF ^ rxstate.checksum;
ftcan_transmit(TX_STATUS_MSG_ID, status_data, 7);
@ -41,49 +41,49 @@ return;
data[1] = current_measurements_adc_val.always_on & 0xFF;
data[2] = current_measurements_adc_val.misc >> 8;
data[3] = current_measurements_adc_val.misc & 0xFF;
data[4] = current_measurements_adc_val.inverter >> 8;
data[5] = current_measurements_adc_val.inverter & 0xFF;
data[6] = current_measurements_adc_val.shutdown_circuit >> 8;
data[7] = current_measurements_adc_val.shutdown_circuit & 0xFF;
data[4] = current_measurements_adc_val.inverters >> 8;
data[5] = current_measurements_adc_val.inverters & 0xFF;
data[6] = current_measurements_adc_val.sdc >> 8;
data[7] = current_measurements_adc_val.sdc & 0xFF;
ftcan_transmit(CUR_CHANNELS_1_ID, data, 8);
break;
case 1:
data[0] = current_measurements_adc_val.fans >> 8;
data[1] = current_measurements_adc_val.fans & 0xFF;
data[2] = current_measurements_adc_val.pumps >> 8;
data[3] = current_measurements_adc_val.pumps & 0xFF;
data[0] = current_measurements_adc_val.tsac_fans >> 8;
data[1] = current_measurements_adc_val.tsac_fans & 0xFF;
data[2] = current_measurements_adc_val.cooling_pump >> 8;
data[3] = current_measurements_adc_val.cooling_pump & 0xFF;
data[4] = current_measurements_adc_val.aggregat >> 8;
data[5] = current_measurements_adc_val.aggregat & 0xFF;
data[6] = current_measurements_adc_val.steering >> 8;
data[7] = current_measurements_adc_val.steering & 0xFF;
data[6] = current_measurements_adc_val.epsc >> 8;
data[7] = current_measurements_adc_val.epsc & 0xFF;
ftcan_transmit(CUR_CHANNELS_2_ID, data, 8);
break;
case 2:
data[0] = current_measurements_adc_val.ebsvalve_1 >> 8;
data[1] = current_measurements_adc_val.ebsvalve_1 & 0xFF;
data[2] = current_measurements_adc_val.ebsvalve_2 >> 8;
data[3] = current_measurements_adc_val.ebsvalve_2 & 0xFF;
data[4] = current_measurements_adc_val.modevalve_1 >> 8;
data[5] = current_measurements_adc_val.modevalve_1 & 0xFF;
data[6] = current_measurements_adc_val.modevalve_2 >> 8;
data[7] = current_measurements_adc_val.modevalve_2 & 0xFF;
data[0] = current_measurements_adc_val.ebsvalve_a >> 8;
data[1] = current_measurements_adc_val.ebsvalve_a & 0xFF;
data[2] = current_measurements_adc_val.ebsvalve_b >> 8;
data[3] = current_measurements_adc_val.ebsvalve_b & 0xFF;
data[4] = current_measurements_adc_val.ebs_cs_valve >> 8;
data[5] = current_measurements_adc_val.ebs_cs_valve & 0xFF;
data[6] = current_measurements_adc_val.gss >> 8;
data[7] = current_measurements_adc_val.gss & 0xFF;
ftcan_transmit(CUR_CHANNELS_3_ID, data, 8);
break;
case 3:
data[0] = current_measurements_adc_val.sensorbox >> 8;
data[1] = current_measurements_adc_val.sensorbox & 0xFF;
data[2] = current_measurements_adc_val.servicebrake >> 8;
data[3] = current_measurements_adc_val.servicebrake & 0xFF;
data[0] = current_measurements_adc_val.radiator_fans >> 8;
data[1] = current_measurements_adc_val.radiator_fans & 0xFF;
data[2] = current_measurements_adc_val.acu >> 8;
data[3] = current_measurements_adc_val.acu & 0xFF;
data[4] = current_measurements_adc_val.servos >> 8;
data[5] = current_measurements_adc_val.servos & 0xFF;
data[6] = current_measurements_adc_val.shutdown_circuit >> 8;
data[7] = current_measurements_adc_val.shutdown_circuit & 0xFF;
data[6] = current_measurements_adc_val.lidar >> 8;
data[7] = current_measurements_adc_val.lidar & 0xFF;
ftcan_transmit(CUR_CHANNELS_4_ID, data, 8);
break;
@ -104,7 +104,7 @@ void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t* data) {
rxstate.radiatorfans = data[2];
rxstate.tsacfans = data[3];
rxstate.pwmaggregat = data[4];
rxstate.pwmpumps = data[5];
rxstate.cooling_pump = data[5];
rxstate.checksum = data[6];
}
}

View File

@ -10,13 +10,13 @@
volatile union adc1_channels {
struct {
uint16_t isense12;
uint16_t isense11;
uint16_t isense6;
uint16_t isense13;
uint16_t isense5;
uint16_t isense3;
uint16_t isense7;
uint16_t isense12; // acu
uint16_t isense11; // epsc
uint16_t isense6; // radiator fans
uint16_t isense13; // tsac fans
uint16_t isense5; // gss and lidar
uint16_t isense3; // sdc and always on
uint16_t isense7; // misc and inverters
} adcbank1;
uint16_t adcbuffer[7]; // array 7*16 bit
@ -25,12 +25,12 @@ volatile union adc1_channels {
// ADC's anpassen adc1 - 9, adc2 ist halt 5 , buffer anpassen und namen auch ( isense usw)
volatile union adc2_channels {
struct {
uint16_t isense2;
uint16_t isense1;
uint16_t isense10;
uint16_t isense4;
uint16_t isense2; // ebs valve a and ebs valve b
uint16_t isense1; // ebs cs valve
uint16_t isense10; // hyr aggregat
uint16_t isense4; // cooling pump and reserved
} adcbank2;
} adcbank1;
uint16_t adcbuffer[4];
@ -55,7 +55,7 @@ void currentMonitor_init(ADC_HandleTypeDef* hadc1, ADC_HandleTypeDef* hadc2, //
adc2 = hadc2;
HAL_TIM_Base_Start(trigtim);
HAL_ADC_Start_DMA(hadc1, (uint32_t*)adc_channels1.adcbuffer, 7);
HAL_ADC_Start_DMA(hadc2, (uint32_t*)adc_channels2.adcbuffer, 7); // wie adc mit dma geht , red mit jasper
HAL_ADC_Start_DMA(hadc2, (uint32_t*)adc_channels2.adcbuffer, 4); // wie adc mit dma geht , red mit jasper
}
uint8_t currentMonitor_checklimits() { return 0; }
@ -63,59 +63,64 @@ uint8_t currentMonitor_checklimits() { return 0; }
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {
if (hadc == adc2) {
if (adcbank2 == GPIO_PIN_RESET) {
current_measurements_adc_val.always_on =
adc_channels2.adcbank1.isense10 * CURR_SENSE_FACTOR_2A;
current_measurements_adc_val.modevalve_1 =
adc_channels2.adcbank1.isense5 * CURR_SENSE_FACTOR_5A;
current_measurements_adc_val.ebsvalve_1 =
adc_channels2.adcbank1.isense4 * CURR_SENSE_FACTOR_5A;
current_measurements_adc_val.ebsvalve_a =
adc_channels2.adcbank1.isense2 * CURR_SENSE_FACTOR_5A;
current_measurements_adc_val.cooling_pump =
adc_channels2.adcbank1.isense4 * CURR_SENSE_FACTOR_7_5A;
adcbank2 = GPIO_PIN_SET;
} else {
current_measurements_adc_val.shutdown_circuit =
adc_channels2.adcbank1.isense10 * CURR_SENSE_FACTOR_2A;
current_measurements_adc_val.modevalve_2 =
adc_channels2.adcbank1.isense5 * CURR_SENSE_FACTOR_5A;
current_measurements_adc_val.ebsvalve_2 =
adc_channels2.adcbank1.isense4 * CURR_SENSE_FACTOR_5A;
current_measurements_adc_val.ebsvalve_b =
adc_channels2.adcbank1.isense2 * CURR_SENSE_FACTOR_5A;
current_measurements_adc_val.reserved =
adc_channels2.adcbank1.isense4 * CURR_SENSE_FACTOR_7_5A;
adcbank2 = GPIO_PIN_RESET;
}
current_measurements_adc_val.fans =
adc_channels2.adcbank1.isense6 * CURR_SENSE_FACTOR_21A;
current_measurements_adc_val.ebs_cs_valve =
adc_channels2.adcbank1.isense1 * CURR_SENSE_FACTOR_5A;
current_measurements_adc_val.aggregat =
adc_channels2.adcbank1.isense1 * CURR_SENSE_FACTOR_21A;
current_measurements_adc_val.inverter =
adc_channels2.adcbank1.isense11 * CURR_SENSE_FACTOR_10A;
current_measurements_adc_val.steering =
adc_channels2.adcbank1.isense7 * CURR_SENSE_FACTOR_10A;
adc_channels2.adcbank1.isense10 * CURR_SENSE_FACTOR_21A;
HAL_GPIO_WritePin(DSEL_4_GPIO_Port, DSEL_4_Pin,
HAL_GPIO_WritePin(DSEL_3_GPIO_Port, DSEL_3_Pin,
adcbank2);
HAL_GPIO_WritePin(DSEL_5_GPIO_Port, DSEL_5_Pin,
adcbank2);
HAL_GPIO_WritePin(DSEL_6_GPIO_Port, DSEL_6_Pin,
HAL_GPIO_WritePin(DSEL_8_GPIO_Port, DSEL_8_Pin,
adcbank2);
}
if (hadc == adc1) {
if (adcbank1 == GPIO_PIN_RESET) {
current_measurements_adc_val.servos =
adc_channels1.adcbank1.isense8 * CURR_SENSE_FACTOR_5A;
current_measurements_adc_val.sdc=
adc_channels1.adcbank1.isense3 * CURR_SENSE_FACTOR_5A;
current_measurements_adc_val.misc=
adc_channels1.adcbank1.isense7 * CURR_SENSE_FACTOR_7_5A;
current_measurements_adc_val.gss=
adc_channels1.adcbank1.isense5 * CURR_SENSE_FACTOR_7_5A;
adcbank1 = GPIO_PIN_SET;
} else {
current_measurements_adc_val.misc =
adc_channels1.adcbank1.isense8 * CURR_SENSE_FACTOR_5A;
current_measurements_adc_val.always_on =
adc_channels1.adcbank1.isense3 * CURR_SENSE_FACTOR_5A;
current_measurements_adc_val.inverters =
adc_channels1.adcbank1.isense7 * CURR_SENSE_FACTOR_7_5A;
current_measurements_adc_val.lidar=
adc_channels1.adcbank1.isense5 * CURR_SENSE_FACTOR_7_5A;
adcbank1 = GPIO_PIN_RESET;
}
current_measurements_adc_val.servicebrake =
adc_channels1.adcbank1.isense3 * CURR_SENSE_FACTOR_2A;
current_measurements_adc_val.sensorbox =
adc_channels1.adcbank1.isense2 * CURR_SENSE_FACTOR_21A;
current_measurements_adc_val.pumps =
adc_channels1.adcbank1.isense9 * CURR_SENSE_FACTOR_10A;
current_measurements_adc_val.acu=
adc_channels1.adcbank1.isense12 * CURR_SENSE_FACTOR_31A;
current_measurements_adc_val.epsc =
adc_channels1.adcbank1.isense11 * CURR_SENSE_FACTOR_21A;
current_measurements_adc_val.tsac_fans =
adc_channels1.adcbank1.isense13 * CURR_SENSE_FACTOR_31A;
current_measurements_adc_val.radiator_fans=
adc_channels1.adcbank1.isense6 * CURR_SENSE_FACTOR_21A;
HAL_GPIO_WritePin(DSEL_3_GPIO_Port, DSEL_3_Pin,
HAL_GPIO_WritePin(DSEL_5_GPIO_Port, DSEL_5_Pin,
adcbank1);
}
HAL_GPIO_WritePin(DSEL_4_GPIO_Port, DSEL_4_Pin,
adcbank1);
HAL_GPIO_WritePin(DSEL_7_GPIO_Port, DSEL_7_Pin,
adcbank1);
}
}

View File

@ -142,7 +142,7 @@ while(1)
canmsg_received = 0;
ChannelControl_UpdateGPIOs(rxstate.iostatus);
ChannelControl_UpdatePWMs(rxstate.radiatorfans, rxstate.tsacfans, rxstate.pwmaggregat,
rxstate.pwmpumps); // gotta change , to see whats left of it and whats not
rxstate.cooling_pump); // gotta change , to see whats left of it and whats not
}
if ((HAL_GetTick() - lasttick) > 100U) {