mirror of
https://gitee.com/seekfree/TC264_Library.git
synced 2026-06-04 03:32:56 +00:00
V3.2.9
新增完整正交采集 仅TIM2 TIM3 TIM4支持
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user