Telescope Control Library

Dependents:   PushToGo-F429

Committer:
caoyu@caoyuan9642-desktop.MIT.EDU
Date:
Mon Sep 24 19:36:48 2018 -0400
Revision:
19:fd854309cb4c
Parent:
0:6cb2eaf8b133
Fix bug in nudging with small speeds mentioned in the last commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
caoyuan9642 0:6cb2eaf8b133 1 /*
caoyuan9642 0:6cb2eaf8b133 2 * GrayAbsEncoder.h
caoyuan9642 0:6cb2eaf8b133 3 *
caoyuan9642 0:6cb2eaf8b133 4 * Created on: 2018Äê2ÔÂ7ÈÕ
caoyuan9642 0:6cb2eaf8b133 5 * Author: caoyuan9642
caoyuan9642 0:6cb2eaf8b133 6 */
caoyuan9642 0:6cb2eaf8b133 7
caoyuan9642 0:6cb2eaf8b133 8 #ifndef GRAYABSENCODER_H_
caoyuan9642 0:6cb2eaf8b133 9
caoyuan9642 0:6cb2eaf8b133 10 #define GRAYABSENCODER_H_
caoyuan9642 0:6cb2eaf8b133 11
caoyuan9642 0:6cb2eaf8b133 12 #include <AbsEncoder.h>
caoyuan9642 0:6cb2eaf8b133 13
caoyuan9642 0:6cb2eaf8b133 14 template<uint8_t N>
caoyuan9642 0:6cb2eaf8b133 15 class GrayAbsEncoder: public AbsEncoder<(1 << N)>
caoyuan9642 0:6cb2eaf8b133 16 {
caoyuan9642 0:6cb2eaf8b133 17 public:
caoyuan9642 0:6cb2eaf8b133 18 GrayAbsEncoder()
caoyuan9642 0:6cb2eaf8b133 19 {
caoyuan9642 0:6cb2eaf8b133 20 }
caoyuan9642 0:6cb2eaf8b133 21 virtual ~GrayAbsEncoder()
caoyuan9642 0:6cb2eaf8b133 22 {
caoyuan9642 0:6cb2eaf8b133 23 }
caoyuan9642 0:6cb2eaf8b133 24
caoyuan9642 0:6cb2eaf8b133 25 virtual uint32_t readPosGray() = 0;
caoyuan9642 0:6cb2eaf8b133 26 virtual uint32_t readPos()
caoyuan9642 0:6cb2eaf8b133 27 {
caoyuan9642 0:6cb2eaf8b133 28 /*Convert Gray code to Binary code*/
caoyuan9642 0:6cb2eaf8b133 29 uint32_t grayPos = readPosGray();
caoyuan9642 0:6cb2eaf8b133 30 uint32_t binPos = grayPos;
caoyuan9642 0:6cb2eaf8b133 31 for (grayPos >>= 1; grayPos; grayPos >>= 1)
caoyuan9642 0:6cb2eaf8b133 32 binPos ^= grayPos;
caoyuan9642 0:6cb2eaf8b133 33 return binPos;
caoyuan9642 0:6cb2eaf8b133 34 }
caoyuan9642 0:6cb2eaf8b133 35
caoyuan9642 0:6cb2eaf8b133 36 uint8_t getBits() const
caoyuan9642 0:6cb2eaf8b133 37 {
caoyuan9642 0:6cb2eaf8b133 38 return N;
caoyuan9642 0:6cb2eaf8b133 39 }
caoyuan9642 0:6cb2eaf8b133 40 };
caoyuan9642 0:6cb2eaf8b133 41
caoyuan9642 0:6cb2eaf8b133 42 #endif /* GRAYABSENCODER_H_ */
caoyuan9642 0:6cb2eaf8b133 43
caoyuan9642 0:6cb2eaf8b133 44