Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- andypugh@mill:~/linuxcnc-dev$ git push --dry-run origin master
- To ssh://andypugh@git.linuxcnc.org/git/linuxcnc.git
- c9513dd..492421b master -> master
- andypugh@mill:~/linuxcnc-dev$ git log -p c9513dd..492421b
- commit 492421b6c01eaafa08d16fa126d4ec591fe2b104
- Author: Andy Pugh <andy@bodgesoc.org>
- Date: Thu Aug 15 21:50:41 2013 +0100
- Improve the handling of multi-turn resolvers in the hm2 driver.
- You now get the same zero registered as an index in both directions,
- and you need to pass the zero in the same direction the requisite number of times.
- Signed-off-by: Andy Pugh <andy@bodgesoc.org>
- diff --git a/src/hal/drivers/mesa-hostmot2/resolver.c b/src/hal/drivers/mesa-hostmot2/resolver.c
- index f678c62..3fca0a1 100644
- --- a/src/hal/drivers/mesa-hostmot2/resolver.c
- +++ b/src/hal/drivers/mesa-hostmot2/resolver.c
- @@ -321,13 +321,19 @@ void hm2_resolver_process_tram_read(hostmot2_t *hm2, long period) {
- // PROCESS THE REGISTERS, SET THE PINS
- res->accum += (__s32)(hm2->resolver.position_reg[i] - res->old_reg );
- - 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->old_reg > hm2->resolver.position_reg[i]) && (res->old_reg - hm2->resolver.position_reg[i] > 0x80000000)){
- + res->index_cnts++;
- + if (*res->hal.pin.index_enable && (res->index_cnts % res->hal.param.index_div == 1)){
- + res->offset = (res->accum - hm2->resolver.position_reg[i]);
- + *res->hal.pin.index_enable = 0;
- + }
- + }
- + else if ((res->old_reg < hm2->resolver.position_reg[i]) && (hm2->resolver.position_reg[i] - res->old_reg > 0x80000000)){
- + res->index_cnts--;
- + if (*res->hal.pin.index_enable && (res->index_cnts % res->hal.param.index_div == 0)){
- + res->offset = (res->accum - hm2->resolver.position_reg[i] + 0x100000000LL);
- + *res->hal.pin.index_enable = 0;
- }
- }
- commit 91efbf5fe8da8e1d5c023c45a94a3303cf29c27f
- Merge: c3d350d c9513dd
- Author: Andy Pugh <andy@bodgesoc.org>
- Date: Thu Aug 15 21:46:18 2013 +0100
- Merge remote branch 'origin/master' into hm2-resolver-fix-for-master
- commit c3d350dc3a16a941fd629ca308a6018aeaddd972
- Author: Andy Pugh <andy@bodgesoc.org>
- Date: Thu Aug 15 21:45:51 2013 +0100
- Revert "Use a less bogus way to detect "index" with Resolvers."
- This reverts commit 6cae47a25a5a8a06843298d81564d78c077b9f6a.
- diff --git a/src/hal/drivers/mesa-hostmot2/resolver.c b/src/hal/drivers/mesa-hostmot2/resolver.c
- index d652512..fe460e6 100644
- --- a/src/hal/drivers/mesa-hostmot2/resolver.c
- +++ b/src/hal/drivers/mesa-hostmot2/resolver.c
- @@ -312,12 +312,8 @@ void hm2_resolver_process_tram_read(hostmot2_t *hm2, long period) {
- 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]) && (res->old_reg - hm2->resolver.position_reg[i] > 0x80000000)){
- - res->offset = (res->accum - hm2->resolver.position_reg[i]);
- - *res->hal.pin.index_enable = 0;
- - }
- - else if ((res->old_reg < hm2->resolver.position_reg[i]) && (hm2->resolver.position_reg[i] - res->old_reg > 0x80000000)){
- - res->offset = (res->accum - hm2->resolver.position_reg[i] + 0x100000000LL);
- + if ((res->old_reg ^ hm2->resolver.position_reg[i]) & 0x80000000){
- + res->offset = res->accum & 0xFFFFFFFF00000000LL;
- *res->hal.pin.index_enable = 0;
- }
- }
- commit 6cae47a25a5a8a06843298d81564d78c077b9f6a
- Author: Andy Pugh <andy@bodgesoc.org>
- Date: Thu Aug 15 01:04:59 2013 +0100
- Use a less bogus way to detect "index" with Resolvers.
- For example, one that only happens once per rev.
- And fix an off-by-one error in the reverse direction too.
- Signed-off-by: Andy Pugh <andy@bodgesoc.org>
- diff --git a/src/hal/drivers/mesa-hostmot2/resolver.c b/src/hal/drivers/mesa-hostmot2/resolver.c
- index fe460e6..d652512 100644
- --- a/src/hal/drivers/mesa-hostmot2/resolver.c
- +++ b/src/hal/drivers/mesa-hostmot2/resolver.c
- @@ -312,8 +312,12 @@ void hm2_resolver_process_tram_read(hostmot2_t *hm2, long period) {
- 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;
- + if ((res->old_reg > hm2->resolver.position_reg[i]) && (res->old_reg - hm2->resolver.position_reg[i] > 0x80000000)){
- + res->offset = (res->accum - hm2->resolver.position_reg[i]);
- + *res->hal.pin.index_enable = 0;
- + }
- + else if ((res->old_reg < hm2->resolver.position_reg[i]) && (hm2->resolver.position_reg[i] - res->old_reg > 0x80000000)){
- + res->offset = (res->accum - hm2->resolver.position_reg[i] + 0x100000000LL);
- *res->hal.pin.index_enable = 0;
- }
- }
- andypugh@mill:~/linuxcnc-dev$
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement