Changed logic

This commit is contained in:
Andis Zīle
2024-04-11 23:03:33 +03:00
parent a05c53401f
commit f1edc6e15a
24 changed files with 129 additions and 175 deletions

View File

@@ -10,12 +10,12 @@ using namespace hw;
/**** Private function declarations ****/
/**** Public function definitions ****/
hw::Button::Button(board::DigitalIn* din_ch, uint8_t act_lvl, uint8_t dbnc_lim, uint8_t init_state)
hw::Button::Button(bsp::DigitalIn* din_ch, uint8_t act_lvl, uint8_t dbnc_lim, uint8_t init_state)
{
this->din_ch = din_ch;
if(act_lvl) this->act_lvl = board::DIN_HIGH;
else this->act_lvl = board::DIN_LOW;
if(act_lvl) this->act_lvl = bsp::DIN_HIGH;
else this->act_lvl = bsp::DIN_LOW;
this->dbnc_cnter = 0;
this->dbnc_lim = dbnc_lim;
@@ -32,10 +32,10 @@ hw::Button::~Button(void)
return;
}
uint8_t hw::Button::read(void)
uint8_t hw::Button::update(void)
{
// Read din level
uint8_t lvl = this->din_ch->read();
uint8_t lvl = this->din_ch->last_read;
// Increase state counter
this->time = util::sat_add(this->time, 1);
@@ -60,7 +60,7 @@ uint8_t hw::Button::read(void)
return this->state;
}
uint8_t hw::Button::force_read(void)
uint8_t hw::Button::force_update(void)
{
// Read din level
uint8_t lvl = this->din_ch->read();

View File

@@ -3,7 +3,7 @@
/**** Includes ****/
#include <stdint.h>
#include "../board/din.h"
#include "../bsp/din.h"
namespace hw {
@@ -14,12 +14,12 @@ const uint8_t BUTTON_ON = 1;
class Button
{
protected:
board::DigitalIn* din_ch;
bsp::DigitalIn* din_ch;
uint8_t act_lvl;
uint8_t dbnc_cnter;
public:
Button(board::DigitalIn* din_ch, uint8_t act_lvl, uint8_t dbnc_lim, uint8_t init_state);
Button(bsp::DigitalIn* din_ch, uint8_t act_lvl, uint8_t dbnc_lim, uint8_t init_state);
~Button(void);
uint8_t state;
@@ -27,8 +27,8 @@ class Button
uint8_t dbnc_lim;
uint8_t is_new;
uint8_t read(void);
uint8_t force_read(void);
uint8_t update(void);
uint8_t force_update(void);
};
/**** Public function declarations ****/

View File

@@ -10,9 +10,10 @@ using namespace hw;
/**** Private function declarations ****/
/**** Public function definitions ****/
hw::CVoutput::CVoutput(board::Hafbridge* hbridge)
hw::CVoutput::CVoutput(bsp::Hafbridge* hbridge, bsp::AnalogIn* supply_u)
{
this->hbridge = hbridge;
this->supply = supply_u;
this->target = 0;
this->min_out = 0;
this->hbridge->disable();
@@ -20,18 +21,18 @@ hw::CVoutput::CVoutput(board::Hafbridge* hbridge)
hw::CVoutput::~CVoutput(void)
{
this->hbridge->write((uint16_t)0);
this->hbridge->write((uint16_t)0x0000);
this->hbridge->disable();
return;
}
void hw::CVoutput::update(uint16_t supply_mv)
void hw::CVoutput::update(void)
{
// Check target
if((this->target < this->min_out)&&(this->target > 0)) this->target = this->min_out;
// Set output
this->hbridge->write(util::sat_ratio(this->target, supply_mv));
this->hbridge->write(util::sat_ratio(this->target, this->supply->last_read));
}
void hw::CVoutput::enable(void)

View File

@@ -3,7 +3,8 @@
/**** Includes ****/
#include <stdint.h>
#include "../board/halfbridge.h"
#include "../bsp/ain.h"
#include "../bsp/halfbridge.h"
namespace hw {
@@ -12,16 +13,17 @@ namespace hw {
class CVoutput
{
protected:
board::Hafbridge* hbridge;
bsp::Hafbridge* hbridge;
bsp::AnalogIn* supply;
public:
CVoutput(board::Hafbridge* hbridge);
CVoutput(bsp::Hafbridge* hbridge, bsp::AnalogIn* supply_u);
~CVoutput(void);
uint16_t target;
uint16_t min_out;
void update(uint16_t supply_mv);
void update(void);
void enable(void);
void disable(void);
uint8_t is_enabled(void);

View File

@@ -13,7 +13,7 @@ static uint8_t img_gen_dot20(uint8_t percent);
static uint8_t img_gen_bar(uint8_t percent);
/**** Public function definitions ****/
hw::DisplayLed::DisplayLed(board::DigitalOut* led0, board::DigitalOut* led1, board::DigitalOut* led2, board::DigitalOut* led3, board::DigitalOut* led4, board::DigitalOut* led5, board::PWMout* common)
hw::DisplayLed::DisplayLed(bsp::DigitalOut* led0, bsp::DigitalOut* led1, bsp::DigitalOut* led2, bsp::DigitalOut* led3, bsp::DigitalOut* led4, bsp::DigitalOut* led5, bsp::PWMout* common)
{
this->led0 = led0;
this->led1 = led1;

View File

@@ -3,8 +3,8 @@
/**** Includes ****/
#include <stdint.h>
#include "../board/dout.h"
#include "../board/pwm.h"
#include "../bsp/dout.h"
#include "../bsp/pwm.h"
namespace hw {
@@ -13,13 +13,13 @@ namespace hw {
class DisplayLed
{
protected:
board::DigitalOut* led0;
board::DigitalOut* led1;
board::DigitalOut* led2;
board::DigitalOut* led3;
board::DigitalOut* led4;
board::DigitalOut* led5;
board::PWMout* common;
bsp::DigitalOut* led0;
bsp::DigitalOut* led1;
bsp::DigitalOut* led2;
bsp::DigitalOut* led3;
bsp::DigitalOut* led4;
bsp::DigitalOut* led5;
bsp::PWMout* common;
public:
typedef enum {
@@ -28,7 +28,7 @@ class DisplayLed
LED_DSP_BAR
} style_t;
DisplayLed(board::DigitalOut* led0, board::DigitalOut* led1, board::DigitalOut* led2, board::DigitalOut* led3, board::DigitalOut* led4, board::DigitalOut* led5, board::PWMout* common);
DisplayLed(bsp::DigitalOut* led0, bsp::DigitalOut* led1, bsp::DigitalOut* led2, bsp::DigitalOut* led3, bsp::DigitalOut* led4, bsp::DigitalOut* led5, bsp::PWMout* common);
~DisplayLed(void);
void show_percent(uint8_t percent, style_t style);

View File

@@ -11,7 +11,7 @@ using namespace hw;
/**** Private function declarations ****/
/**** Public function definitions ****/
hw::Potentiometer::Potentiometer(board::AnalogIn* ain_ch, uint16_t low_deadzone, uint16_t high_deadzone)
hw::Potentiometer::Potentiometer(bsp::AnalogIn* ain_ch, uint16_t low_deadzone, uint16_t high_deadzone)
{
this->ain_ch = ain_ch;
this->low_deadzone = low_deadzone;
@@ -24,11 +24,8 @@ hw::Potentiometer::~Potentiometer(void)
return;
}
uint8_t hw::Potentiometer::read(void)
uint8_t hw::Potentiometer::update(void)
{
// Update input
this->ain_ch->read();
// Calculate percent
this->percent = util::interpolate(this->ain_ch->last_read, this->low_deadzone, this->high_deadzone, 0, 100);

View File

@@ -3,7 +3,7 @@
/**** Includes ****/
#include <stdint.h>
#include "../board/ain.h"
#include "../bsp/ain.h"
namespace hw {
@@ -12,17 +12,17 @@ namespace hw {
class Potentiometer
{
protected:
board::AnalogIn* ain_ch;
bsp::AnalogIn* ain_ch;
public:
Potentiometer(board::AnalogIn* ain_ch, uint16_t low_deadzone, uint16_t high_deadzone);
Potentiometer(bsp::AnalogIn* ain_ch, uint16_t low_deadzone, uint16_t high_deadzone);
~Potentiometer(void);
uint16_t low_deadzone;
uint16_t high_deadzone;
uint8_t percent;
uint8_t read(void);
uint8_t update(void);
};
/**** Public function declarations ****/