Library for digital quadrature encoder
Dependents: VNH5019_2 VNH5019_1
Encoder.cpp@4:f803ea95592c, 2017-02-25 (annotated)
- Committer:
- TeaPack_CZ
- Date:
- Sat Feb 25 22:00:09 2017 +0000
- Revision:
- 4:f803ea95592c
- Parent:
- 1:ff2c7733729e
remove redundant mbed.bld from library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
TeaPack_CZ | 1:ff2c7733729e | 1 | #include "Encoder.h" |
TeaPack_CZ | 1:ff2c7733729e | 2 | |
TeaPack_CZ | 1:ff2c7733729e | 3 | Encoder::Encoder(PinName InA, PinName InB) : _pinA(InA), _pinB(InB), _inA(InA), _inB(InB) { |
TeaPack_CZ | 1:ff2c7733729e | 4 | _inA.rise(this,&Encoder::inAhi); |
TeaPack_CZ | 1:ff2c7733729e | 5 | _inA.fall(this,&Encoder::inAlo); |
TeaPack_CZ | 1:ff2c7733729e | 6 | _inB.rise(this,&Encoder::inBhi); |
TeaPack_CZ | 1:ff2c7733729e | 7 | _inB.fall(this,&Encoder::inBlo); |
TeaPack_CZ | 1:ff2c7733729e | 8 | |
TeaPack_CZ | 1:ff2c7733729e | 9 | puls = 0; |
TeaPack_CZ | 1:ff2c7733729e | 10 | dist = 0; |
TeaPack_CZ | 1:ff2c7733729e | 11 | total_dist = 0; |
TeaPack_CZ | 1:ff2c7733729e | 12 | } |
TeaPack_CZ | 1:ff2c7733729e | 13 | |
TeaPack_CZ | 1:ff2c7733729e | 14 | int Encoder::getDist() |
TeaPack_CZ | 1:ff2c7733729e | 15 | { |
TeaPack_CZ | 1:ff2c7733729e | 16 | dist=puls; |
TeaPack_CZ | 1:ff2c7733729e | 17 | puls=0; |
TeaPack_CZ | 1:ff2c7733729e | 18 | total_dist+=dist; |
TeaPack_CZ | 1:ff2c7733729e | 19 | return dist; |
TeaPack_CZ | 1:ff2c7733729e | 20 | } |
TeaPack_CZ | 1:ff2c7733729e | 21 | |
TeaPack_CZ | 1:ff2c7733729e | 22 | int Encoder::getTotalDist() |
TeaPack_CZ | 1:ff2c7733729e | 23 | { |
TeaPack_CZ | 1:ff2c7733729e | 24 | return total_dist; |
TeaPack_CZ | 1:ff2c7733729e | 25 | } |
TeaPack_CZ | 1:ff2c7733729e | 26 | |
TeaPack_CZ | 1:ff2c7733729e | 27 | void Encoder::clr() |
TeaPack_CZ | 1:ff2c7733729e | 28 | { |
TeaPack_CZ | 1:ff2c7733729e | 29 | total_dist=0; |
TeaPack_CZ | 1:ff2c7733729e | 30 | } |
TeaPack_CZ | 1:ff2c7733729e | 31 | |
TeaPack_CZ | 1:ff2c7733729e | 32 | void Encoder::setEnabled(bool state) |
TeaPack_CZ | 1:ff2c7733729e | 33 | { |
TeaPack_CZ | 1:ff2c7733729e | 34 | if(state) |
TeaPack_CZ | 1:ff2c7733729e | 35 | { |
TeaPack_CZ | 1:ff2c7733729e | 36 | enabled = 1; |
TeaPack_CZ | 1:ff2c7733729e | 37 | enable_irq(); |
TeaPack_CZ | 1:ff2c7733729e | 38 | } |
TeaPack_CZ | 1:ff2c7733729e | 39 | else |
TeaPack_CZ | 1:ff2c7733729e | 40 | { |
TeaPack_CZ | 1:ff2c7733729e | 41 | enabled = 0; |
TeaPack_CZ | 1:ff2c7733729e | 42 | disable_irq(); |
TeaPack_CZ | 1:ff2c7733729e | 43 | } |
TeaPack_CZ | 1:ff2c7733729e | 44 | } |
TeaPack_CZ | 1:ff2c7733729e | 45 | |
TeaPack_CZ | 1:ff2c7733729e | 46 | bool Encoder::isEnabled() |
TeaPack_CZ | 1:ff2c7733729e | 47 | { |
TeaPack_CZ | 1:ff2c7733729e | 48 | return enabled; |
TeaPack_CZ | 1:ff2c7733729e | 49 | } |
TeaPack_CZ | 1:ff2c7733729e | 50 | |
TeaPack_CZ | 1:ff2c7733729e | 51 | // ******************** |
TeaPack_CZ | 1:ff2c7733729e | 52 | // *** Private voids ** |
TeaPack_CZ | 1:ff2c7733729e | 53 | // ******************** |
TeaPack_CZ | 1:ff2c7733729e | 54 | |
TeaPack_CZ | 1:ff2c7733729e | 55 | void Encoder::enable_irq() |
TeaPack_CZ | 1:ff2c7733729e | 56 | { |
TeaPack_CZ | 1:ff2c7733729e | 57 | _inA.enable_irq(); |
TeaPack_CZ | 1:ff2c7733729e | 58 | _inB.enable_irq(); |
TeaPack_CZ | 1:ff2c7733729e | 59 | } |
TeaPack_CZ | 1:ff2c7733729e | 60 | |
TeaPack_CZ | 1:ff2c7733729e | 61 | void Encoder::disable_irq() |
TeaPack_CZ | 1:ff2c7733729e | 62 | { |
TeaPack_CZ | 1:ff2c7733729e | 63 | _inA.disable_irq(); |
TeaPack_CZ | 1:ff2c7733729e | 64 | _inB.disable_irq(); |
TeaPack_CZ | 1:ff2c7733729e | 65 | } |
TeaPack_CZ | 1:ff2c7733729e | 66 | |
TeaPack_CZ | 1:ff2c7733729e | 67 | void Encoder::inAhi() |
TeaPack_CZ | 1:ff2c7733729e | 68 | { |
TeaPack_CZ | 1:ff2c7733729e | 69 | if(_pinB) |
TeaPack_CZ | 1:ff2c7733729e | 70 | puls--; |
TeaPack_CZ | 1:ff2c7733729e | 71 | else |
TeaPack_CZ | 1:ff2c7733729e | 72 | puls++; |
TeaPack_CZ | 1:ff2c7733729e | 73 | } |
TeaPack_CZ | 1:ff2c7733729e | 74 | |
TeaPack_CZ | 1:ff2c7733729e | 75 | void Encoder::inAlo() |
TeaPack_CZ | 1:ff2c7733729e | 76 | { |
TeaPack_CZ | 1:ff2c7733729e | 77 | if(_pinB) |
TeaPack_CZ | 1:ff2c7733729e | 78 | puls++; |
TeaPack_CZ | 1:ff2c7733729e | 79 | else |
TeaPack_CZ | 1:ff2c7733729e | 80 | puls--; |
TeaPack_CZ | 1:ff2c7733729e | 81 | } |
TeaPack_CZ | 1:ff2c7733729e | 82 | |
TeaPack_CZ | 1:ff2c7733729e | 83 | void Encoder::inBhi() |
TeaPack_CZ | 1:ff2c7733729e | 84 | { |
TeaPack_CZ | 1:ff2c7733729e | 85 | if(_pinA) |
TeaPack_CZ | 1:ff2c7733729e | 86 | puls++; |
TeaPack_CZ | 1:ff2c7733729e | 87 | else |
TeaPack_CZ | 1:ff2c7733729e | 88 | puls--; |
TeaPack_CZ | 1:ff2c7733729e | 89 | } |
TeaPack_CZ | 1:ff2c7733729e | 90 | |
TeaPack_CZ | 1:ff2c7733729e | 91 | void Encoder::inBlo() |
TeaPack_CZ | 1:ff2c7733729e | 92 | { |
TeaPack_CZ | 1:ff2c7733729e | 93 | if(_pinA) |
TeaPack_CZ | 1:ff2c7733729e | 94 | puls--; |
TeaPack_CZ | 1:ff2c7733729e | 95 | else |
TeaPack_CZ | 1:ff2c7733729e | 96 | puls++; |
TeaPack_CZ | 1:ff2c7733729e | 97 | } |