Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
krs.cpp
- Committer:
- takaoha
- Date:
- 2019-12-29
- Revision:
- 4:b4c8d6671241
- Parent:
- 3:e356b3e7ecfd
- Child:
- 5:42c8babe5160
File content as of revision 4:b4c8d6671241:
#include "mbed.h"
#include "krs.h"
krs::krs(PinName tx, PinName rx, PinName io, int baud) : master(tx,rx),en(io)
{
master.baud(baud);
if(baud==112500){
waittime=0.0002;
}else if(baud==1250000){
waittime=0.00002;
}
master.format(8, Serial::Even, 1);
en.output();
}
bool krs::setpos(int deg,int id){
txlen=3;
rxlen=3;
int txdata[txlen];
int rxdata[rxlen];
en=1;
if(deg>135 || deg<-135){
printf("failed\r\n");
return 0;
}
int pos=deg*29.633;
pos=pos+7500;
txdata[0]=0x80+id;
txdata[1]=((pos >> 7) & 0x007F);
txdata[2]=(pos & 0x007F);
for(int i=0;i<txlen;i++){
master.putc(txdata[i]);
}
wait(waittime);
//wait(0.00002);//1250000bps用
//wait(0.0002);
/*
en=0;
for(int i=0;i<rxlen;i++){
rxdata[i]=master.getc();
}
int degnow;
degnow=((rxdata[1] << 7) & 0x3F80) + (rxdata[2] & 0x007F);
degnow=(degnow-7500)/29.6;
/*pc.printf("%d\r\n",rxdata[0]);
pc.printf("%d\r\n",rxdata[1]);
pc.printf("%d\r\n",rxdata[2]);
printf("角度%d\r\n",degnow);*/
}
void krs::getpos(int id){
en=1;
txlen=2;
rxlen=4;
unsigned char txdata[txlen];
unsigned char rxdata[rxlen];
int degnow;
txdata[0]=0xA0+id;
txdata[1]=0x05;
for(int i=0;i<txlen;i++){
master.putc(txdata[i]);
}
wait(waittime);
//wait(0.00002);
en=0;
for(int i=0;i<rxlen;i++){
rxdata[i]=master.getc();
}
printf("%d\r\n",rxdata[0]);
degnow=((rxdata[2] << 7) & 0x3F80) + (rxdata[3] & 0x007F);
degnow=(degnow-7500)/29.6;
printf("%d\r\n",degnow);
}