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 {
public:
SwitchPort2(uint16_t bit) : m_bit(bit), m_state(0), m_cnt(0) {
P2REN |= m_bit;
};
bool get() {
bool result = false;
switch (m_state) {
case 0:
if (P2IN & m_bit) {
m_cnt = 0;
} else {
m_cnt++;
}
if (m_cnt > 100) {
m_state = 1;
m_cnt = 0;
}
break;
case 1:
result = true;
m_state = 2;
break;
case 2:
if (P2IN & m_bit) {
m_cnt++;
} else {
m_cnt = 0;
}
if (m_cnt > 20) {
m_state = 0;
m_cnt = 0;
}
break;
default:
m_state = 0;
break;
}
return result;
};
SwitchPort2(uint16_t bit) : m_bit(bit), m_state(0), m_cnt(0) {
P2REN |= m_bit;
};
bool get() {
bool result = false;
switch (m_state) {
case 0:
if (P2IN & m_bit) {
m_cnt = 0;
} else {
m_cnt++;
}
if (m_cnt > 100) {
m_state = 1;
m_cnt = 0;
}
break;
case 1:
result = true;
m_state = 2;
break;
case 2:
if (P2IN & m_bit) {
m_cnt++;
} else {
m_cnt = 0;
}
if (m_cnt > 20) {
m_state = 0;
m_cnt = 0;
}
break;
default:
m_state = 0;
break;
}
return result;
};
private:
uint16_t m_bit;
uint8_t m_state;
uint16_t m_cnt;
uint16_t m_bit;
uint8_t m_state;
uint16_t m_cnt;
};
@ -67,21 +67,36 @@ SwitchPort2 switch2 = SwitchPort2(BIT1);
SwitchPort2 switch3 = SwitchPort2(BIT2);
void hmiInit() {
spiInit();
dispInit();
spiInit();
dispInit();
}
void hmiExec() {
if (switch1.get()) {
setUDes(0);
}
if (switch2.get()) {
setUDes(getUDes() - 1.0);
}
if (switch3.get()) {
setUDes(getUDes() + 1.0);
}
static float savedVoltage = 0.0;
static bool enabled = false;
if (switch1.get()) {
if (enabled) {
enabled = false;
setUDes(0);
} else {
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());
dispSetFloat(1, getUCur());
static uint32_t cnt = 0;
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 float u_des = 5.0;
volatile float u_des = 0.0;
volatile float u_curr = 0;
volatile uint16_t newPwm = 0;