|
|
|
|
@ -29,10 +29,7 @@ void kraftsensor_init(){
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void do_kraftsensor(){
|
|
|
|
|
static int32_t last_read;
|
|
|
|
|
static int32_t old_value;
|
|
|
|
|
uint16_t m_data[4];
|
|
|
|
|
int32_t kraftsensor_read;
|
|
|
|
|
|
|
|
|
|
/* read 2 16bit values and merge to 32bit signed integer */
|
|
|
|
|
readReg(1,0,2);
|
|
|
|
|
@ -45,31 +42,12 @@ void do_kraftsensor(){
|
|
|
|
|
int32_t tmp = (uint32_t)m_data[1]<<16;
|
|
|
|
|
tmp |= m_data[0];
|
|
|
|
|
|
|
|
|
|
//kraftsensor_value = tmp;
|
|
|
|
|
/* conversion magic to milliNewton */
|
|
|
|
|
kraftsensor_value = (((tmp /* + 539363*/)*9.81)/177.380)+kraftsensor_zero_offset;
|
|
|
|
|
|
|
|
|
|
//if(abs(kraftsensor_read - old_value) > 10000){
|
|
|
|
|
// if(abs(last_read - kraftsensor_read) > 10000){
|
|
|
|
|
// kraftsensor_value = old_value;
|
|
|
|
|
// //printf("delta: %ld\tvalue:%ld\n", kraftsensor_read - old_value, kraftsensor_read);
|
|
|
|
|
// //printf("spike\n");
|
|
|
|
|
// }
|
|
|
|
|
// else{
|
|
|
|
|
// kraftsensor_value = kraftsensor_read;
|
|
|
|
|
// //printf("jump\n");
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
//else{
|
|
|
|
|
// kraftsensor_value = kraftsensor_read;
|
|
|
|
|
//}
|
|
|
|
|
//last_read = kraftsensor_read;
|
|
|
|
|
//old_value = kraftsensor_value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t wait_receive(uint8_t len, uint16_t dest[], uint8_t timeout){
|
|
|
|
|
int8_t wait_receive(uint8_t len, uint16_t dest[], uint8_t timeout){
|
|
|
|
|
|
|
|
|
|
uint8_t breaker = timeout;
|
|
|
|
|
while(!receiveOkay && breaker) { //wait for client response, time out after 1s
|
|
|
|
|
@ -94,6 +72,23 @@ uint8_t wait_receive(uint8_t len, uint16_t dest[], uint8_t timeout){
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int8_t wait_write(uint8_t timeout){
|
|
|
|
|
uint8_t breaker = timeout;
|
|
|
|
|
while(!receiveOkay && breaker) { //wait for client response, time out after 1s
|
|
|
|
|
breaker--;
|
|
|
|
|
_delay_ms(1);
|
|
|
|
|
if(breaker==0)
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(receiveOkay) { //if this fails, there was either no response or a crc error
|
|
|
|
|
if(rxbuffer[1]&0x80) { //client responded with an error code
|
|
|
|
|
return rxbuffer[1]&0x80;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void readReg(uint8_t slaveid, uint16_t address, uint8_t amount) {
|
|
|
|
|
_delay_ms(2);
|
|
|
|
|
rxbuffer[0]=slaveid;
|
|
|
|
|
|