Skip to content

Commit

Permalink
Made syncadv direction dependent, Removed unused parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
jsphuebner committed Nov 7, 2019
1 parent 71ac7ed commit de76838
Show file tree
Hide file tree
Showing 8 changed files with 894 additions and 24 deletions.
2 changes: 1 addition & 1 deletion include/hwdefs.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@
#define CANMAP_ADDRESS 0x0801F800

#define REV_CNT_IC hwRev == HW_REV1 ? TIM_IC3 : TIM_IC1
#define REV_CNT_OC hwRev == HW_REV1 ? TIM_OC3 : TIM_OC1
#define REV_CNT_CCR hwRev == HW_REV1 ? TIM3_CCR3 : TIM3_CCR1
#define REV_CNT_CCR_PTR hwRev == HW_REV1 ? (uint32_t)&TIM3_CCR3 : (uint32_t)&TIM3_CCR1
#define REV_CNT_CCER hwRev == HW_REV1 ? TIM_CCER_CC3P : TIM_CCER_CC1P
#define REV_CNT_SR hwRev == HW_REV1 ? TIM_SR_CC3IF : TIM_SR_CC1IF
#define REV_CNT_DMAEN hwRev == HW_REV1 ? TIM_DIER_CC3DE : TIM_DIER_CC1DE
#define REV_CNT_DMACHAN hwRev == HW_REV1 ? DMA_CHANNEL2 : DMA_CHANNEL6
Expand Down
1 change: 0 additions & 1 deletion include/inc_encoder.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ class Encoder
static uint16_t DecodeAngle(bool invert);
static int GetPulseTimeFiltered();
static void GetMinMaxTime(uint32_t& min, uint32_t& max);
static void DMASetup();
};

#endif // INC_ENCODER_H_INCLUDED
5 changes: 1 addition & 4 deletions include/param_prj.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#define VER 4.62.R
#define VER 4.64.R

/* Entries must be ordered as follows:
1. Saveable parameters (id != 0)
Expand Down Expand Up @@ -158,8 +158,6 @@
PARAM_ENTRY(CAT_MOTOR, dofsramp, "", 0, 10000, 1000, 117 ) \
PARAM_ENTRY(CAT_MOTOR, frqfac, "dig/Hz", -10000, 10000, 10, 116 ) \
PARAM_ENTRY(CAT_MOTOR, dmargin, "Hz", -10000, 0, -1000, 113 ) \
PARAM_ENTRY(CAT_MOTOR, fweak, "Hz", 0, 1000, 90, 2 ) \
PARAM_ENTRY(CAT_MOTOR, idweak, "A/Hz", -2, 2, 0, 112 ) \
PARAM_ENTRY(CAT_MOTOR, polepairs, "", 1, 16, 2, 32 ) \
PARAM_ENTRY(CAT_MOTOR, respolepairs,"", 1, 16, 1, 93 ) \
PARAM_ENTRY(CAT_MOTOR, encmode, ENCMODES, 0, 5, 0, 75 ) \
Expand All @@ -185,7 +183,6 @@
PARAM_ENTRY(CAT_DERATE, bmslimlow, "%", -100, 0, -1, 56 ) \
PARAM_ENTRY(CAT_DERATE, udcmin, "V", 0, 1000, 450, 42 ) \
PARAM_ENTRY(CAT_DERATE, udcmax, "V", 0, 1000, 520, 43 ) \
PARAM_ENTRY(CAT_DERATE, iacmax, "A", 0, 5000, 5000, 89 ) \
PARAM_ENTRY(CAT_DERATE, idcmax, "A", 0, 5000, 5000, 96 ) \
PARAM_ENTRY(CAT_DERATE, idcmin, "A", -5000, 0, -5000, 98 ) \
PARAM_ENTRY(CAT_DERATE, throtmax, "%", 0, 100, 100, 97 ) \
Expand Down
2 changes: 1 addition & 1 deletion libopeninv
28 changes: 12 additions & 16 deletions src/inc_encoder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -327,19 +327,6 @@ u32fp Encoder::CalcFrequencyFromAngleDifference(uint16_t angle)
return frq;
}

void Encoder::DMASetup()
{
dma_disable_channel(DMA1, REV_CNT_DMACHAN);
dma_set_peripheral_address(DMA1, REV_CNT_DMACHAN, REV_CNT_CCR_PTR);
dma_set_memory_address(DMA1, REV_CNT_DMACHAN, (uint32_t)timdata);
dma_set_peripheral_size(DMA1, REV_CNT_DMACHAN, DMA_CCR_PSIZE_16BIT);
dma_set_memory_size(DMA1, REV_CNT_DMACHAN, DMA_CCR_MSIZE_16BIT);
dma_set_number_of_data(DMA1, REV_CNT_DMACHAN, MAX_REVCNT_VALUES);
dma_enable_memory_increment_mode(DMA1, REV_CNT_DMACHAN);
dma_enable_circular_mode(DMA1, REV_CNT_DMACHAN);
dma_enable_channel(DMA1, REV_CNT_DMACHAN);
}

void Encoder::InitTimerSingleChannelMode()
{
const ENCODER_CONFIG* currentConfig = &encoderConfigurations[0];
Expand Down Expand Up @@ -391,7 +378,7 @@ void Encoder::InitTimerSingleChannelMode()
/* Save timer value on input pulse with smaller filter constant */
timer_ic_set_filter(REV_CNT_TIMER, REV_CNT_IC, selectedConfig->captureFilter);
timer_ic_set_input(REV_CNT_TIMER, REV_CNT_IC, TIM_IC_IN_TI1);
TIM_CCER(REV_CNT_TIMER) |= REV_CNT_CCER; //No API function yet available
timer_set_oc_polarity_high(REV_CNT_TIMER, REV_CNT_OC);
timer_ic_enable(REV_CNT_TIMER, REV_CNT_IC);

timer_enable_irq(REV_CNT_TIMER, REV_CNT_DMAEN);
Expand All @@ -401,8 +388,17 @@ void Encoder::InitTimerSingleChannelMode()
timer_enable_counter(REV_CNT_TIMER);
gpio_set_mode(NORTH_EXC_PORT, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, NORTH_EXC_PIN);
gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO6 | GPIO7);
DMASetup();
exti_disable_request(EXTI2);
exti_disable_request(NORTH_EXC_EXTI);

dma_disable_channel(DMA1, REV_CNT_DMACHAN);
dma_set_peripheral_address(DMA1, REV_CNT_DMACHAN, REV_CNT_CCR_PTR);
dma_set_memory_address(DMA1, REV_CNT_DMACHAN, (uint32_t)timdata);
dma_set_peripheral_size(DMA1, REV_CNT_DMACHAN, DMA_CCR_PSIZE_16BIT);
dma_set_memory_size(DMA1, REV_CNT_DMACHAN, DMA_CCR_MSIZE_16BIT);
dma_set_number_of_data(DMA1, REV_CNT_DMACHAN, MAX_REVCNT_VALUES);
dma_enable_memory_increment_mode(DMA1, REV_CNT_DMACHAN);
dma_enable_circular_mode(DMA1, REV_CNT_DMACHAN);
dma_enable_channel(DMA1, REV_CNT_DMACHAN);
}

void Encoder::InitSPIMode()
Expand Down
2 changes: 1 addition & 1 deletion src/pwmgeneration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ void PwmGeneration::CalcNextAngleSync(int dir)
uint16_t rotorAngle = Encoder::GetRotorAngle();

#if CONTROL == CTRL_FOC
syncOfs += FP_TOINT(frq * Param::GetInt(Param::syncadv));
syncOfs += FP_TOINT(dir * frq * Param::GetInt(Param::syncadv));
#endif // CONTROL

angle = polePairs * rotorAngle + syncOfs;
Expand Down
Loading

0 comments on commit de76838

Please sign in to comment.