From 30faab4a87add4bd4fe343612231ce4c3e7ee412 Mon Sep 17 00:00:00 2001 From: Jim Morris Date: Thu, 31 Mar 2016 13:31:05 -0700 Subject: [PATCH] If raw registers are usied in config, write the registers to the chip after setting the local copy. --- .../motordrivercontrol/MotorDriverControl.cpp | 18 ++++++++++++++---- .../drivers/TMC26X/TMC26X.cpp | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/modules/utils/motordrivercontrol/MotorDriverControl.cpp b/src/modules/utils/motordrivercontrol/MotorDriverControl.cpp index 2ed27a61..b09bc716 100644 --- a/src/modules/utils/motordrivercontrol/MotorDriverControl.cpp +++ b/src/modules/utils/motordrivercontrol/MotorDriverControl.cpp @@ -147,13 +147,23 @@ bool MotorDriverControl::config_module(uint16_t cs) if(!str.empty()) { rawreg= true; std::vector regs= parse_number_list(str.c_str(), 16); - uint32_t reg= 0; - for(auto i : regs) { + if(!regs.empty()) { + uint32_t reg= 0; + for(auto i : regs) { + // this just sets the local storage, it does not write to the chip + switch(chip) { + case DRV8711: drv8711->set_raw_register(&StreamOutput::NullStream, ++reg, i); break; + case TMC2660: tmc26x->setRawRegister(&StreamOutput::NullStream, ++reg, i); break; + } + } + + // write the stored registers switch(chip) { - case DRV8711: drv8711->set_raw_register(&StreamOutput::NullStream, ++reg, i); break; - case TMC2660: tmc26x->setRawRegister(&StreamOutput::NullStream, ++reg, i); break; + case DRV8711: drv8711->set_raw_register(&StreamOutput::NullStream, 255, 0); break; + case TMC2660: tmc26x->setRawRegister(&StreamOutput::NullStream, 255, 0); break; } } + }else{ rawreg= false; } diff --git a/src/modules/utils/motordrivercontrol/drivers/TMC26X/TMC26X.cpp b/src/modules/utils/motordrivercontrol/drivers/TMC26X/TMC26X.cpp index a20bd6db..caab5b89 100644 --- a/src/modules/utils/motordrivercontrol/drivers/TMC26X/TMC26X.cpp +++ b/src/modules/utils/motordrivercontrol/drivers/TMC26X/TMC26X.cpp @@ -1026,7 +1026,7 @@ bool TMC26X::checkAlarm() } // sets a raw register to the value specified, for advanced settings -// register 0 writes them, 255 displays what registers are mapped to what +// register 255 writes them, 0 displays what registers are mapped to what // FIXME status registers not reading back correctly, check docs bool TMC26X::setRawRegister(StreamOutput *stream, uint32_t reg, uint32_t val) { -- 2.20.1