Robotics Studio
/
test_SPI
sss
main.cpp
- Committer:
- pbdt1997
- Date:
- 2019-03-18
- Revision:
- 0:eac841605c08
- Child:
- 1:d935f9ed6be5
File content as of revision 0:eac841605c08:
#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); } }