works so far

This commit is contained in:
hg 2015-03-04 21:42:12 +01:00
parent 55dcc6ebb0
commit 337eaa98e7
2 changed files with 71 additions and 56 deletions

View File

@ -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;
}
} }

View File

@ -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;