Statistics
| Branch: | Tag: | Revision:

amiro-os / components / MotorIncrements.cpp @ b8b3a9c9

History | View | Annotate | Download (848 Bytes)

1
#include <ch.hpp>
2
#include <hal.h>
3

    
4
#include <qei.h>
5

    
6
#include <amiro/MotorIncrements.h>
7

    
8
using namespace chibios_rt;
9
using namespace amiro;
10

    
11
MotorIncrements::MotorIncrements(QEIDriver* qei0, QEIDriver* qei1) {
12
  this->qeiDriver[0] = qei0;
13
  this->qeiDriver[1] = qei1;
14

    
15
  this->qeiConfig.mode = QEI_COUNT_BOTH;
16
  this->qeiConfig.channels[0].mode = QEI_INPUT_INVERTED;
17
  this->qeiConfig.channels[1].mode = QEI_INPUT_NONINVERTED;
18
  this->qeiConfig.range = 0x10000;
19
}
20

    
21
void MotorIncrements::start() {
22
  qeiStart(this->qeiDriver[0], &this->qeiConfig);
23
  qeiStart(this->qeiDriver[1], &this->qeiConfig);
24

    
25
  qeiEnable(this->qeiDriver[0]);
26
  qeiEnable(this->qeiDriver[1]);
27
}
28

    
29
int MotorIncrements::qeiGetPosition(int idxQei) {
30
  return qeiGetPositionI(this->qeiDriver[idxQei]);
31
}
32

    
33
int MotorIncrements::getQeiConfigRange() {
34
  return this->qeiConfig.range;
35
}