Advertisement
Guest User

Untitled

a guest
Aug 15th, 2013
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.48 KB | None | 0 0
  1. andypugh@mill:~/linuxcnc-dev$ git push --dry-run origin master
  2. To ssh://andypugh@git.linuxcnc.org/git/linuxcnc.git
  3. c9513dd..492421b master -> master
  4. andypugh@mill:~/linuxcnc-dev$ git log -p c9513dd..492421b
  5. commit 492421b6c01eaafa08d16fa126d4ec591fe2b104
  6. Author: Andy Pugh <andy@bodgesoc.org>
  7. Date: Thu Aug 15 21:50:41 2013 +0100
  8.  
  9. Improve the handling of multi-turn resolvers in the hm2 driver.
  10. You now get the same zero registered as an index in both directions,
  11. and you need to pass the zero in the same direction the requisite number of times.
  12.  
  13.  
  14. Signed-off-by: Andy Pugh <andy@bodgesoc.org>
  15.  
  16. diff --git a/src/hal/drivers/mesa-hostmot2/resolver.c b/src/hal/drivers/mesa-hostmot2/resolver.c
  17. index f678c62..3fca0a1 100644
  18. --- a/src/hal/drivers/mesa-hostmot2/resolver.c
  19. +++ b/src/hal/drivers/mesa-hostmot2/resolver.c
  20. @@ -321,13 +321,19 @@ void hm2_resolver_process_tram_read(hostmot2_t *hm2, long period) {
  21. // PROCESS THE REGISTERS, SET THE PINS
  22.  
  23. res->accum += (__s32)(hm2->resolver.position_reg[i] - res->old_reg );
  24. - if ((res->old_reg ^ hm2->resolver.position_reg[i]) & 0x80000000){
  25. - if (++(res->index_cnts) >= res->hal.param.index_div){
  26. - res->index_cnts = 0;
  27. - if (*res->hal.pin.index_enable){
  28. - res->offset = res->accum & 0xFFFFFFFF00000000LL;
  29. - *res->hal.pin.index_enable = 0;
  30. - }
  31. +
  32. + if ((res->old_reg > hm2->resolver.position_reg[i]) && (res->old_reg - hm2->resolver.position_reg[i] > 0x80000000)){
  33. + res->index_cnts++;
  34. + if (*res->hal.pin.index_enable && (res->index_cnts % res->hal.param.index_div == 1)){
  35. + res->offset = (res->accum - hm2->resolver.position_reg[i]);
  36. + *res->hal.pin.index_enable = 0;
  37. + }
  38. + }
  39. + else if ((res->old_reg < hm2->resolver.position_reg[i]) && (hm2->resolver.position_reg[i] - res->old_reg > 0x80000000)){
  40. + res->index_cnts--;
  41. + if (*res->hal.pin.index_enable && (res->index_cnts % res->hal.param.index_div == 0)){
  42. + res->offset = (res->accum - hm2->resolver.position_reg[i] + 0x100000000LL);
  43. + *res->hal.pin.index_enable = 0;
  44. }
  45. }
  46.  
  47.  
  48. commit 91efbf5fe8da8e1d5c023c45a94a3303cf29c27f
  49. Merge: c3d350d c9513dd
  50. Author: Andy Pugh <andy@bodgesoc.org>
  51. Date: Thu Aug 15 21:46:18 2013 +0100
  52.  
  53. Merge remote branch 'origin/master' into hm2-resolver-fix-for-master
  54.  
  55. commit c3d350dc3a16a941fd629ca308a6018aeaddd972
  56. Author: Andy Pugh <andy@bodgesoc.org>
  57. Date: Thu Aug 15 21:45:51 2013 +0100
  58.  
  59. Revert "Use a less bogus way to detect "index" with Resolvers."
  60.  
  61. This reverts commit 6cae47a25a5a8a06843298d81564d78c077b9f6a.
  62.  
  63. diff --git a/src/hal/drivers/mesa-hostmot2/resolver.c b/src/hal/drivers/mesa-hostmot2/resolver.c
  64. index d652512..fe460e6 100644
  65. --- a/src/hal/drivers/mesa-hostmot2/resolver.c
  66. +++ b/src/hal/drivers/mesa-hostmot2/resolver.c
  67. @@ -312,12 +312,8 @@ void hm2_resolver_process_tram_read(hostmot2_t *hm2, long period) {
  68.  
  69. res->accum += (__s32)(hm2->resolver.position_reg[i] - res->old_reg );
  70. if (*res->hal.pin.index_enable){
  71. - if ((res->old_reg > hm2->resolver.position_reg[i]) && (res->old_reg - hm2->resolver.position_reg[i] > 0x80000000)){
  72. - res->offset = (res->accum - hm2->resolver.position_reg[i]);
  73. - *res->hal.pin.index_enable = 0;
  74. - }
  75. - else if ((res->old_reg < hm2->resolver.position_reg[i]) && (hm2->resolver.position_reg[i] - res->old_reg > 0x80000000)){
  76. - res->offset = (res->accum - hm2->resolver.position_reg[i] + 0x100000000LL);
  77. + if ((res->old_reg ^ hm2->resolver.position_reg[i]) & 0x80000000){
  78. + res->offset = res->accum & 0xFFFFFFFF00000000LL;
  79. *res->hal.pin.index_enable = 0;
  80. }
  81. }
  82.  
  83. commit 6cae47a25a5a8a06843298d81564d78c077b9f6a
  84. Author: Andy Pugh <andy@bodgesoc.org>
  85. Date: Thu Aug 15 01:04:59 2013 +0100
  86.  
  87. Use a less bogus way to detect "index" with Resolvers.
  88. For example, one that only happens once per rev.
  89. And fix an off-by-one error in the reverse direction too.
  90.  
  91.  
  92. Signed-off-by: Andy Pugh <andy@bodgesoc.org>
  93.  
  94. diff --git a/src/hal/drivers/mesa-hostmot2/resolver.c b/src/hal/drivers/mesa-hostmot2/resolver.c
  95. index fe460e6..d652512 100644
  96. --- a/src/hal/drivers/mesa-hostmot2/resolver.c
  97. +++ b/src/hal/drivers/mesa-hostmot2/resolver.c
  98. @@ -312,8 +312,12 @@ void hm2_resolver_process_tram_read(hostmot2_t *hm2, long period) {
  99.  
  100. res->accum += (__s32)(hm2->resolver.position_reg[i] - res->old_reg );
  101. if (*res->hal.pin.index_enable){
  102. - if ((res->old_reg ^ hm2->resolver.position_reg[i]) & 0x80000000){
  103. - res->offset = res->accum & 0xFFFFFFFF00000000LL;
  104. + if ((res->old_reg > hm2->resolver.position_reg[i]) && (res->old_reg - hm2->resolver.position_reg[i] > 0x80000000)){
  105. + res->offset = (res->accum - hm2->resolver.position_reg[i]);
  106. + *res->hal.pin.index_enable = 0;
  107. + }
  108. + else if ((res->old_reg < hm2->resolver.position_reg[i]) && (hm2->resolver.position_reg[i] - res->old_reg > 0x80000000)){
  109. + res->offset = (res->accum - hm2->resolver.position_reg[i] + 0x100000000LL);
  110. *res->hal.pin.index_enable = 0;
  111. }
  112. }
  113. andypugh@mill:~/linuxcnc-dev$
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement