完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请问一下CH573的PA9引脚用作TMR0功能可以做输入捕获用来进行红外解码吗?解码NEC需要判断高低电平的持续时间,是需要用另一个定时器的计数功能才可以实现吗?如果要判断低电平是否持续560us,那这个计数器计的数值为多少时才是560us呢?
|
|
相关推荐
7个回答
|
|
CH57x CH58x 系列的芯片的26bit定时器的时钟直接来自 系统时钟,
当系统跑到32M 情况下, 每32代表1us, 在60M情况下每60代表1us; 上帖低电平持续560us, 当CH573 跑在60M的情况下, 560us captrue得到的值将会是60*360 = 33600这样 另外一个注意的地方是, capture工作模式下,timer的输出值的第26bit 指示的是采样时候的电平; 如下是在主频60Mhz下,timer开启双边沿captrue下,中断里面得到 us的处理(这里测试用到了打印,注意给合适的测试信号,避免打印速度影响结果) __attribute__((interrupt("WCH-Interrupt-fast"))) __attribute__((section(".highcode"))) void TMR3_IRQHandler( void ) // TMR3 定时中断 { uint32_t cap_data; if ( TMR3_GetITFlag( TMR0_3_IT_DATA_ACT ) ) { TMR3_ClearITFlag( TMR0_3_IT_DATA_ACT ); // 清除中断标志 cap_data = TMR3_CAPGetData(); if(cap_data&(1<<25)){ //高电平 cap_data = cap_data&((1<<25)-1); PRINT("H gap=%d usrn",cap_data/60); }else{ PRINT("L gap=%d usrn",cap_data/60); } } } |
|
|
|
初始化这样写对吗,用定时器0输入捕获
GPIOA_ResetBits( GPIO_Pin_9 ); // 配置PA9 GPIOA_ModeCfg( GPIO_Pin_9, GPIO_ModeIN_PU ); TMR0_CapInit( Edge_To_Edge ); TMR0_CAPTimeoutCfg( 0xFFFFFFFF ); // 设置捕捉超时时间 PFIC_EnableIRQ( TMR0_IRQn ); |
|
|
|
还需要使能 TMR0_ITCfg( ENABLE, TMR0_3_IT_DATA_ACT );
|
|
|
|
void Init(void)
{ GPIOA_ResetBits( GPIO_Pin_9 ); // 配置PA9 GPIOA_ModeCfg( GPIO_Pin_9, GPIO_ModeIN_PU ); TMR0_CapInit( Edge_To_Edge ); TMR0_CAPTimeoutCfg( 0xFFFFFFFF ); // 设置捕捉超时时间 TMR0_ITCfg( ENABLE, TMR0_3_IT_DATA_ACT ); PFIC_EnableIRQ( TMR0_IRQn ); } __attribute__((interrupt("WCH-Interrupt-fast"))) __attribute__((section(".highcode"))) void TMR0_IRQHandler( void ) { uint32_t cap_data; if ( TMR0_GetITFlag( TMR0_3_IT_DATA_ACT ) ) { TMR0_ClearITFlag( TMR0_3_IT_DATA_ACT ); // 清除中断标志 cap_data = TMR0_CAPGetData(); if(cap_data&(1<<25)){ //高电平 cap_data = cap_data&((1<<25)-1); PRINT("H gap=%d usrn",cap_data/60); }else{ PRINT("L gap=%d usrn",cap_data/60); } } } 这是定时器输入捕获的代码,连接的是一个红外接收器,当我按下遥控器时串口打印的信息如下 逻辑分析仪捕捉的图像如下 任意边沿触发首先打印的应该是 L gap=9398 us吗,而且打印的高低电平与图像也对不上。请问这是什么问题。 |
|
|
|
打印的波特率是多少?如果是115200的话,中断里面打印的时间都比采样脉宽要宽,会影响采样。
|
|
|
|
|
|
|
|
你是上电同时有边沿输入,还是芯片先上电在输入的电平信号,你可以先测单个脉宽试试,打印的话,9600太慢了,1个字节就差不多1ms,影响采样。
|
|
|
|
只有小组成员才能发言,加入小组>>
342 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2803 浏览 2 评论
2300 浏览 1 评论
使用ch569例程中的CH372Device程序,修改电脑端程序的读写端口时卡住了是什么原因?
344浏览 2评论
求助,CH368L的被动接口有没有详细的读写时序以及操作流程说明
741浏览 2评论
849浏览 2评论
916浏览 2评论
541浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-28 23:06 , Processed in 1.121253 second(s), Total 90, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号