Руслан Бредун / Mbed 2 deprecated STM32-MC_node

Dependencies:   mbed Watchdog stm32-sensor-base2

Committer:
nestedslk
Date:
Sat Jul 18 14:59:04 2020 +0000
Revision:
4:f6e22dd39313
Parent:
1:3c6771928b35
Child:
5:97117a837d2c
testing version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ommpy 0:d383e2dee0f7 1 #include "AS5045.h"
nestedslk 4:f6e22dd39313 2 //we have 5040
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 */
nestedslk 4:f6e22dd39313 10
nestedslk 4:f6e22dd39313 11
nestedslk 4:f6e22dd39313 12 Timer timer_enc;
ommpy 0:d383e2dee0f7 13 AS5045::AS5045(PinName CS) :
ommpy 0:d383e2dee0f7 14 _spi(NC,D12, D13), // MBED SPI init
ommpy 0:d383e2dee0f7 15 _cs(CS) // Digital output pin init
ommpy 0:d383e2dee0f7 16 {
ommpy 0:d383e2dee0f7 17 // Set SPI bitwidth
nestedslk 4:f6e22dd39313 18 _spi.format(9, 2);
ommpy 0:d383e2dee0f7 19
ommpy 0:d383e2dee0f7 20 // Set SPI frequency
nestedslk 4:f6e22dd39313 21 _spi.frequency(50000);//SPI_FREQ);
ommpy 0:d383e2dee0f7 22 // Set the digital output high
ommpy 0:d383e2dee0f7 23 _cs = 1;
ommpy 0:d383e2dee0f7 24 }
ommpy 0:d383e2dee0f7 25
ommpy 0:d383e2dee0f7 26 /** Read tick amount from encoder (position)
ommpy 0:d383e2dee0f7 27 *
ommpy 0:d383e2dee0f7 28 * @note
ommpy 0:d383e2dee0f7 29 * Tick amount is recieved through SPI
ommpy 0:d383e2dee0f7 30 */
ommpy 0:d383e2dee0f7 31 int AS5045::getPosition()
ommpy 0:d383e2dee0f7 32 {
nestedslk 4:f6e22dd39313 33 unsigned int upper, // Upper part of the tick amount integer
nestedslk 4:f6e22dd39313 34 lower; // Lower part of the tick amount integer
ommpy 0:d383e2dee0f7 35
ommpy 0:d383e2dee0f7 36 // Set the chip select pin low
ommpy 0:d383e2dee0f7 37 _cs = 0;
nestedslk 4:f6e22dd39313 38 timer_enc.reset();
nestedslk 4:f6e22dd39313 39 timer_enc.start();
nestedslk 4:f6e22dd39313 40 wait_ms(5);
ommpy 0:d383e2dee0f7 41 // Read data from the encoder
nestedslk 4:f6e22dd39313 42 upper = (_spi.write(0x00)) ;
nestedslk 4:f6e22dd39313 43 lower = (_spi.write(0x00));
nestedslk 4:f6e22dd39313 44
nestedslk 4:f6e22dd39313 45 // lower = lower >> 6;
nestedslk 4:f6e22dd39313 46 // upper = (upper >> 6)+lower;
nestedslk 4:f6e22dd39313 47 // upper = upper & 0xffc0;
nestedslk 4:f6e22dd39313 48 upper = upper >> 6;
ommpy 0:d383e2dee0f7 49
ommpy 0:d383e2dee0f7 50 // Set the chip select pin high
ommpy 0:d383e2dee0f7 51 _cs = 1;
nestedslk 4:f6e22dd39313 52 wait_ms(5);
ommpy 0:d383e2dee0f7 53 // Return full 9-bits tick amount
nestedslk 4:f6e22dd39313 54 return upper;
nestedslk 4:f6e22dd39313 55 //return upper ;
ommpy 0:d383e2dee0f7 56 }
ommpy 0:d383e2dee0f7 57
ommpy 0:d383e2dee0f7 58 /** Convert position of the encoder to degrees
ommpy 0:d383e2dee0f7 59 *
ommpy 0:d383e2dee0f7 60 * @note
ommpy 0:d383e2dee0f7 61 * Tick amount is recieved internally
ommpy 0:d383e2dee0f7 62 */
ommpy 0:d383e2dee0f7 63 float AS5045::getRotation()
ommpy 0:d383e2dee0f7 64 {
ommpy 0:d383e2dee0f7 65 // Get data from the encoder
ommpy 1:3c6771928b35 66 float value = (float)getPosition();
ommpy 0:d383e2dee0f7 67
ommpy 0:d383e2dee0f7 68 // Return degrees of rotation of the encoder
ommpy 0:d383e2dee0f7 69 return value * RESOLUTION;
ommpy 0:d383e2dee0f7 70 }