wip
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "eeprom.h"
|
||||
#include "pwm.h"
|
||||
extern UART_HandleTypeDef huart1;
|
||||
/*
|
||||
* Record format (4 bytes):
|
||||
@@ -37,6 +38,7 @@ extern uint16_t m1pwmMan;
|
||||
extern uint16_t m2pwmMan;
|
||||
extern uint16_t m3pwmMan;
|
||||
extern uint16_t m4pwmMan;
|
||||
extern uint16_t mrampstart[];
|
||||
|
||||
|
||||
extern uint16_t apM1start;
|
||||
@@ -432,6 +434,13 @@ void loadEE(void){
|
||||
EEW_Read(M3PWMCH, &m3pwmch);
|
||||
EEW_Read(M4PWMAP, &m4pwmap);
|
||||
EEW_Read(M4PWMCH, &m4pwmch);
|
||||
|
||||
EEW_Read(M1RAMPSTART, &mrampstart[M1-1]);
|
||||
EEW_Read(M2RAMPSTART, &mrampstart[M2-1]);
|
||||
EEW_Read(M3RAMPSTART, &mrampstart[M3-1]);
|
||||
EEW_Read(M4RAMPSTART, &mrampstart[M4-1]);
|
||||
|
||||
|
||||
EEW_Read(M1TIMEOUTMAN, &m1TimeoutMan);
|
||||
EEW_Read(M2TIMEOUTMAN, &m2TimeoutMan);
|
||||
EEW_Read(M3TIMEOUTMAN, &m3TimeoutMan);
|
||||
|
||||
@@ -366,7 +366,7 @@ motMov_st m4ch(void){
|
||||
SetMotPerc(M4,FW,0);
|
||||
SetMotPerc(M4,BW,0);
|
||||
if(rtCiclo>=chM4start){
|
||||
(void)ramp(M4,FW,mrampstart[M4-1],m2pwmch,tramp,RAMPINIT);
|
||||
(void)ramp(M4,FW,mrampstart[M4-1],m4pwmch,tramp,RAMPINIT);
|
||||
m4st=motStartRamp;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
* Author: user
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "stm32f1xx_hal.h"
|
||||
#include "main.h"
|
||||
#include "pwm.h"
|
||||
@@ -14,8 +15,10 @@ extern TIM_HandleTypeDef htim1;
|
||||
extern TIM_HandleTypeDef htim2;
|
||||
extern TIM_HandleTypeDef htim3;
|
||||
extern TIM_HandleTypeDef htim4;
|
||||
extern volatile uint8_t rtramp[4];
|
||||
extern uint8_t mrampstart[4];
|
||||
extern volatile uint16_t rtramp[4];
|
||||
extern uint16_t mrampstart[4];
|
||||
extern UART_HandleTypeDef huart1;
|
||||
|
||||
bool IsPwmRunning(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||
{
|
||||
HAL_TIM_ChannelStateTypeDef chState = HAL_TIM_GetChannelState(htim, Channel);
|
||||
@@ -246,27 +249,30 @@ void SetMotPerc(uint8_t mot,uint8_t dir,uint8_t perc){
|
||||
|
||||
uint8_t ramp(uint8_t mot,uint8_t dir,uint8_t percStart,uint8_t percEnd,uint8_t tr,uint8_t mode){
|
||||
static uint8_t memrtramp[4];
|
||||
// char s[10];
|
||||
uint16_t delta;
|
||||
switch(mode){
|
||||
case RAMPINIT:
|
||||
memrtramp[mot-1]=percStart=tr;
|
||||
SetMotPerc(mot,dir,mrampstart[mot-1]);
|
||||
memrtramp[mot-1]=rtramp[mot-1]=tr;
|
||||
SetMotPerc(mot,dir,percStart);
|
||||
return DONE;
|
||||
case RAMPRUN:
|
||||
if(memrtramp[mot-1]!=rtramp[mot-1]){
|
||||
memrtramp[mot-1]=rtramp[mot-1];
|
||||
if(rtramp[mot-1]){
|
||||
if(mrampstart[mot-1]>percEnd){
|
||||
delta=mrampstart[mot-1]-percEnd;
|
||||
if(percStart>percEnd){
|
||||
delta=percStart-percEnd;
|
||||
delta=delta*(uint16_t)(tr-rtramp[mot-1]);
|
||||
delta=delta/tr;
|
||||
SetMotPerc(mot,dir,mrampstart[mot-1]-delta);
|
||||
SetMotPerc(mot,dir,percStart-delta);
|
||||
return RUNNING;
|
||||
}else if(mrampstart[mot-1]<percEnd){
|
||||
delta=percEnd-mrampstart[mot-1];
|
||||
}else if(percStart<percEnd){
|
||||
delta=percEnd-percStart;
|
||||
delta=delta*(uint16_t)(tr-rtramp[mot-1]);
|
||||
delta=delta/tr;
|
||||
SetMotPerc(mot,dir,mrampstart[mot-1]+delta);
|
||||
SetMotPerc(mot,dir,percStart+delta);
|
||||
// sprintf((char*)s,"\n%d",percStart+delta);
|
||||
// HAL_UART_Transmit(&huart1,(uint8_t*) s, strlen(s), HAL_MAX_DELAY);
|
||||
return RUNNING;
|
||||
}else{
|
||||
SetMotPerc(mot,dir,percEnd);
|
||||
|
||||
Reference in New Issue
Block a user