From 9748239aab14ce7278f545fba421209ac1213bef Mon Sep 17 00:00:00 2001 From: Jonas Zeunert Date: Thu, 16 Jan 2020 20:29:15 +0100 Subject: [PATCH] work on drivercontroller logik --- .../detail/DriverBoardPinController.cpp | 62 ++++++++++--------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp b/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp index 396e6fa..6312dd3 100644 --- a/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp +++ b/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp @@ -28,10 +28,11 @@ void DriverBoardPinController::activate(items::DriverBoardItem &driver_board_ite uint8_t address = driver_board_item.get_address(); - this->select_mux(address/8); this->select_adress(address); - write_pin(this->data_pin, true); + + this->select_mux(address/8); + this->deselect_all_muxes(); } @@ -42,10 +43,11 @@ void DriverBoardPinController::deactivate(items::DriverBoardItem &driver_board_i uint8_t address = driver_board_item.get_address(); - this->select_mux(address/8); this->select_adress(address); - write_pin(this->data_pin, false); + + this->select_mux(address/8); + this->deselect_all_muxes(); } @@ -57,6 +59,33 @@ void DriverBoardPinController::select_adress(uint8_t address) write_pin(this->address_pins[2], address & 0b100); } +void DriverBoardPinController::select_mux(uint8_t mux) +{ + write_pin(this->mux_enable_pins[mux], 0); +} + +void DriverBoardPinController::deselect_all_muxes() +{ + for(auto pin : mux_enable_pins) + { + write_pin(pin, 1); + } +} + +void DriverBoardPinController::clear() +{ + write_pin(data_pin, 0); + for(auto mux : mux_enable_pins) + { + for(uint8_t i = 0; i<8; i++) + { + this->deselect_all_muxes(); + select_mux(mux); + select_adress(i); + } + } +} + void DriverBoardPinController::set_address_pins(std::array address_pins) { this->address_pins = address_pins; @@ -110,32 +139,7 @@ void DriverBoardPinController::set_run_pin(uint8_t run_pin) write_pin(run_pin, 0); } -void DriverBoardPinController::select_mux(uint8_t mux) -{ - write_pin(this->mux_enable_pins[mux], 0); -} -void DriverBoardPinController::deselect_all_muxes() -{ - for(auto pin : mux_enable_pins) - { - write_pin(pin, 1); - } -} - -void DriverBoardPinController::clear() -{ - for(auto mux : mux_enable_pins) - { - for(uint8_t i = 0; i<8; i++) - { - select_mux(mux); - select_adress(i); - write_pin(data_pin, 0); - } - } - -} } }