From 585c920b347ea50e7c5d27159b49873614259c52 Mon Sep 17 00:00:00 2001 From: hg Date: Sun, 14 Feb 2016 19:14:36 +0100 Subject: [PATCH] more switches enables --- src/engine.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++-------- src/engine.h | 4 ++++ src/hmi.cpp | 14 +++++++++++--- src/main.cpp | 4 ++-- 4 files changed, 59 insertions(+), 13 deletions(-) diff --git a/src/engine.cpp b/src/engine.cpp index 3aceac0..8de95ec 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -12,30 +12,42 @@ volatile uint32_t tickCnt = 0; +const uint16_t DIVIDER = 2; const uint16_t TICK = 1024; uint16_t pwmVal = 512; -volatile uint16_t onTime = 500; -volatile uint16_t offTime = 200; + +// unit: 100us +const uint32_t STEP_100ms = 1000; +volatile uint32_t onTime = STEP_100ms * 1; // 1000 = 100ms +volatile uint32_t offTime = 0; interrupt (TIMER0_A0_VECTOR) timer0a0_isr(void) { static uint8_t state = 0; - static uint16_t timestamp = 0; + static uint32_t timestamp = 0; + + static uint16_t divCnt = 0; + divCnt++; + if (divCnt >= DIVIDER) { + divCnt = 0; + timestamp++; + P1OUT &= ~BIT7; + P1OUT |= BIT7; + } - timestamp++; switch (state) { case 0: if (timestamp >= onTime) { timestamp = 0; - P1SEL &= ~BIT6; - P1OUT &= ~BIT6; + P1SEL |= BIT6; state = 1; } break; case 1: - if (timestamp >= offTime) { + if ((offTime != 0) && (timestamp >= offTime)) { timestamp = 0; - P1SEL |= BIT6; + P1SEL &= ~BIT6; + P1OUT &= ~BIT6; state = 0; } break; @@ -69,3 +81,25 @@ uint16_t engineMaxPwmValue() { void engineSetPwmValue(uint16_t val) { TACCR1 = val; } + +void engineIncOffTime() { + offTime += STEP_100ms; +} + +void engineIncOnTime() { + onTime += STEP_100ms; +} + +void engineDecOffTime() { + if (offTime != 0) { + offTime -= STEP_100ms; + } +} + +void engineDecOnTime() { + if (onTime != 0) { + onTime -= STEP_100ms; + } +} + + diff --git a/src/engine.h b/src/engine.h index 87f94e1..3208b87 100644 --- a/src/engine.h +++ b/src/engine.h @@ -13,6 +13,10 @@ void engineInit(); uint16_t engineMaxPwmValue(); void engineSetPwmValue(uint16_t val); +void engineIncOffTime(); +void engineIncOnTime(); +void engineDecOffTime(); +void engineDecOnTime(); diff --git a/src/hmi.cpp b/src/hmi.cpp index 16adb4b..599e0cc 100644 --- a/src/hmi.cpp +++ b/src/hmi.cpp @@ -81,14 +81,14 @@ public: SwitchPort intensitySwitch = SwitchPort2(BIT1); -//SwitchPort onTimeSwitch = SwitchPort2(BIT2); -//SwitchPort offTimeSwitch = SwitchPort2(BIT3); +SwitchPort onTimeSwitch = SwitchPort2(BIT2); +SwitchPort offTimeSwitch = SwitchPort2(BIT3); //SwitchPort modeSwitch = SwitchPort2(BIT4); int16_t intensity = 0; uint16_t maxIntensity = 0; uint16_t intensityStep = 0; -const uint16_t intensityStepCnt = 8; +const uint16_t intensityStepCnt = 16; void hmiInit() { @@ -108,4 +108,12 @@ void hmiExec() { debugWrite(intensity); engineSetPwmValue(intensity); } + + if (onTimeSwitch.get()) { + engineIncOnTime(); + } + + if (offTimeSwitch.get()) { + engineIncOffTime(); + } } diff --git a/src/main.cpp b/src/main.cpp index 7599cb5..fb55e2f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -41,8 +41,8 @@ int main() { while (1) { - P1OUT &= ~BIT7; - P1OUT |= BIT7; + //P1OUT &= ~BIT7; + //P1OUT |= BIT7; hmiExec(); }