9 Commits

Author SHA1 Message Date
hg
e4712619bb another engine fix 2016-02-17 22:16:47 +01:00
hg
8ed8b35d77 debug code 2016-02-17 21:31:26 +01:00
c9745484d2 extend start up signal 2016-02-17 15:36:11 +01:00
85d4af6ac2 fix initialization of input pins (polarity of pull-resistor was not set) 2016-02-17 15:35:08 +01:00
hg
8d1b633928 that should be enough 2016-02-16 21:59:14 +01:00
hg
0e062197c7 start sequence added 2016-02-16 21:19:45 +01:00
hg
bad81e35c7 Added tag WORKS_0a for changeset 3bbe6390ccb3 2016-02-16 20:51:21 +01:00
hg
c4f1813e6c still a bug found 2016-02-16 20:51:06 +01:00
hg
34777bc0da Added tag WORKS_0 for changeset 42344dc8fbe5 2016-02-16 20:16:21 +01:00
5 changed files with 95 additions and 49 deletions

2
.hgtags Normal file
View File

@ -0,0 +1,2 @@
42344dc8fbe5f47bc1fd863ad662974432801791 WORKS_0
3bbe6390ccb3253431563b0bd4320478e893517b WORKS_0a

View File

@ -34,3 +34,10 @@ void debugWrite(uint16_t o) {
DEBUG_OUT_REG |= DEBUG_CS;
#endif
}
void debugWrite32(uint32_t o) {
uint16_t d1 = (uint16_t) (o & 0x0000ffff);
uint16_t d2 = (uint16_t) ((o & 0xffff0000) >> 16);
debugWrite(d1);
debugWrite(d2);
}

View File

@ -22,6 +22,7 @@
void debugInit();
void debugWrite(uint16_t o);
void debugWrite32(uint32_t o);
#endif /* DEBUG_H_ */

View File

@ -9,6 +9,7 @@
#include <stdint.h>
#include "engine.h"
#include "debug.h"
volatile uint32_t tickCnt = 0;
@ -106,34 +107,43 @@ bool engineDecPwmValue() {
return res;
}
bool engineIncOffTime() {
offTime += STEP_100ms;
return false;
}
bool engineIncOnTime() {
return false;
onTime += STEP_100ms;
}
bool engineDecOffTime() {
bool res = false;
if (offTime != 0) {
offTime -= STEP_100ms;
res = true;
}
return res;
debugWrite(0x0001);
debugWrite32(onTime);
return false;
}
bool engineDecOnTime() {
bool res = false;
bool res = true;
if (onTime != 0) {
onTime -= STEP_100ms;
res = true;
res = false;
}
debugWrite(0x0002);
debugWrite32(onTime);
return res;
}
bool engineIncOffTime() {
offTime += STEP_100ms;
debugWrite(0x0003);
debugWrite32(offTime);
return false;
}
bool engineDecOffTime() {
bool res = true;
if (offTime != 0) {
offTime -= STEP_100ms;
res = false;
}
debugWrite(0x0004);
debugWrite32(offTime);
return res;
}
uint32_t getMillis() {
return millis;
}

View File

@ -33,20 +33,20 @@ public:
break;
case STATE_BUTTON_RELEASED:
duration = getMillis() - m_timestamp;
{
uint16_t d1 = (uint16_t) (duration & 0x0000ffff);
uint16_t d2 = (uint16_t) ((duration & 0xffff0000) >> 16);
debugWrite(d1);
debugWrite(d2);
}
// {
// uint16_t d1 = (uint16_t) (duration & 0x0000ffff);
// uint16_t d2 = (uint16_t) ((duration & 0xffff0000) >> 16);
// debugWrite(d1);
// debugWrite(d2);
// }
if ((duration >= LOWER_SHORT_TIME) && (duration <= UPPER_SHORT_TIME)) {
debugWrite(0x003);
// debugWrite(0x003);
m_state = STATE_SHORT;
} else if (duration > UPPER_SHORT_TIME) {
debugWrite(0x004);
// debugWrite(0x004);
m_state = STATE_LONG;
} else {
debugWrite(0x005);
// debugWrite(0x005);
m_state = STATE_IDLE;
}
break;
@ -77,9 +77,11 @@ class SwitchPort2 : public SwitchPort {
public:
SwitchPort2(uint16_t bit) : SwitchPort() {
m_bit = bit;
P2REN |= bit;
P2DIR &= ~bit;
P2REN |= bit;
P2OUT |= bit;
P2SEL &= ~bit;
P2SEL2 &= ~bit;
};
virtual bool getSwitchState() {
bool a = P2IN & m_bit;
@ -96,9 +98,11 @@ class SwitchPort1 : public SwitchPort {
public:
SwitchPort1(uint16_t bit) : SwitchPort() {
m_bit = bit;
P1REN |= bit;
P1DIR &= ~bit;
P1REN |= bit;
P1OUT |= bit;
P1SEL &= ~bit;
P1SEL2 &= ~bit;
};
virtual bool getSwitchState() {
return P1IN & m_bit;
@ -121,33 +125,34 @@ public:
}
}
virtual void set(bool v) {};
bool isIdle() { return m_state == STATE_IDLE; };
void exec() {
switch (m_state) {
case STATE_IDLE:
break;
case STATE_START:
set(true);
m_startTime = getMillis();
m_state = STATE_ON;
break;
case STATE_ON:
if (getMillis() > m_timeout + m_startTime) {
m_state = STATE_OFF;
}
m_timeout--;
break;
case STATE_OFF:
set(false);
m_state = STATE_IDLE;
break;
default:
m_state = STATE_IDLE;
break;
case STATE_IDLE:
break;
case STATE_START:
set(true);
m_startTime = getMillis();
m_state = STATE_ON;
break;
case STATE_ON:
if (getMillis() > m_timeout + m_startTime) {
m_state = STATE_OFF;
}
m_timeout--;
break;
case STATE_OFF:
set(false);
m_state = STATE_IDLE;
break;
default:
m_state = STATE_IDLE;
break;
}
}
private:
static const uint32_t LED_WAIT_TIME_SHORT = 500;
static const uint32_t LED_WAIT_TIME_LONG = 5000;
static const uint32_t LED_WAIT_TIME_LONG = 50000;
enum e_state { STATE_IDLE, STATE_START, STATE_ON, STATE_OFF };
e_state m_state;
uint32_t m_timeout;
@ -202,6 +207,27 @@ void hmiInit() {
}
void hmiExec() {
static bool starting = true;
if (starting) {
ledGreen.start(Led::FLASH_LONG);
while (! ledGreen.isIdle()) {
ledGreen.exec();
}
ledRed.start(Led::FLASH_LONG);
while (! ledRed.isIdle()) {
ledRed.exec();
}
ledGreen.start(Led::FLASH_LONG);
while (! ledGreen.isIdle()) {
ledGreen.exec();
}
ledRed.start(Led::FLASH_LONG);
while (! ledRed.isIdle()) {
ledRed.exec();
}
starting = false;
}
SwitchPort::e_switchResult switchResult = intensitySwitch.get();
if (switchResult == SwitchPort::SWITCH_SHORT) {
if (engineIncPwmValue()) {