Ignore:
Timestamp:
Sep 8, 2025, 6:57:30 PM (7 weeks ago)
Author:
f.jahn
Message:
  • Bug in ADC Kalibrierung (STM32 ADC Strom) behoben
  • DMA Buffer für ADC 1 und ADC wird vor Überschreibung während bearbeitung geschützt, indem Datenübertragung nur einmalig erfolgt und erst nach Auswertung wieder gestartet wird
  • RS485Modbus: Timeout Zeit wird für Baudraten >19200 korrekt berechnet
  • Hardware ID geändert
  • Separates Register für "Batterie Empty detection mode" auf Adresse 92 angelegt
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/fw_g473rct/SES/src/fast_current.c

    r25 r26  
    3232
    3333//      --- GLOBALE FUNKTIONEN - bitte in Header dokumentieren------------------------
     34void CurrentOffsetCal(uint32_t newVal)
     35{
     36  sys_data.s.parameter.batteryCurrentOffsetFast = newVal-FAST_CURRENT_ADC_OFFSET;
     37}
    3438
     39void CurrentGainCal(uint32_t newVal)
     40{
     41  double correction;
     42  double valWithoutGainCorrection;
    3543
     44  valWithoutGainCorrection = ((int32_t) newVal - FAST_CURRENT_ADC_OFFSET - sys_data.s.parameter.batteryCurrentOffsetFast) * VREF ;
     45  valWithoutGainCorrection = valWithoutGainCorrection / FAST_CURRENT_ADC_RESOLUTION;
     46  valWithoutGainCorrection = valWithoutGainCorrection / FAST_CURRENT_I_SENSE_GAIN ;
     47  valWithoutGainCorrection = valWithoutGainCorrection / FAST_CURRENT_SHUNT_RESISTOR ;
     48
     49  correction = (double)  sys_data.s.parameter.batteryCurrentGainRefCurrent / valWithoutGainCorrection;
     50  sys_data.s.parameter.batteryCurrentGainCorrectionFaktorFast = correction * 1000000;
     51
     52}
    3653void FAST_CURRENT_Exec(uint32_t newVal )
    3754{
     
    3956  //Umrechung auf Strom
    4057  double temp_current;
    41   temp_current = ((int32_t) newVal - FAST_CURRENT_ADC_OFFSET) * VREF ;
     58  temp_current = ((int32_t) newVal - FAST_CURRENT_ADC_OFFSET - sys_data.s.parameter.batteryCurrentOffsetFast) * VREF ;
    4259  temp_current = temp_current / FAST_CURRENT_ADC_RESOLUTION;
    4360  temp_current = temp_current / FAST_CURRENT_I_SENSE_GAIN ;
    4461  temp_current = temp_current / FAST_CURRENT_SHUNT_RESISTOR ;
    45   sys_data.s.values.fast_current = temp_current * (sys_data.s.parameter.batteryCurrentGainCorrectionFaktor / 1000000.0);
     62  sys_data.s.values.fast_current = temp_current * (sys_data.s.parameter.batteryCurrentGainCorrectionFaktorFast / 1000000.0);
    4663 
    4764}
Note: See TracChangeset for help on using the changeset viewer.