打印

GD32,正交编码器反转时,计数脉冲丢失

[复制链接]
830|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Aist2018|  楼主 | 2023-12-28 10:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
GD32,正交编码器反转时,计数脉冲丢失,正转时计数正常,反转读计数没了值。
int16_t Encoder_Get(void)
{
int16_t Temp;
Temp = timer_counter_read(TIMER0);
//timer_counter_value_config(TIMER0, 0x7FFF);
return Temp;
}

这个函数反转时读的值是0,下面是编码器初始化函数
void timer0_config(void)
{
                timer_parameter_struct baseConfig;
    timer_oc_parameter_struct  occonfig;
    timer_ic_parameter_struct   ICConfig;
    /* Enable TMR0 Periph Clock */
    rcu_periph_clock_enable(RCU_TIMER0);
    /* Config TMR0 */
    baseConfig.clockdivision = TIMER_CKDIV_DIV1;
    baseConfig.counterdirection = TIMER_COUNTER_UP;
    baseConfig.prescaler = 0;
    baseConfig.period = 4800;
    baseConfig.repetitioncounter = 0;
    timer_init(TIMER0, &baseConfig);
                timer_counter_value_config(TIMER0, 0);
       
    timer_slave_mode_select(TIMER0, TIMER_QUAD_DECODER_MODE2);
    /* Encoder mode */   
    timer_quadrature_decoder_mode_config(TIMER0, 3, TIMER_IC_POLARITY_RISING, TIMER_IC_POLARITY_RISING);
    //timer_flag_clear(TIMER0, TIMER_FLAG_UP);

    /* Enable TMR1,TMR3 Interrupt */
    //timer_interrupt_enable(TIMER2, TIMER_INT_CH1);
    timer_interrupt_enable(TIMER0, TIMER_INT_UP);
                //timer_interrupt_enable(TIMER0, TIMER_INT_CH1);
                nvic_priority_group_set(NVIC_PRIGROUP_PRE1_SUB3);
    //nvic_irq_enable(TIMER2_IRQn, 1,1);
    nvic_irq_enable(TIMER0_UP_IRQn, 1,1);

    /* Enable TMR1,TMR3 */
    //timer_enable(TIMER2);
    timer_enable(TIMER0);
}

使用特权

评论回复
沙发
Aist2018|  楼主 | 2023-12-28 11:49 | 只看该作者
DIR 方向
GD32F10x 用户手册
290
0:向上计数
1:向下计数
当计数器配置为中央对齐计数模式或编码器模式时,该位只读。也不能写时钟控制寄存器0的这个位设置方向,编码器模式这位是只读。为何编码器反转计数值就为0了呢?

使用特权

评论回复
板凳
Aist2018|  楼主 | 2023-12-28 12:16 | 只看该作者
反转中断还产生,可是计数值是0

使用特权

评论回复
地板
GlenX| | 2023-12-28 12:40 | 只看该作者
本帖最后由 GlenX 于 2023-12-28 12:41 编辑

一般将计数初值设定到一个比较高的值,
例如最大计数为32760,则初始化这个值为10000,否则减到最小0就没法再减了!
然后根据当前计数值求差即可。

使用特权

评论回复
5
Aist2018|  楼主 | 2023-12-28 12:48 | 只看该作者
没事了,向下CNT_REG的值的确为0。

使用特权

评论回复
6
flycamelaaa| | 2023-12-29 15:08 | 只看该作者
检查编码器连接

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

78

帖子

0

粉丝