modbus/kraftsensor cleanup
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -13,7 +13,7 @@ extern int32_t kraftsensor_zero_offset;
|
||||
void timer2_init();
|
||||
void kraftsensor_init();
|
||||
void do_kraftsensor(void);
|
||||
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);
|
||||
void readReg(uint8_t slaveid, uint16_t address, uint8_t amount);
|
||||
void writeReg(uint8_t slaveid, uint16_t address, uint16_t value);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user