Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
AS5045/AS5045.cpp
- Committer:
- ommpy
- Date:
- 2020-07-07
- Revision:
- 1:3c6771928b35
- Parent:
- 0:d383e2dee0f7
- Child:
- 4:f6e22dd39313
File content as of revision 1:3c6771928b35:
#include "AS5045.h"
/** Constructor
*
* @param CS Pin number for the digital output
*
* @note
* PinName CS is the digital output pin number
*/
AS5045::AS5045(PinName CS) :
_spi(NC,D12, D13), // MBED SPI init
_cs(CS) // Digital output pin init
{
// Set SPI bitwidth
_spi.format(9,2);
// Set SPI frequency
_spi.frequency(SPI_FREQ);
// Set the digital output high
_cs = 1;
}
/** Read tick amount from encoder (position)
*
* @note
* Tick amount is recieved through SPI
*/
int AS5045::getPosition()
{
int upper, // Upper part of the tick amount integer
lower; // Lower part of the tick amount integer
// Set the chip select pin low
_cs = 0;
// Read data from the encoder
upper = _spi.write(0x00);
lower = _spi.write(0x00);
// Set the chip select pin high
_cs = 1;
// Return full 9-bits tick amount
return ((upper << 3)+(lower >> 6));
}
/** Convert position of the encoder to degrees
*
* @note
* Tick amount is recieved internally
*/
float AS5045::getRotation()
{
// Get data from the encoder
float value = (float)getPosition();
// Return degrees of rotation of the encoder
return value * RESOLUTION;
}