funktioniert ganz ok

master
Eggert Jung 5 months ago
parent 27550dbfd4
commit 0b87524719

@ -11,12 +11,14 @@ typedef struct {
uint8_t home_pin; uint8_t home_pin;
uint8_t homed:1; uint8_t homed:1;
uint8_t trigger_step:1; uint8_t trigger_step:1;
int16_t pos; int32_t pos;
int16_t speed; int32_t speed;
int16_t ramp_to_speed; int32_t ramp_to_speed;
uint32_t next_step; uint32_t next_step;
} stepper_T; } stepper_T;
#define STEPPERS_MAX_SPEED 300
void Timer1_Init(void); void Timer1_Init(void);
void stepper_gpio_init(); void stepper_gpio_init();
void do_steps(); void do_steps();

@ -22,7 +22,7 @@ TARGET = Parafraktor
# debug build? # debug build?
DEBUG = 1 DEBUG = 1
# optimization # optimization
OPT = -Og OPT = -O0
####################################### #######################################

@ -89,10 +89,10 @@ void do_steps(){
steppers[i].speed--; steppers[i].speed--;
/* limit max speed */ /* limit max speed */
if(steppers[i].speed >= 100) if(steppers[i].speed >= STEPPERS_MAX_SPEED)
steppers[i].speed=100; steppers[i].speed=STEPPERS_MAX_SPEED;
if(steppers[i].speed <= -100) if(steppers[i].speed <= -STEPPERS_MAX_SPEED)
steppers[i].speed=-100; steppers[i].speed=-STEPPERS_MAX_SPEED;
/* get direction from sign */ /* get direction from sign */
if(steppers[i].speed>0) if(steppers[i].speed>0)
@ -122,16 +122,15 @@ void do_steps(){
steppers[i].next_step = timer + 1; steppers[i].next_step = timer + 1;
} }
printf("pos %d\tspeed %d\n", steppers[i].pos, steppers[i].speed); printf("motor[%d]: pos %ld\tspeed %d\n", i, steppers[i].pos, steppers[i].speed);
} }
if(steppers[i].homed){ if(steppers[i].homed){
static uint16_t old_ramp_to_speed; static uint16_t old_ramp_to_speed;
old_ramp_to_speed = steppers[i].ramp_to_speed; old_ramp_to_speed = steppers[i].ramp_to_speed;
uint16_t *p = (uint16_t*)&rxBuffer[1]; int32_t swapped_val = rxBuffer[2*i+1]<<8 | (rxBuffer[2*i+2]&0xFF);
steppers[i].ramp_to_speed = swapped_val - steppers[i].pos;
steppers[i].ramp_to_speed = __builtin_bswap16(*p) - steppers[i].pos;
if(old_ramp_to_speed == 0 && steppers[i].ramp_to_speed != 0) if(old_ramp_to_speed == 0 && steppers[i].ramp_to_speed != 0)
steppers[i].trigger_step = 1; steppers[i].trigger_step = 1;

@ -12,7 +12,7 @@
-IDrivers/SystemView/Config -IDrivers/SystemView/Config
-IDrivers/SystemView/SEGGER -IDrivers/SystemView/SEGGER
-IDrivers/SystemView/SYSVIEW -IDrivers/SystemView/SYSVIEW
-Og -O0
-Wall -Wall
-fdata-sections -fdata-sections
-ffunction-sections -ffunction-sections

Loading…
Cancel
Save