summaryrefslogtreecommitdiff
path: root/tube-rotator/stepper.c
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2014-05-21 22:54:19 +0200
committerChristian Pointner <equinox@spreadspace.org>2014-05-21 22:54:19 +0200
commit2b39db60e0a948e5109e345ad601f511d88d63db (patch)
tree226f5d01eca453582d74c01b2f88ab9353631325 /tube-rotator/stepper.c
parentimproved acceleration (diff)
reimplemented rpm based speed setting
Diffstat (limited to 'tube-rotator/stepper.c')
-rw-r--r--tube-rotator/stepper.c46
1 files changed, 23 insertions, 23 deletions
diff --git a/tube-rotator/stepper.c b/tube-rotator/stepper.c
index ee8518f..8b718ae 100644
--- a/tube-rotator/stepper.c
+++ b/tube-rotator/stepper.c
@@ -93,9 +93,9 @@ static inline void stepper_handle(void)
if(step_idx != 0 && step_idx % 8) {
if(current_speed > target_speed)
- OCR1A = (uint16_t)(STEPPER_SPEED_CONVERT_VALUE/(--current_speed));
+ OCR1A = (uint16_t)((STEPPER_SPEED_CONVERT_VALUE/(--current_speed)) - 1);
else if(current_speed < target_speed)
- OCR1A = (uint16_t)(STEPPER_SPEED_CONVERT_VALUE/(++current_speed));
+ OCR1A = (uint16_t)((STEPPER_SPEED_CONVERT_VALUE/(++current_speed)) - 1);
}
}
@@ -146,24 +146,24 @@ uint16_t stepper_get_speed(void)
return target_speed;
}
-/* void stepper_set_speed_rpm(uint8_t new_rpm) */
-/* { */
-/* stepper_set_speed(( (uint16_t)lround( (double)(60.0 * F_CPU) / (double)(64.0 * 800.0 * (double)new_rpm) ) ) - 1); */
-/* } */
-
-/* uint8_t stepper_get_speed_rpm(void) */
-/* { */
-/* return (uint8_t)lround( ( (double)F_CPU / (double)(64.0 * 800.0 * (double)(target_speed + 1) ) ) * 60.0 ); */
-/* } */
-
-/* void stepper_inc_speed_rpm(void) */
-/* { */
-/* uint8_t rpm = stepper_get_speed_rpm(); */
-/* stepper_set_speed_rpm((rpm >= 255) ? 255 : rpm+1); */
-/* } */
-
-/* void stepper_dec_speed_rpm(void) */
-/* { */
-/* uint8_t rpm = stepper_get_speed_rpm(); */
-/* stepper_set_speed_rpm((rpm <= 1) ? 1 : rpm-1); */
-/* } */
+void stepper_set_speed_rpm(uint8_t new_rpm)
+{
+ stepper_set_speed( (uint16_t)lround( ( (double)(64.0 * 800.0 * (double)STEPPER_SPEED_CONVERT_VALUE) / (double)(60.0 * (double)F_CPU) ) * (double)new_rpm) );
+}
+
+uint8_t stepper_get_speed_rpm(void)
+{
+ return (uint8_t)lround( ( (double)(60.0 * (double)F_CPU) / (double)(64.0 * 800.0 * (double)STEPPER_SPEED_CONVERT_VALUE) ) * (double)(target_speed) );
+}
+
+void stepper_inc_speed_rpm(void)
+{
+ uint8_t rpm = stepper_get_speed_rpm();
+ stepper_set_speed_rpm((rpm >= 255) ? 255 : rpm+1);
+}
+
+void stepper_dec_speed_rpm(void)
+{
+ uint8_t rpm = stepper_get_speed_rpm();
+ stepper_set_speed_rpm((rpm <= 1) ? 1 : rpm-1);
+}