Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Merge branch 'v2.5_branch'
- Conflicts:
- src/hal/drivers/mesa-hostmot2/hostmot2.h
- src/hal/drivers/mesa-hostmot2/resolver.c
- ------------------- src/hal/drivers/mesa-hostmot2/hostmot2.h -------------------
- index 63093c9,f3eebb4..8311149
- @@@ -340,33 -332,31 +340,33 @@@ typedef struct
- hal_s32_t *count;
- hal_float_t *angle;
- hal_float_t *position;
- hal_float_t *velocity;
- hal_bit_t *reset;
- hal_bit_t *index_enable;
- hal_bit_t *error;
- } pin;
- struct {
- hal_float_t scale;
- hal_float_t vel_scale;
- + hal_u32_t index_div;
- } param;
- } hal;
- - long long accum;
- - long long offset;
- - u32 old_reg;
- - u32 index_cnts;
- + __s64 accum;
- + __s64 offset;
- + __u32 old_reg;
- ++ __u32 index_cnts;
- } hm2_resolver_instance_t;
- typedef struct {
- struct {
- hal_float_t excitation_khz;
- } param;
- } hm2_resolver_global_t;
- typedef struct {
- int num_instances;
- int num_resolvers;
- ------------------- src/hal/drivers/mesa-hostmot2/resolver.c -------------------
- index b52d4d4,fe460e6..f678c62
- @@@ -311,32 -301,29 +311,32 @@@ void hm2_resolver_process_tram_read(hos
- // sanity check
- if (res->hal.param.scale == 0.0) {
- HM2_ERR("resolver.%02d.scale == 0.0, bogus, setting to 1.0\n", i);
- res->hal.param.scale = 1.0;
- }
- if (res->hal.param.vel_scale == 0.0) {
- HM2_ERR("resolver.%02d.velocity-scale == 0.0, bogus, setting to 1.0\n", i);
- res->hal.param.vel_scale = 1.0;
- }
- // PROCESS THE REGISTERS, SET THE PINS
- - res->accum += (signed long)(hm2->resolver.position_reg[i] - res->old_reg );
- + res->accum += (__s32)(hm2->resolver.position_reg[i] - res->old_reg );
- - if (*res->hal.pin.index_enable){
- - if ((res->old_reg ^ hm2->resolver.position_reg[i]) & 0x80000000){
- - res->offset = res->accum & 0xFFFFFFFF00000000LL;
- - *res->hal.pin.index_enable = 0;
- + if ((res->old_reg ^ hm2->resolver.position_reg[i]) & 0x80000000){
- + if (++(res->index_cnts) >= res->hal.param.index_div){
- + res->index_cnts = 0;
- + if (*res->hal.pin.index_enable){
- + res->offset = res->accum & 0xFFFFFFFF00000000LL;
- + *res->hal.pin.index_enable = 0;
- + }
- }
- }
- if (*res->hal.pin.reset){
- res->offset = res->accum;
- }
- res->old_reg = hm2->resolver.position_reg[i];
- *res->hal.pin.angle = hm2->resolver.position_reg[i] / 4294967296.0;
- *res->hal.pin.rawcounts = (res->accum >> 8);
- *res->hal.pin.count = (res->accum - res->offset) >> 8;
Advertisement
Add Comment
Please, Sign In to add comment