
test
AS5045/AS5045.cpp@0:d383e2dee0f7, 2020-07-06 (annotated)
- Committer:
- ommpy
- Date:
- Mon Jul 06 17:18:59 2020 +0530
- Revision:
- 0:d383e2dee0f7
- Child:
- 1:3c6771928b35
first commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ommpy | 0:d383e2dee0f7 | 1 | #include "AS5045.h" |
ommpy | 0:d383e2dee0f7 | 2 | |
ommpy | 0:d383e2dee0f7 | 3 | /** Constructor |
ommpy | 0:d383e2dee0f7 | 4 | * |
ommpy | 0:d383e2dee0f7 | 5 | * @param CS Pin number for the digital output |
ommpy | 0:d383e2dee0f7 | 6 | * |
ommpy | 0:d383e2dee0f7 | 7 | * @note |
ommpy | 0:d383e2dee0f7 | 8 | * PinName CS is the digital output pin number |
ommpy | 0:d383e2dee0f7 | 9 | */ |
ommpy | 0:d383e2dee0f7 | 10 | AS5045::AS5045(PinName CS) : |
ommpy | 0:d383e2dee0f7 | 11 | _spi(NC,D12, D13), // MBED SPI init |
ommpy | 0:d383e2dee0f7 | 12 | _cs(CS) // Digital output pin init |
ommpy | 0:d383e2dee0f7 | 13 | { |
ommpy | 0:d383e2dee0f7 | 14 | // Set SPI bitwidth |
ommpy | 0:d383e2dee0f7 | 15 | _spi.format(9,2); |
ommpy | 0:d383e2dee0f7 | 16 | |
ommpy | 0:d383e2dee0f7 | 17 | // Set SPI frequency |
ommpy | 0:d383e2dee0f7 | 18 | _spi.frequency(SPI_FREQ); |
ommpy | 0:d383e2dee0f7 | 19 | |
ommpy | 0:d383e2dee0f7 | 20 | // Set the digital output high |
ommpy | 0:d383e2dee0f7 | 21 | _cs = 1; |
ommpy | 0:d383e2dee0f7 | 22 | } |
ommpy | 0:d383e2dee0f7 | 23 | |
ommpy | 0:d383e2dee0f7 | 24 | /** Read tick amount from encoder (position) |
ommpy | 0:d383e2dee0f7 | 25 | * |
ommpy | 0:d383e2dee0f7 | 26 | * @note |
ommpy | 0:d383e2dee0f7 | 27 | * Tick amount is recieved through SPI |
ommpy | 0:d383e2dee0f7 | 28 | */ |
ommpy | 0:d383e2dee0f7 | 29 | int AS5045::getPosition() |
ommpy | 0:d383e2dee0f7 | 30 | { |
ommpy | 0:d383e2dee0f7 | 31 | int upper, // Upper part of the tick amount integer |
ommpy | 0:d383e2dee0f7 | 32 | lower; // Lower part of the tick amount integer |
ommpy | 0:d383e2dee0f7 | 33 | |
ommpy | 0:d383e2dee0f7 | 34 | // Set the chip select pin low |
ommpy | 0:d383e2dee0f7 | 35 | _cs = 0; |
ommpy | 0:d383e2dee0f7 | 36 | |
ommpy | 0:d383e2dee0f7 | 37 | // Read data from the encoder |
ommpy | 0:d383e2dee0f7 | 38 | upper = _spi.write(0x00); |
ommpy | 0:d383e2dee0f7 | 39 | lower = _spi.write(0x00); |
ommpy | 0:d383e2dee0f7 | 40 | |
ommpy | 0:d383e2dee0f7 | 41 | // Set the chip select pin high |
ommpy | 0:d383e2dee0f7 | 42 | _cs = 1; |
ommpy | 0:d383e2dee0f7 | 43 | |
ommpy | 0:d383e2dee0f7 | 44 | // Return full 9-bits tick amount |
ommpy | 0:d383e2dee0f7 | 45 | return ((upper << 3)+(lower >> 6)); |
ommpy | 0:d383e2dee0f7 | 46 | } |
ommpy | 0:d383e2dee0f7 | 47 | |
ommpy | 0:d383e2dee0f7 | 48 | /** Convert position of the encoder to degrees |
ommpy | 0:d383e2dee0f7 | 49 | * |
ommpy | 0:d383e2dee0f7 | 50 | * @note |
ommpy | 0:d383e2dee0f7 | 51 | * Tick amount is recieved internally |
ommpy | 0:d383e2dee0f7 | 52 | */ |
ommpy | 0:d383e2dee0f7 | 53 | float AS5045::getRotation() |
ommpy | 0:d383e2dee0f7 | 54 | { |
ommpy | 0:d383e2dee0f7 | 55 | // Get data from the encoder |
ommpy | 0:d383e2dee0f7 | 56 | float value = (float)GetInt(); |
ommpy | 0:d383e2dee0f7 | 57 | |
ommpy | 0:d383e2dee0f7 | 58 | // Return degrees of rotation of the encoder |
ommpy | 0:d383e2dee0f7 | 59 | return value * RESOLUTION; |
ommpy | 0:d383e2dee0f7 | 60 | } |