Robotics Studio
/
test_SPI
sss
Diff: main.cpp
- Revision:
- 0:eac841605c08
- Child:
- 1:d935f9ed6be5
diff -r 000000000000 -r eac841605c08 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Mar 18 12:20:30 2019 +0000 @@ -0,0 +1,93 @@ +#include "mbed.h" +#include <Map.hpp> + +//Variable Declarations + +Serial pc(USBTX, USBRX); + +SPI spi(D11, D12, D13);//MOSI, MISO, SCLK +DigitalOut encode1(D10);//Encoder 1 + +char rx_in = 0, rx_out = 0; + +char dataSize = 5; +char array[5]; +char arraySize = sizeof(array); +char getData = 0; +char checkData = 0; +char encArr[2]= {255,255}; +char encLength = 2; + +///////////////////////////// + +//Functions + +void RX(int data){ + array[checkData] = data; + checkData++; + if(checkData == arraySize){ + getData = 1; + checkData = 0; + } +} + +void RX_INT(){ + int data = pc.getc(); + RX(data); +} + +float ConvertAngle(int encData){ + Map map(0, 16383, 0, 359); + float angle = map.Calculate(encData); + return angle; + } + +float ReadEncoder(int encid){ + if(encid == 1){ + encode1 = 0; + } +else{ + //encode2 = 0; + } + char *arrAdd = &encArr[0]; + int encData = spi.write(arrAdd, 2, arrAdd, 2); + // printf("encoder reads %d \n\r", encData); + encData = encArr[0] * 256 + encArr[1]; + encode1 = 1; + printf("encoder reads %d \n\r", encData); + return ConvertAngle(encData/2); +} + + +void RX_INT(); + +//Main + +int main() { + pc.baud(250000); + pc.attach(&RX_INT, Serial::RxIrq); + + encode1 = 1; + + spi.format(14, 3); + spi.frequency(500000); + + +//Program Loop + while(true){ + //if(getData == 1){ + // for(char i = 0; i < arraySize; i++){ +// printf("array[%d] = %d\n", i,array[i]); + // pc.putc(array[i]); + //} + // pc.putc('A'); + // getData = 0; + //} + float encdat = ReadEncoder(1); + printf("angle = %.2f \n\r", encdat); + } + + + + +} \ No newline at end of file