test

Dependencies:   mbed Watchdog

Dependents:   STM32-MC_node

AS5045/AS5045.cpp

Committer:
ommpy
Date:
2020-07-06
Revision:
0:d383e2dee0f7
Child:
1:3c6771928b35

File content as of revision 0:d383e2dee0f7:

#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)GetInt();

 	// Return degrees of rotation of the encoder
 	return value * RESOLUTION;
}