Alle Klassen haben jetzt eine Init FUnktion und der Konstruktor macht maximal die Initialisierung, damit die Variablen Global angelegt werden können, aber Init erst in der Main ausgeführt wird.

This commit is contained in:
Carsten Keller 2024-06-09 17:58:19 +02:00
parent 814cf58679
commit cbfb333b18
Signed by: carsten
GPG Key ID: DF06343A3A9B8868
13 changed files with 30 additions and 44 deletions

View File

@ -64,7 +64,7 @@ extern "C" void DMA1_Channel1_IRQHandler(void) /* DMA1 Channel 1
namespace ElektronischeLast namespace ElektronischeLast
{ {
iADC::iADC(float voltage_gain, float current_gain) void iADC::init(float voltage_gain, float current_gain)
{ {
this->voltage_gain = voltage_gain; this->voltage_gain = voltage_gain;
this->current_gain = current_gain; this->current_gain = current_gain;
@ -212,10 +212,6 @@ namespace ElektronischeLast
NVIC_SetPriority(DMA1_Channel1_IRQn, 0); NVIC_SetPriority(DMA1_Channel1_IRQn, 0);
NVIC_EnableIRQ(DMA1_Channel1_IRQn); NVIC_EnableIRQ(DMA1_Channel1_IRQn);
} }
iADC::~iADC(void)
{
}
/** /**
* @details Die Auflösung beträgt 0,8mV pro Bit. * @details Die Auflösung beträgt 0,8mV pro Bit.

View File

@ -15,8 +15,7 @@ namespace ElektronischeLast
class iADC class iADC
{ {
public: public:
iADC(float voltage_gain, float current_gain); void init(float voltage_gain, float current_gain);
~iADC(void);
std::uint32_t get_current(void); std::uint32_t get_current(void);
std::uint32_t get_temperature(void); std::uint32_t get_temperature(void);
std::uint32_t get_voltage(void); std::uint32_t get_voltage(void);

View File

@ -11,7 +11,7 @@
namespace ElektronischeLast namespace ElektronischeLast
{ {
iDAC::iDAC() void iDAC::init()
{ {
/**DAC1 GPIO Configuration /**DAC1 GPIO Configuration
PA4 ------> DAC1_OUT1 PA4 ------> DAC1_OUT1
@ -48,11 +48,6 @@ namespace ElektronischeLast
LL_DAC_Enable(DAC1, LL_DAC_CHANNEL_2); LL_DAC_Enable(DAC1, LL_DAC_CHANNEL_2);
} }
iDAC::~iDAC()
{
}
void iDAC::write(DAC_CHANNEL channel, uint32_t data) void iDAC::write(DAC_CHANNEL channel, uint32_t data)
{ {
LL_DAC_ConvertData12RightAligned(DAC, /*(channel == CHANNEL_1) ?*/ LL_DAC_CHANNEL_1 /*: LL_DAC_CHANNEL_2*/, data); LL_DAC_ConvertData12RightAligned(DAC, /*(channel == CHANNEL_1) ?*/ LL_DAC_CHANNEL_1 /*: LL_DAC_CHANNEL_2*/, data);

View File

@ -18,8 +18,7 @@ namespace ElektronischeLast
CHANNEL_1, CHANNEL_1,
CHANNEL_2, CHANNEL_2,
} DAC_CHANNEL; } DAC_CHANNEL;
iDAC(); void init(void);
~iDAC();
void write(DAC_CHANNEL channel, uint32_t data); void write(DAC_CHANNEL channel, uint32_t data);
private: private:
}; };

View File

@ -17,7 +17,7 @@
namespace ElektronischeLast namespace ElektronischeLast
{ {
Display::Display(void) void Display::init(void)
{ {
LL_GPIO_InitTypeDef init = LL_GPIO_InitTypeDef init =
{ {
@ -37,11 +37,6 @@ namespace ElektronischeLast
this->start_timer(15UL); // 15ms Startup Delay this->start_timer(15UL); // 15ms Startup Delay
} }
Display::~Display(void)
{
}
void Display::run(void) void Display::run(void)
{ {
switch (this->current_state) switch (this->current_state)

View File

@ -88,8 +88,7 @@ namespace ElektronischeLast
} State_t; } State_t;
Display(void); void init(void);
~Display(void);
void run(void); void run(void);
void set_backlight(bool on); void set_backlight(bool on);
void set_cursor(Line_t line, std::uint32_t position); void set_cursor(Line_t line, std::uint32_t position);

View File

@ -49,6 +49,12 @@ static CLI_Command_t commands[] =
{ "reboot", "System neu starten", reboot }, { "reboot", "System neu starten", reboot },
}; };
static LED led = LED(500U);
static Display lcd = Display();
static FanControl fan = FanControl();
static iI2C eeprom = iI2C(0xA0U);
static iDAC dac = iDAC();
static iADC adc = iADC();;
static std::uint32_t i_soll = 0U; static std::uint32_t i_soll = 0U;
static PIDController pid = static PIDController pid =
{ {
@ -74,10 +80,10 @@ int main (void)
serial_init(); serial_init();
printf("\r\nElektronische Last\r\n"); printf("\r\nElektronische Last\r\n");
CLI_Init(commands, sizeof(commands)/sizeof(commands[0])); CLI_Init(commands, sizeof(commands)/sizeof(commands[0]));
LED led = LED(500U); led.init();
Display lcd = Display(); lcd.init();
FanControl fan = FanControl(); fan.init();
iI2C eeprom = iI2C(0xA0U); eeprom.init();
float voltage_gain = NAN; float voltage_gain = NAN;
float current_gain = NAN; float current_gain = NAN;
@ -94,8 +100,8 @@ int main (void)
current_gain = 3.685331f; current_gain = 3.685331f;
} }
iDAC dac = iDAC(); dac.init();
iADC adc = iADC(voltage_gain, current_gain); adc.init(voltage_gain, current_gain);
std::uint32_t last_tick = systick; std::uint32_t last_tick = systick;
printf("- Initialisierung erfolgreich\r\n"); printf("- Initialisierung erfolgreich\r\n");

View File

@ -37,7 +37,7 @@ namespace ElektronischeLast
{ 80U, DUTY_TO_TIM_VALUE(100U) } { 80U, DUTY_TO_TIM_VALUE(100U) }
}; };
FanControl::FanControl(void) void FanControl::init(void)
{ {
/* TIM3 PWM-Output /* TIM3 PWM-Output
* 25kHz (Vorgabe Intel). Geschwindigkeit wird über Tastverhältnis geregelt. * 25kHz (Vorgabe Intel). Geschwindigkeit wird über Tastverhältnis geregelt.

View File

@ -17,8 +17,7 @@ namespace ElektronischeLast
class FanControl class FanControl
{ {
public: public:
FanControl(void); void init(void);
~FanControl(void);
void run(std::uint32_t temp); void run(std::uint32_t temp);
std::uint32_t get_speed(void); std::uint32_t get_speed(void);
private: private:

View File

@ -16,6 +16,9 @@ namespace ElektronischeLast
{ {
this->device_address = device_address; this->device_address = device_address;
}
void iI2C::init(void)
{
LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA); LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA);
/**I2C2 GPIO Configuration /**I2C2 GPIO Configuration
PA11 [PA9] ------> I2C2_SCL PA11 [PA9] ------> I2C2_SCL
@ -56,10 +59,6 @@ namespace ElektronischeLast
LL_I2C_SetMasterAddressingMode(I2C2, LL_I2C_ADDRESSING_MODE_7BIT); LL_I2C_SetMasterAddressingMode(I2C2, LL_I2C_ADDRESSING_MODE_7BIT);
LL_I2C_Enable(I2C2); LL_I2C_Enable(I2C2);
}
iI2C::~iI2C(void)
{
} }
bool iI2C::read(std::uint32_t address, std::uint32_t length, std::uint8_t buffer[]) bool iI2C::read(std::uint32_t address, std::uint32_t length, std::uint8_t buffer[])
{ {

View File

@ -16,7 +16,7 @@ namespace ElektronischeLast
{ {
public: public:
iI2C(std::uint8_t device_address); iI2C(std::uint8_t device_address);
~iI2C(void); void init(void);
bool read(std::uint32_t address, std::uint32_t length, std::uint8_t buffer[]); bool read(std::uint32_t address, std::uint32_t length, std::uint8_t buffer[]);
bool write(std::uint32_t address, std::uint32_t length, std::uint8_t buffer[]); bool write(std::uint32_t address, std::uint32_t length, std::uint8_t buffer[]);
private: private:

View File

@ -12,6 +12,11 @@
namespace ElektronischeLast namespace ElektronischeLast
{ {
LED::LED(std::uint32_t interval) LED::LED(std::uint32_t interval)
{
this->interval = interval;
}
void LED::init(void)
{ {
LL_GPIO_InitTypeDef GPIO_InitStruct = { LL_GPIO_InitTypeDef GPIO_InitStruct = {
.Pin = LL_GPIO_PIN_10, .Pin = LL_GPIO_PIN_10,
@ -25,12 +30,6 @@ namespace ElektronischeLast
LL_GPIO_Init(GPIOA, &GPIO_InitStruct); LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
this->last_toggle = systick; this->last_toggle = systick;
this->interval = interval;
}
LED::~LED()
{
} }
void LED::blink(void) void LED::blink(void)

View File

@ -16,7 +16,7 @@ namespace ElektronischeLast
{ {
public: public:
LED(std::uint32_t interval); LED(std::uint32_t interval);
~LED(); void init(void);
void blink(void); void blink(void);
void toggle(void); void toggle(void);
private: private: