新增完整正交采集 仅TIM2 TIM3 TIM4支持
This commit is contained in:
SEEKFREE_BUDING
2024-02-02 11:55:53 +08:00
parent 0853c2d607
commit b108ee9187
32 changed files with 1232 additions and 240 deletions

View File

@@ -1,3 +1,5 @@
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -37,6 +37,8 @@
#include "zf_common_debug.h"
#include "zf_driver_encoder.h"
static uint8 encoder_mode[TIM6_ENCODER + 1] = {0};
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
@@ -131,6 +133,12 @@ int16 encoder_get_count (encoder_index_enum encoder_n)
case TIM6_ENCODER: encoder_data = (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120); break;
default: encoder_data = 0;
}
if(0 == encoder_mode[encoder_n])
{
encoder_data = encoder_data / 4;
}
return encoder_data;
}
//-------------------------------------------------------------------------------------------------------------------
@@ -161,7 +169,71 @@ void encoder_clear_count (encoder_index_enum encoder_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD><EFBFBD>ΪAͨ<41><CDA8> P00_8<5F><38><EFBFBD><EFBFBD>ΪBͨ<42><CDA8>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
encoder_mapping_set(encoder_n, ch1_pin, ch2_pin);
switch(encoder_n)
{
case TIM2_ENCODER:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T2_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T2_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM3_ENCODER:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T3_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T3_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM4_ENCODER:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T4_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T4_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM5_ENCODER:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T5_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T5_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM6_ENCODER:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T6_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
encoder_mode[encoder_n] = 0;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
@@ -210,19 +282,7 @@ void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum coun
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
encoder_quad_init(encoder_n, ch1_pin, ch2_pin);
encoder_mode[encoder_n] = 1;
}

View File

@@ -1,3 +1,5 @@
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -37,6 +37,8 @@
#include "zf_common_debug.h"
#include "zf_driver_encoder.h"
static uint8 encoder_mode[TIM6_ENCODER + 1] = {0};
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
@@ -131,6 +133,12 @@ int16 encoder_get_count (encoder_index_enum encoder_n)
case TIM6_ENCODER: encoder_data = (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120); break;
default: encoder_data = 0;
}
if(0 == encoder_mode[encoder_n])
{
encoder_data = encoder_data / 4;
}
return encoder_data;
}
//-------------------------------------------------------------------------------------------------------------------
@@ -161,7 +169,71 @@ void encoder_clear_count (encoder_index_enum encoder_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD><EFBFBD>ΪAͨ<41><CDA8> P00_8<5F><38><EFBFBD><EFBFBD>ΪBͨ<42><CDA8>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
encoder_mapping_set(encoder_n, ch1_pin, ch2_pin);
switch(encoder_n)
{
case TIM2_ENCODER:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T2_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T2_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM3_ENCODER:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T3_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T3_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM4_ENCODER:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T4_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T4_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM5_ENCODER:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T5_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T5_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM6_ENCODER:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T6_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
encoder_mode[encoder_n] = 0;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
@@ -210,19 +282,7 @@ void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum coun
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
encoder_quad_init(encoder_n, ch1_pin, ch2_pin);
encoder_mode[encoder_n] = 1;
}

View File

@@ -1,3 +1,5 @@
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -37,6 +37,8 @@
#include "zf_common_debug.h"
#include "zf_driver_encoder.h"
static uint8 encoder_mode[TIM6_ENCODER + 1] = {0};
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
@@ -131,6 +133,12 @@ int16 encoder_get_count (encoder_index_enum encoder_n)
case TIM6_ENCODER: encoder_data = (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120); break;
default: encoder_data = 0;
}
if(0 == encoder_mode[encoder_n])
{
encoder_data = encoder_data / 4;
}
return encoder_data;
}
//-------------------------------------------------------------------------------------------------------------------
@@ -161,7 +169,71 @@ void encoder_clear_count (encoder_index_enum encoder_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD><EFBFBD>ΪAͨ<41><CDA8> P00_8<5F><38><EFBFBD><EFBFBD>ΪBͨ<42><CDA8>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
encoder_mapping_set(encoder_n, ch1_pin, ch2_pin);
switch(encoder_n)
{
case TIM2_ENCODER:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T2_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T2_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM3_ENCODER:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T3_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T3_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM4_ENCODER:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T4_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T4_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM5_ENCODER:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T5_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T5_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM6_ENCODER:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T6_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
encoder_mode[encoder_n] = 0;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
@@ -210,19 +282,7 @@ void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum coun
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
encoder_quad_init(encoder_n, ch1_pin, ch2_pin);
encoder_mode[encoder_n] = 1;
}

View File

@@ -1,3 +1,5 @@
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -37,6 +37,8 @@
#include "zf_common_debug.h"
#include "zf_driver_encoder.h"
static uint8 encoder_mode[TIM6_ENCODER + 1] = {0};
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
@@ -131,6 +133,12 @@ int16 encoder_get_count (encoder_index_enum encoder_n)
case TIM6_ENCODER: encoder_data = (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120); break;
default: encoder_data = 0;
}
if(0 == encoder_mode[encoder_n])
{
encoder_data = encoder_data / 4;
}
return encoder_data;
}
//-------------------------------------------------------------------------------------------------------------------
@@ -161,7 +169,71 @@ void encoder_clear_count (encoder_index_enum encoder_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD><EFBFBD>ΪAͨ<41><CDA8> P00_8<5F><38><EFBFBD><EFBFBD>ΪBͨ<42><CDA8>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
encoder_mapping_set(encoder_n, ch1_pin, ch2_pin);
switch(encoder_n)
{
case TIM2_ENCODER:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T2_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T2_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM3_ENCODER:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T3_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T3_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM4_ENCODER:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T4_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T4_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM5_ENCODER:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T5_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T5_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM6_ENCODER:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T6_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
encoder_mode[encoder_n] = 0;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
@@ -210,19 +282,7 @@ void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum coun
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
encoder_quad_init(encoder_n, ch1_pin, ch2_pin);
encoder_mode[encoder_n] = 1;
}

View File

@@ -1,3 +1,5 @@
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -37,6 +37,8 @@
#include "zf_common_debug.h"
#include "zf_driver_encoder.h"
static uint8 encoder_mode[TIM6_ENCODER + 1] = {0};
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
@@ -131,6 +133,12 @@ int16 encoder_get_count (encoder_index_enum encoder_n)
case TIM6_ENCODER: encoder_data = (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120); break;
default: encoder_data = 0;
}
if(0 == encoder_mode[encoder_n])
{
encoder_data = encoder_data / 4;
}
return encoder_data;
}
//-------------------------------------------------------------------------------------------------------------------
@@ -161,7 +169,71 @@ void encoder_clear_count (encoder_index_enum encoder_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD><EFBFBD>ΪAͨ<41><CDA8> P00_8<5F><38><EFBFBD><EFBFBD>ΪBͨ<42><CDA8>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
encoder_mapping_set(encoder_n, ch1_pin, ch2_pin);
switch(encoder_n)
{
case TIM2_ENCODER:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T2_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T2_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM3_ENCODER:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T3_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T3_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM4_ENCODER:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T4_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T4_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM5_ENCODER:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T5_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T5_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM6_ENCODER:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T6_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
encoder_mode[encoder_n] = 0;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
@@ -210,19 +282,7 @@ void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum coun
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
encoder_quad_init(encoder_n, ch1_pin, ch2_pin);
encoder_mode[encoder_n] = 1;
}

View File

@@ -1,3 +1,5 @@
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -37,6 +37,8 @@
#include "zf_common_debug.h"
#include "zf_driver_encoder.h"
static uint8 encoder_mode[TIM6_ENCODER + 1] = {0};
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
@@ -131,6 +133,12 @@ int16 encoder_get_count (encoder_index_enum encoder_n)
case TIM6_ENCODER: encoder_data = (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120); break;
default: encoder_data = 0;
}
if(0 == encoder_mode[encoder_n])
{
encoder_data = encoder_data / 4;
}
return encoder_data;
}
//-------------------------------------------------------------------------------------------------------------------
@@ -161,7 +169,71 @@ void encoder_clear_count (encoder_index_enum encoder_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD><EFBFBD>ΪAͨ<41><CDA8> P00_8<5F><38><EFBFBD><EFBFBD>ΪBͨ<42><CDA8>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
encoder_mapping_set(encoder_n, ch1_pin, ch2_pin);
switch(encoder_n)
{
case TIM2_ENCODER:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T2_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T2_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM3_ENCODER:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T3_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T3_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM4_ENCODER:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T4_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T4_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM5_ENCODER:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T5_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T5_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM6_ENCODER:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T6_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
encoder_mode[encoder_n] = 0;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
@@ -210,19 +282,7 @@ void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum coun
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
encoder_quad_init(encoder_n, ch1_pin, ch2_pin);
encoder_mode[encoder_n] = 1;
}

View File

@@ -1,3 +1,5 @@
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -37,6 +37,8 @@
#include "zf_common_debug.h"
#include "zf_driver_encoder.h"
static uint8 encoder_mode[TIM6_ENCODER + 1] = {0};
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
@@ -131,6 +133,12 @@ int16 encoder_get_count (encoder_index_enum encoder_n)
case TIM6_ENCODER: encoder_data = (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120); break;
default: encoder_data = 0;
}
if(0 == encoder_mode[encoder_n])
{
encoder_data = encoder_data / 4;
}
return encoder_data;
}
//-------------------------------------------------------------------------------------------------------------------
@@ -161,7 +169,71 @@ void encoder_clear_count (encoder_index_enum encoder_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD><EFBFBD>ΪAͨ<41><CDA8> P00_8<5F><38><EFBFBD><EFBFBD>ΪBͨ<42><CDA8>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
encoder_mapping_set(encoder_n, ch1_pin, ch2_pin);
switch(encoder_n)
{
case TIM2_ENCODER:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T2_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T2_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM3_ENCODER:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T3_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T3_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM4_ENCODER:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T4_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T4_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM5_ENCODER:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T5_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T5_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM6_ENCODER:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T6_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
encoder_mode[encoder_n] = 0;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
@@ -210,19 +282,7 @@ void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum coun
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
encoder_quad_init(encoder_n, ch1_pin, ch2_pin);
encoder_mode[encoder_n] = 1;
}

View File

@@ -1,3 +1,5 @@
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -37,6 +37,8 @@
#include "zf_common_debug.h"
#include "zf_driver_encoder.h"
static uint8 encoder_mode[TIM6_ENCODER + 1] = {0};
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
@@ -131,6 +133,12 @@ int16 encoder_get_count (encoder_index_enum encoder_n)
case TIM6_ENCODER: encoder_data = (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120); break;
default: encoder_data = 0;
}
if(0 == encoder_mode[encoder_n])
{
encoder_data = encoder_data / 4;
}
return encoder_data;
}
//-------------------------------------------------------------------------------------------------------------------
@@ -161,7 +169,71 @@ void encoder_clear_count (encoder_index_enum encoder_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD><EFBFBD>ΪAͨ<41><CDA8> P00_8<5F><38><EFBFBD><EFBFBD>ΪBͨ<42><CDA8>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
encoder_mapping_set(encoder_n, ch1_pin, ch2_pin);
switch(encoder_n)
{
case TIM2_ENCODER:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T2_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T2_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM3_ENCODER:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T3_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T3_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM4_ENCODER:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T4_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T4_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM5_ENCODER:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T5_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T5_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM6_ENCODER:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T6_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
encoder_mode[encoder_n] = 0;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
@@ -210,19 +282,7 @@ void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum coun
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
encoder_quad_init(encoder_n, ch1_pin, ch2_pin);
encoder_mode[encoder_n] = 1;
}

View File

@@ -1,3 +1,5 @@
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -37,6 +37,8 @@
#include "zf_common_debug.h"
#include "zf_driver_encoder.h"
static uint8 encoder_mode[TIM6_ENCODER + 1] = {0};
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
@@ -131,6 +133,12 @@ int16 encoder_get_count (encoder_index_enum encoder_n)
case TIM6_ENCODER: encoder_data = (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120); break;
default: encoder_data = 0;
}
if(0 == encoder_mode[encoder_n])
{
encoder_data = encoder_data / 4;
}
return encoder_data;
}
//-------------------------------------------------------------------------------------------------------------------
@@ -161,7 +169,71 @@ void encoder_clear_count (encoder_index_enum encoder_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD><EFBFBD>ΪAͨ<41><CDA8> P00_8<5F><38><EFBFBD><EFBFBD>ΪBͨ<42><CDA8>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
encoder_mapping_set(encoder_n, ch1_pin, ch2_pin);
switch(encoder_n)
{
case TIM2_ENCODER:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T2_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T2_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM3_ENCODER:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T3_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T3_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM4_ENCODER:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T4_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T4_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM5_ENCODER:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T5_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T5_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM6_ENCODER:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T6_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
encoder_mode[encoder_n] = 0;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
@@ -210,19 +282,7 @@ void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum coun
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
encoder_quad_init(encoder_n, ch1_pin, ch2_pin);
encoder_mode[encoder_n] = 1;
}

View File

@@ -1,3 +1,5 @@
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -37,6 +37,8 @@
#include "zf_common_debug.h"
#include "zf_driver_encoder.h"
static uint8 encoder_mode[TIM6_ENCODER + 1] = {0};
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
@@ -131,6 +133,12 @@ int16 encoder_get_count (encoder_index_enum encoder_n)
case TIM6_ENCODER: encoder_data = (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120); break;
default: encoder_data = 0;
}
if(0 == encoder_mode[encoder_n])
{
encoder_data = encoder_data / 4;
}
return encoder_data;
}
//-------------------------------------------------------------------------------------------------------------------
@@ -161,7 +169,71 @@ void encoder_clear_count (encoder_index_enum encoder_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD><EFBFBD>ΪAͨ<41><CDA8> P00_8<5F><38><EFBFBD><EFBFBD>ΪBͨ<42><CDA8>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
encoder_mapping_set(encoder_n, ch1_pin, ch2_pin);
switch(encoder_n)
{
case TIM2_ENCODER:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T2_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T2_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM3_ENCODER:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T3_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T3_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM4_ENCODER:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T4_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T4_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM5_ENCODER:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T5_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T5_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM6_ENCODER:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T6_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
encoder_mode[encoder_n] = 0;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
@@ -210,19 +282,7 @@ void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum coun
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
encoder_quad_init(encoder_n, ch1_pin, ch2_pin);
encoder_mode[encoder_n] = 1;
}

View File

@@ -1,3 +1,5 @@
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -37,6 +37,8 @@
#include "zf_common_debug.h"
#include "zf_driver_encoder.h"
static uint8 encoder_mode[TIM6_ENCODER + 1] = {0};
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
@@ -131,6 +133,12 @@ int16 encoder_get_count (encoder_index_enum encoder_n)
case TIM6_ENCODER: encoder_data = (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120); break;
default: encoder_data = 0;
}
if(0 == encoder_mode[encoder_n])
{
encoder_data = encoder_data / 4;
}
return encoder_data;
}
//-------------------------------------------------------------------------------------------------------------------
@@ -161,7 +169,71 @@ void encoder_clear_count (encoder_index_enum encoder_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD><EFBFBD>ΪAͨ<41><CDA8> P00_8<5F><38><EFBFBD><EFBFBD>ΪBͨ<42><CDA8>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
encoder_mapping_set(encoder_n, ch1_pin, ch2_pin);
switch(encoder_n)
{
case TIM2_ENCODER:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T2_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T2_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM3_ENCODER:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T3_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T3_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM4_ENCODER:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T4_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T4_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM5_ENCODER:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T5_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T5_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM6_ENCODER:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T6_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
encoder_mode[encoder_n] = 0;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
@@ -210,19 +282,7 @@ void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum coun
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
encoder_quad_init(encoder_n, ch1_pin, ch2_pin);
encoder_mode[encoder_n] = 1;
}

View File

@@ -1,3 +1,5 @@
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -37,6 +37,8 @@
#include "zf_common_debug.h"
#include "zf_driver_encoder.h"
static uint8 encoder_mode[TIM6_ENCODER + 1] = {0};
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
@@ -131,6 +133,12 @@ int16 encoder_get_count (encoder_index_enum encoder_n)
case TIM6_ENCODER: encoder_data = (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120); break;
default: encoder_data = 0;
}
if(0 == encoder_mode[encoder_n])
{
encoder_data = encoder_data / 4;
}
return encoder_data;
}
//-------------------------------------------------------------------------------------------------------------------
@@ -161,7 +169,71 @@ void encoder_clear_count (encoder_index_enum encoder_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD><EFBFBD>ΪAͨ<41><CDA8> P00_8<5F><38><EFBFBD><EFBFBD>ΪBͨ<42><CDA8>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
encoder_mapping_set(encoder_n, ch1_pin, ch2_pin);
switch(encoder_n)
{
case TIM2_ENCODER:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T2_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T2_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM3_ENCODER:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T3_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T3_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM4_ENCODER:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T4_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T4_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM5_ENCODER:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T5_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T5_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM6_ENCODER:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T6_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
encoder_mode[encoder_n] = 0;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
@@ -210,19 +282,7 @@ void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum coun
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
encoder_quad_init(encoder_n, ch1_pin, ch2_pin);
encoder_mode[encoder_n] = 1;
}

View File

@@ -1,3 +1,5 @@
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -37,6 +37,8 @@
#include "zf_common_debug.h"
#include "zf_driver_encoder.h"
static uint8 encoder_mode[TIM6_ENCODER + 1] = {0};
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
@@ -131,6 +133,12 @@ int16 encoder_get_count (encoder_index_enum encoder_n)
case TIM6_ENCODER: encoder_data = (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120); break;
default: encoder_data = 0;
}
if(0 == encoder_mode[encoder_n])
{
encoder_data = encoder_data / 4;
}
return encoder_data;
}
//-------------------------------------------------------------------------------------------------------------------
@@ -161,7 +169,71 @@ void encoder_clear_count (encoder_index_enum encoder_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD><EFBFBD>ΪAͨ<41><CDA8> P00_8<5F><38><EFBFBD><EFBFBD>ΪBͨ<42><CDA8>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
encoder_mapping_set(encoder_n, ch1_pin, ch2_pin);
switch(encoder_n)
{
case TIM2_ENCODER:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T2_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T2_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM3_ENCODER:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T3_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T3_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM4_ENCODER:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T4_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T4_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM5_ENCODER:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T5_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T5_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM6_ENCODER:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T6_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
encoder_mode[encoder_n] = 0;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
@@ -210,19 +282,7 @@ void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum coun
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
encoder_quad_init(encoder_n, ch1_pin, ch2_pin);
encoder_mode[encoder_n] = 1;
}

View File

@@ -1,3 +1,5 @@
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -37,6 +37,8 @@
#include "zf_common_debug.h"
#include "zf_driver_encoder.h"
static uint8 encoder_mode[TIM6_ENCODER + 1] = {0};
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
@@ -131,6 +133,12 @@ int16 encoder_get_count (encoder_index_enum encoder_n)
case TIM6_ENCODER: encoder_data = (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120); break;
default: encoder_data = 0;
}
if(0 == encoder_mode[encoder_n])
{
encoder_data = encoder_data / 4;
}
return encoder_data;
}
//-------------------------------------------------------------------------------------------------------------------
@@ -161,7 +169,71 @@ void encoder_clear_count (encoder_index_enum encoder_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD><EFBFBD>ΪAͨ<41><CDA8> P00_8<5F><38><EFBFBD><EFBFBD>ΪBͨ<42><CDA8>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
encoder_mapping_set(encoder_n, ch1_pin, ch2_pin);
switch(encoder_n)
{
case TIM2_ENCODER:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T2_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T2_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM3_ENCODER:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T3_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T3_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM4_ENCODER:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T4_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T4_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM5_ENCODER:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T5_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T5_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM6_ENCODER:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T6_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
encoder_mode[encoder_n] = 0;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
@@ -210,19 +282,7 @@ void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum coun
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
encoder_quad_init(encoder_n, ch1_pin, ch2_pin);
encoder_mode[encoder_n] = 1;
}

View File

@@ -1,3 +1,5 @@
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -37,6 +37,8 @@
#include "zf_common_debug.h"
#include "zf_driver_encoder.h"
static uint8 encoder_mode[TIM6_ENCODER + 1] = {0};
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
@@ -131,6 +133,12 @@ int16 encoder_get_count (encoder_index_enum encoder_n)
case TIM6_ENCODER: encoder_data = (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120); break;
default: encoder_data = 0;
}
if(0 == encoder_mode[encoder_n])
{
encoder_data = encoder_data / 4;
}
return encoder_data;
}
//-------------------------------------------------------------------------------------------------------------------
@@ -161,7 +169,71 @@ void encoder_clear_count (encoder_index_enum encoder_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD><EFBFBD>ΪAͨ<41><CDA8> P00_8<5F><38><EFBFBD><EFBFBD>ΪBͨ<42><CDA8>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
encoder_mapping_set(encoder_n, ch1_pin, ch2_pin);
switch(encoder_n)
{
case TIM2_ENCODER:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T2_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T2_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM3_ENCODER:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T3_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T3_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM4_ENCODER:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T4_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T4_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM5_ENCODER:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T5_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T5_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM6_ENCODER:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T6_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
encoder_mode[encoder_n] = 0;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
@@ -210,19 +282,7 @@ void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum coun
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
encoder_quad_init(encoder_n, ch1_pin, ch2_pin);
encoder_mode[encoder_n] = 1;
}

View File

@@ -1,3 +1,5 @@
V3.2.9
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><>TIM2 TIM3 TIM4֧<34><D6A7>
V3.2.8
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͫ<EFBFBD><CDAB>MCU<43><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD>SBUSң<53><D2A3><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -37,6 +37,8 @@
#include "zf_common_debug.h"
#include "zf_driver_encoder.h"
static uint8 encoder_mode[TIM6_ENCODER + 1] = {0};
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> gptn ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
@@ -131,6 +133,12 @@ int16 encoder_get_count (encoder_index_enum encoder_n)
case TIM6_ENCODER: encoder_data = (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120); break;
default: encoder_data = 0;
}
if(0 == encoder_mode[encoder_n])
{
encoder_data = encoder_data / 4;
}
return encoder_data;
}
//-------------------------------------------------------------------------------------------------------------------
@@ -161,7 +169,71 @@ void encoder_clear_count (encoder_index_enum encoder_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD><EFBFBD>ΪAͨ<41><CDA8> P00_8<5F><38><EFBFBD><EFBFBD>ΪBͨ<42><CDA8>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
zf_assert(encoder_n <= TIM4_ENCODER); // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> TIM2 TIM3 TIM4֧<34><D6A7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFB1A8> <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>encoder_dir_init
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
IfxGpt12_setGpt2BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt2BlockPrescaler_4);
encoder_mapping_set(encoder_n, ch1_pin, ch2_pin);
switch(encoder_n)
{
case TIM2_ENCODER:
{
IfxGpt12_T2_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T2_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T2_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T2_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM3_ENCODER:
{
IfxGpt12_T3_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T3_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T3_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T3_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM4_ENCODER:
{
IfxGpt12_T4_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T4_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T4_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T4_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM5_ENCODER:
{
IfxGpt12_T5_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T5_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T5_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T5_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
case TIM6_ENCODER:
{
IfxGpt12_T6_setCounterInputMode(&MODULE_GPT120, IfxGpt12_IncrementalInterfaceInputMode_bothEdgesTxINOrTxEUD);
IfxGpt12_T6_setDirectionSource (&MODULE_GPT120, IfxGpt12_TimerDirectionSource_external);
IfxGpt12_T6_setMode (&MODULE_GPT120, IfxGpt12_Mode_incrementalInterfaceEdgeDetection);
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
encoder_mode[encoder_n] = 0;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum count_pin, encoder_channel2_enum dir_pin)
{
IfxGpt12_enableModule(&MODULE_GPT120);
IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, IfxGpt12_Gpt1BlockPrescaler_4);
@@ -210,19 +282,7 @@ void encoder_quad_init (encoder_index_enum encoder_n, encoder_channel1_enum coun
IfxGpt12_T6_run (&MODULE_GPT120, IfxGpt12_TimerRun_start);
}break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> encoder_n ѡ<><D1A1><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPT12<31><32>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch1_pin <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ch2_pin <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> encoder_quad_init(TIM2_ENCODER, TIM2_ENCODER_CH1_P00_7, TIM2_ENCODER_CH2_P00_8);// ʹ<><CAB9>T2<54><32>ʱ<EFBFBD><CAB1> P00_7<5F><37><EFBFBD>Ž<EFBFBD><C5BD>м<EFBFBD><D0BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P00_8<5F><38><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ Ӣ<><D3A2><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD>û<EFBFBD>ʹ<EFBFBD><CAB9>
//-------------------------------------------------------------------------------------------------------------------
void encoder_dir_init (encoder_index_enum encoder_n, encoder_channel1_enum ch1_pin, encoder_channel2_enum ch2_pin)
{
encoder_quad_init(encoder_n, ch1_pin, ch2_pin);
encoder_mode[encoder_n] = 1;
}