works so far
This commit is contained in:
parent
55dcc6ebb0
commit
337eaa98e7
123
src/hmi.cpp
123
src/hmi.cpp
@ -17,48 +17,48 @@
|
|||||||
|
|
||||||
class SwitchPort2 {
|
class SwitchPort2 {
|
||||||
public:
|
public:
|
||||||
SwitchPort2(uint16_t bit) : m_bit(bit), m_state(0), m_cnt(0) {
|
SwitchPort2(uint16_t bit) : m_bit(bit), m_state(0), m_cnt(0) {
|
||||||
P2REN |= m_bit;
|
P2REN |= m_bit;
|
||||||
};
|
};
|
||||||
bool get() {
|
bool get() {
|
||||||
bool result = false;
|
bool result = false;
|
||||||
switch (m_state) {
|
switch (m_state) {
|
||||||
case 0:
|
case 0:
|
||||||
if (P2IN & m_bit) {
|
if (P2IN & m_bit) {
|
||||||
m_cnt = 0;
|
m_cnt = 0;
|
||||||
} else {
|
} else {
|
||||||
m_cnt++;
|
m_cnt++;
|
||||||
}
|
}
|
||||||
if (m_cnt > 100) {
|
if (m_cnt > 100) {
|
||||||
m_state = 1;
|
m_state = 1;
|
||||||
m_cnt = 0;
|
m_cnt = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
result = true;
|
result = true;
|
||||||
m_state = 2;
|
m_state = 2;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (P2IN & m_bit) {
|
if (P2IN & m_bit) {
|
||||||
m_cnt++;
|
m_cnt++;
|
||||||
} else {
|
} else {
|
||||||
m_cnt = 0;
|
m_cnt = 0;
|
||||||
}
|
}
|
||||||
if (m_cnt > 20) {
|
if (m_cnt > 20) {
|
||||||
m_state = 0;
|
m_state = 0;
|
||||||
m_cnt = 0;
|
m_cnt = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
m_state = 0;
|
m_state = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
private:
|
private:
|
||||||
uint16_t m_bit;
|
uint16_t m_bit;
|
||||||
uint8_t m_state;
|
uint8_t m_state;
|
||||||
uint16_t m_cnt;
|
uint16_t m_cnt;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -67,21 +67,36 @@ SwitchPort2 switch2 = SwitchPort2(BIT1);
|
|||||||
SwitchPort2 switch3 = SwitchPort2(BIT2);
|
SwitchPort2 switch3 = SwitchPort2(BIT2);
|
||||||
|
|
||||||
void hmiInit() {
|
void hmiInit() {
|
||||||
spiInit();
|
spiInit();
|
||||||
dispInit();
|
dispInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void hmiExec() {
|
void hmiExec() {
|
||||||
if (switch1.get()) {
|
static float savedVoltage = 0.0;
|
||||||
setUDes(0);
|
static bool enabled = false;
|
||||||
}
|
if (switch1.get()) {
|
||||||
if (switch2.get()) {
|
if (enabled) {
|
||||||
setUDes(getUDes() - 1.0);
|
enabled = false;
|
||||||
}
|
setUDes(0);
|
||||||
if (switch3.get()) {
|
} else {
|
||||||
setUDes(getUDes() + 1.0);
|
enabled = true;
|
||||||
}
|
setUDes(savedVoltage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (enabled && switch2.get()) {
|
||||||
|
savedVoltage = getUDes() - 1.0;
|
||||||
|
setUDes(savedVoltage);
|
||||||
|
}
|
||||||
|
if (enabled && switch3.get()) {
|
||||||
|
savedVoltage = getUDes() + 1.0;
|
||||||
|
setUDes(savedVoltage);
|
||||||
|
}
|
||||||
|
|
||||||
dispSetFloat(0, getUDes());
|
static uint32_t cnt = 0;
|
||||||
dispSetFloat(1, getUCur());
|
cnt++;
|
||||||
|
if (cnt >= 10000) {
|
||||||
|
dispSetFloat(0, getUCur());
|
||||||
|
dispSetFloat(1, getUDes());
|
||||||
|
cnt = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
volatile Control ctrl((float)PWM_MIN, (float)PWM_MAX, Ctrl_P, Ctrl_I, Ctrl_D);
|
volatile Control ctrl((float)PWM_MIN, (float)PWM_MAX, Ctrl_P, Ctrl_I, Ctrl_D);
|
||||||
|
|
||||||
volatile float u_des = 5.0;
|
volatile float u_des = 0.0;
|
||||||
volatile float u_curr = 0;
|
volatile float u_curr = 0;
|
||||||
volatile uint16_t newPwm = 0;
|
volatile uint16_t newPwm = 0;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user