test

Dependencies:   mbed Watchdog

Dependents:   STM32-MC_node

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?

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