Minorly Fixed
Dependents: AAA_Stabilus322699_LA0016 AAA_Stabilus322699_LA0018 AAA_Stabilus322699_LA0020 AAA_Stabilus322699_LA0021 ... more
Diff: QEI.cpp
- Revision:
- 4:46e47753206d
- Parent:
- 3:0db131925e56
--- a/QEI.cpp Fri Apr 08 05:25:22 2022 +0000 +++ b/QEI.cpp Mon Apr 11 06:00:31 2022 +0000 @@ -128,14 +128,15 @@ */ #include "QEI.h" -QEI::QEI (PinName channelA, +QEI::QEI( + PinName channelA, PinName channelB, PinName index, - int pulsesPerRev, - Encoding encoding): channelA_(channelA), - channelB_(channelB), - // led(LED2), - index_(index) { + int64_t pulsesPerRev, + Encoding encoding + ): channelA_(channelA), + channelB_(channelB), + index_(index) { channelA_.mode(PullUp); // LA: Hall 1504 is Open Drain channelB_.mode(PullUp); // @@ -146,8 +147,8 @@ encoding_ = encoding; //Workout what the current state is. - int chanA = channelA_.read(); // LA: Includes a Method, outside - int chanB = channelB_.read(); // + int64_t chanA = channelA_.read(); // LA: Includes a Method, outside + int64_t chanB = channelB_.read(); // //2-bit state. currState_ = (chanA << 1)| (chanB); @@ -174,15 +175,15 @@ revolutions_ = 0; } -int QEI::getCurrentState(void) { +int64_t QEI::getCurrentState(void) { return currState_; } -int QEI::getPulses(void) { +int64_t QEI::getPulses(void) { return pulses_; } -int QEI::getRevolutions(void) { +int64_t QEI::getRevolutions(void) { return revolutions_; } @@ -231,10 +232,8 @@ // predict - if this is the case, it is generally safe to ignore it, update // the state and carry on, with the error correcting itself shortly after. void QEI::encode(void) { -// led = !led; - int change = 0; -// int chanA = channelA_.read(); -// int chanB = channelB_.read(); +int64_t change = 0; + chanA = channelA_.read(); chanB = channelB_.read(); @@ -246,18 +245,14 @@ //11->00->11->00 is counter clockwise rotation or "forward". if ((prevState_ == 0x3 && currState_ == 0x0) || (prevState_ == 0x0 && currState_ == 0x3)) { - pulses_++; - } //10->01->10->01 is clockwise rotation or "backward". else if ((prevState_ == 0x2 && currState_ == 0x1) || (prevState_ == 0x1 && currState_ == 0x2)) { pulses_--; - } - } else if (encoding_ == X4_ENCODING) { //Entered a new valid state. @@ -269,18 +264,13 @@ if (change == 0) { change = -1; } - pulses_ -= change; } } - prevState_ = currState_; - } void QEI::index(void) { - revolutions_++; - }