Merhaba ekte vermiş olduğum capture ayarlarının ne işe yaradığını öğrenebilir miyim ?
Mesela " TIM_TBInitStruct.TIM_Period = 8500; " Period değerinin 8500 olmasının amacı nedir ? Bu ayarların açıklamalarını ögrenmek istiyorum.
Forumda biraz araştırdım. Bazı açıklamalara ulaştım. PSC, ARR register'larını araştırıyorum.
Kodlar Klein hocamın paylaşmış olduğu kodlardan alıntıdır.
Saygılarımla
void init_inputcapture(void)
{
NVIC_InitTypeDef NVIC_InitStruct;
TIM_TimeBaseInitTypeDef TIM_TBInitStruct;
TIM_ICInitTypeDef TIM_ICInitStruct;
TIM_TBInitStruct.TIM_Period = 8500;
TIM_TBInitStruct.TIM_Prescaler =0 ;
TIM_TBInitStruct.TIM_ClockDivision = 0;
TIM_TBInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TBInitStruct);
TIM_ICInitStruct.TIM_Channel = TIM_Channel_1;
TIM_ICInitStruct.TIM_ICFilter = 0x00;
TIM_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_Rising;
TIM_ICInitStruct.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStruct.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_PWMIConfig(TIM3,&TIM_ICInitStruct);
TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);
TIM_SelectInputTrigger(TIM3,TIM_TS_TI1FP1);
TIM_ITConfig(TIM3,TIM_IT_CC1,ENABLE);
NVIC_InitStruct.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);
TIM_Cmd(TIM3,ENABLE);
}
Input captureda period okunabilecek maksimum sayiyi verir. Yani normalde 16 bitlik de 65535 dir maksimum eger bu registera ffff yazarsan ama 30000 yazip yuklersen maksimum 30000 sayar sonra 0 a doner. Normalde 45000 saymasi gerekiyorken sen periodu 30000 yaparsan 15000 okursun