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:
parent
814cf58679
commit
cbfb333b18
@ -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.
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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:
|
||||||
};
|
};
|
||||||
|
@ -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)
|
||||||
|
@ -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);
|
||||||
|
@ -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");
|
||||||
|
@ -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.
|
||||||
|
@ -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:
|
||||||
|
@ -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[])
|
||||||
{
|
{
|
||||||
|
@ -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:
|
||||||
|
@ -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)
|
||||||
|
@ -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:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user