Library for digital quadrature encoder

Dependents:   VNH5019_2 VNH5019_1

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?

UserRevisionLine numberNew 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 }