From 4df6403e1aefd928547859b50687d657ec7c19b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20V=C3=ADtek?= <fotomartinkv@gmail.com> Date: Sun, 11 Sep 2016 14:04:19 +0200 Subject: [PATCH] Fixes of badly designed current measuring - removed waiting_for_current_reversation() - add double check of closing current --- SW/Controller.cpp | 29 ++++++++++++++--------------- SW/Controller.h | 1 + 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/SW/Controller.cpp b/SW/Controller.cpp index cab8e8e..3741e4f 100644 --- a/SW/Controller.cpp +++ b/SW/Controller.cpp @@ -29,7 +29,8 @@ static usart_regs uart_regs Controller::Controller(): servo(&DDRB, PB1, &OCR1A, blue_servo_data), adc(), - uart(uart_regs) + uart(uart_regs), + count(0) { //Servo ini TCCR1A |= (1<<COM1A1) | (1<<COM1B1) | (1<<WGM11); //Fast PWM non-inverted @@ -85,9 +86,6 @@ void Controller::gate_handler() case WAITING_FOR_CLOSING_CURRENT: waiting_for_closing_current(); break; - case WAITING_FOR_CURRENT_REVERSATION: waiting_for_current_reversation(); - break; - case WAITING_FOR_CURRENT_DROP: waiting_for_current_drop(); break; @@ -120,16 +118,20 @@ void Controller::waiting_for_closing_current() { if ((current_negative > ON_TRESHOLD) && (current_negative < 1020)) { - gate_mode = WAITING_FOR_CURRENT_DROP; + if (!count) + { + count++; + return; + } + + else + { + count = 0; + gate_mode = WAITING_FOR_CURRENT_DROP; + } } -} -void Controller::waiting_for_current_reversation() -{ - if (current_positive > ON_TRESHOLD) - { - gate_mode = WAITING_FOR_CURRENT_DROP; - } + else count = 0; } void Controller::waiting_for_current_drop() @@ -176,9 +178,6 @@ void Controller::print_debug() case WAITING_FOR_CLOSING_CURRENT: uart.transmit_string("Waiting for closing current"); break; - case WAITING_FOR_CURRENT_REVERSATION: uart.transmit_string("Waiting for current reversation"); - break; - case WAITING_FOR_CURRENT_DROP: uart.transmit_string("Waiting for current drop"); break; diff --git a/SW/Controller.h b/SW/Controller.h index 7bda471..5c7515b 100644 --- a/SW/Controller.h +++ b/SW/Controller.h @@ -53,6 +53,7 @@ class Controller private: volatile uint16_t samples[SAMPLES_COUNT]; volatile uint8_t samples_item; + uint8_t count; public: volatile uint16_t current_positive; -- GitLab