正交解码器问题

2个帖子/ 0新
最后一篇
Giuseppe.
离线
最后一次露面:4年9月前
专家
加入:2015-03-25 13:34
正交解码器问题

我对正交解码器Pheriperal有问题。
在我的项目中,我使用唤醒功能来在按下按下按钮时实现中断。我还需要从电机编码器跟踪脉冲。所以这是periph_init的配置:

quad_dec_init_params_t quad_dec_init_param = {.chx_port_sel = quad_dec_chxa_p10_and_chxb_p11,
.chy_port_sel = quad_dec_chya_none_and_chyb_none,
.chz_port_sel = quad_dec_chza_none_and_chzb_none,
.qdec_clockdiv = 1,
.qdec_events_count_to_trigger_interrupt = 0,};

quad_decoder_init(&quad_dec_init_param);

wkupct_register_callback(app_interrupt_handler);
wkupct_enable_irq(128,128,1,0x3f);

但它不起作用,因为当电机启动时,设备仍然锁定到中断循环中。wkup_quadec_handler是constalntly调用的。

如果我为像这样定义QIAD解码器的回调函数,那么设备不会锁定但是每100个调用quad_decoder_user_callback_cunction:

quad_dec_init_params_t quad_dec_init_param = {.chx_port_sel = quad_dec_chxa_p10_and_chxb_p11,
.chy_port_sel = quad_dec_chya_none_and_chyb_none,
.chz_port_sel = quad_dec_chza_none_and_chzb_none,
.qdec_clockdiv = 1,
.qdec_events_count_to_trigger_interrupt = 0,};

quad_decoder_init(&quad_dec_init_param);
quad_decoder_register_callback((uint32_t *)quad_decoder_user_callback_function);
quad_decoder_enable_irq(100);
wkupct_register_callback(app_interrupt_handler);
wkupct_enable_irq(128,128,1,0x3f);

因此,始终需要Quad解码器的回调函数声明?

设备:
mt_dialog.
离线
最后一次露面:2个月3天前
职员
加入:2015-06-08 11:34
嗨guiseppe,

嗨guiseppe,

正交解码器和唤醒控制器是不同的模块,每个模块都可以唤醒580,以便正确设置正交解码器,您必须为此模块注册回调。鼠标项目使用车轮的正交解码器,您可以查看项目并检查其如何实现。此外,您还可以查看外围驱动程序文档UM-B-004以获取更多信息。

谢谢mt_dialog.