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

Dependencies:   mbed Watchdog stm32-sensor-base2

Committer:
nestedslk
Date:
Tue Jul 21 12:18:14 2020 +0000
Revision:
5:97117a837d2c
Parent:
4:f6e22dd39313
Child:
12:406f75196a12
ultrasonics working

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 5:97117a837d2c 10
nestedslk 5:97117a837d2c 11
nestedslk 5:97117a837d2c 12 Timer timer_enc;
ommpy 0:d383e2dee0f7 13 AS5045::AS5045(PinName CS) :
nestedslk 5:97117a837d2c 14 _spi(NC,D12, D13), // MBED SPI init
nestedslk 5:97117a837d2c 15 _cs(CS) // Digital output pin init
ommpy 0:d383e2dee0f7 16 {
nestedslk 5:97117a837d2c 17 // Set SPI bitwidth9
nestedslk 5:97117a837d2c 18 _spi.format(9, 2);
ommpy 0:d383e2dee0f7 19
nestedslk 5:97117a837d2c 20 // Set SPI frequency
nestedslk 5:97117a837d2c 21 _spi.frequency(500000);//SPI_FREQ);
nestedslk 5:97117a837d2c 22 // Set the digital output high
nestedslk 5:97117a837d2c 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 5:97117a837d2c 33 unsigned int upper, // Upper part of the tick amount integer
nestedslk 5:97117a837d2c 34 lower; // Lower part of the tick amount integer
nestedslk 5:97117a837d2c 35 //
nestedslk 5:97117a837d2c 36 // // Set the chip select pin low
nestedslk 5:97117a837d2c 37 // //timer_enc.reset();
nestedslk 5:97117a837d2c 38 // timer_enc.start();
nestedslk 5:97117a837d2c 39 // _cs = 0;
nestedslk 5:97117a837d2c 40 //
nestedslk 5:97117a837d2c 41 // wait_ms(1);
nestedslk 5:97117a837d2c 42 // // Read data from the encoder
nestedslk 5:97117a837d2c 43 // upper = (_spi.write(0x00)) ;
nestedslk 5:97117a837d2c 44 //// lower = (_spi.write(0x00));
nestedslk 5:97117a837d2c 45 //
nestedslk 5:97117a837d2c 46 //// lower = lower >> 6;
nestedslk 5:97117a837d2c 47 //// upper = (upper >> 6)+lower;
nestedslk 5:97117a837d2c 48 //// upper = upper & 0xffc0;
nestedslk 5:97117a837d2c 49 //// upper = upper >> 6;
nestedslk 5:97117a837d2c 50 //
nestedslk 5:97117a837d2c 51 // // Set the chip select pin high
nestedslk 5:97117a837d2c 52 // _cs = 1;
nestedslk 5:97117a837d2c 53 // //wait_ms(5);
nestedslk 5:97117a837d2c 54 // Return full 9-bits tick amount
nestedslk 5:97117a837d2c 55 // return (upper>>5);
nestedslk 5:97117a837d2c 56 //return upper ;
nestedslk 5:97117a837d2c 57
nestedslk 5:97117a837d2c 58 _cs = 0;
nestedslk 5:97117a837d2c 59 upper = _spi.write(0x00);
nestedslk 5:97117a837d2c 60 lower = _spi.write(0x00);
nestedslk 5:97117a837d2c 61 _cs = 1;
nestedslk 5:97117a837d2c 62
nestedslk 5:97117a837d2c 63
nestedslk 5:97117a837d2c 64 //upper &=~ 0xF0;//mask out the first 4 bits
nestedslk 5:97117a837d2c 65 // EncoderByteData = upper << 8; //shift MSB to correct EncoderByteData in EncoderByteData message
nestedslk 5:97117a837d2c 66 // EncoderByteData += lower; // add LSB to EncoderByteData message to complete message
nestedslk 5:97117a837d2c 67 return ((upper << 3)+(lower >> 6));
nestedslk 5:97117a837d2c 68 //return EncoderByteData;
ommpy 0:d383e2dee0f7 69 }
ommpy 0:d383e2dee0f7 70
ommpy 0:d383e2dee0f7 71 /** Convert position of the encoder to degrees
ommpy 0:d383e2dee0f7 72 *
ommpy 0:d383e2dee0f7 73 * @note
ommpy 0:d383e2dee0f7 74 * Tick amount is recieved internally
ommpy 0:d383e2dee0f7 75 */
ommpy 0:d383e2dee0f7 76 float AS5045::getRotation()
ommpy 0:d383e2dee0f7 77 {
nestedslk 5:97117a837d2c 78 // Get data from the encoder
nestedslk 5:97117a837d2c 79 float value = (float)getPosition();
ommpy 0:d383e2dee0f7 80
nestedslk 5:97117a837d2c 81 // Return degrees of rotation of the encoder
nestedslk 5:97117a837d2c 82 return value * RESOLUTION;
ommpy 0:d383e2dee0f7 83 }