[国产单片机] 请教:单片机如何解码协议

[复制链接]
2408|16
 楼主| zwxhehe2012 发表于 2013-4-10 10:59 | 显示全部楼层 |阅读模式
请教一下,单片机没有捕捉功能,只有两个定时器,一个定时器用来模拟PWM输出,现在要解码上面的协议,我现在用了一个计数器,信号输入脚使用上升沿和下降沿中断,来了中断后,关闭计数器,读计数器数值判断是否符合起始码的宽度,起始码个数满足之后,如果再有中断,就判断数据码的宽度是否符合要求,但是发过来的数据有可能是连着几个0或者几个1,我读数据段这部分该怎么写呢,难道要做很多的判断(1倍数据宽度,2倍数据宽度等),有什么好的方法没有?还有还有另外一个PWM定时器的中断,还有怎么样避免两个中断互相影响?谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
McuPlayer 发表于 2013-4-10 19:13 | 显示全部楼层
这图画得很帅,我先看看
你用的哪个MCU,相关的硬件资源,也许更帮你发现一些小诀窍
zhikunWang 发表于 2013-4-10 20:29 | 显示全部楼层
楼主应该是用的画图板画的!可以99SE画,都会比画图板省事!
 楼主| zwxhehe2012 发表于 2013-4-10 22:01 | 显示全部楼层
呵呵,确实用画图板画的,我用的是MCU是STC15F104E
q331513266 发表于 2013-4-11 13:27 | 显示全部楼层
找个红外解码的程序看一下
gmgmgm 发表于 2013-4-11 23:25 | 显示全部楼层
我是来顶楼主画的图很艺术性
McuPlayer 发表于 2013-4-12 08:17 | 显示全部楼层
你的0和1分别是如何表示的?
是简单的高低电平,还是一个高电平和一个低电平的组合?
liuyuqiong1 发表于 2013-4-12 09:11 | 显示全部楼层
楼主应该是红外协议没注意清,一般红外的数据码的1和0都是靠时间不同来确定的或者靠频率不同来区分;例如:你的起始码:你判断当检测到高电平2mS,并且连续两次,那么你开始读数据,否则一直等待检测到起始码;数据码判断:当检测到1的脉冲时间吻合你就认为读到1,当检测到0的脉冲时间就认为读到0;不可能是200us里高低就认为是1或者0的~~
 楼主| zwxhehe2012 发表于 2013-4-12 16:30 | 显示全部楼层
是这样的,我现在要解码无线遥控手柄发过来的协议,接收板信号输入脚数据段的波形如下,感觉那个波形不是红外协议,就是高低电平标识0和1,不知道对不对? 还有关于无线通讯的协议有什么特殊的地方来解决干扰和提高接收端的灵敏度,麻烦指教一下,谢谢,如下是后面用示波器转到的接收板信号输入脚数据段的波形

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
mgf006 发表于 2013-4-12 17:24 | 显示全部楼层
学习型遥控器MCU芯片就可以搞定了。
wangyy608 发表于 2013-4-12 18:35 | 显示全部楼层
计数2个上升沿或者下降沿的时间,根据这个时间来判断是0还是1
谈的元 发表于 2013-4-12 22:41 | 显示全部楼层
想象人怎么来判断0与1的??是否需要精确到US?????
Man少 发表于 2013-4-18 09:37 | 显示全部楼层
   红外协议我没看过,不过一般这种用高低电平来发送数据的都是曼彻斯特和双向位协议比较多。曼彻斯特是通过高低电平组合来表示一个位,双向位是一个单位时间内是否有跳变来表示一个位。至于楼主说的,低电平表示0,高电平表示1,在连续发送多个1或者0的时候是很难识别个数的,因为缺少用于位同步帧(或者说是时钟)。
liujun11 发表于 2013-4-18 17:35 | 显示全部楼层
用一个定时器中断,加个CPU 时基中断就行
 楼主| zwxhehe2012 发表于 2013-4-19 09:51 | 显示全部楼层
我以为跟串口通讯差不多,认为串口通讯中高低电平也是US级的,串口通讯可以实现是因为每个字节间有同步(起始和停止位),而且通讯环境相对好一点吧
wangyy608 发表于 2013-4-19 10:58 | 显示全部楼层
这个跟串口完全不一样,
每1位都用1个低电平和1个高电平来表示,
显然高电平的时间基本一样,那么低电平的长短就是0和1的区别
 楼主| zwxhehe2012 发表于 2013-4-19 14:55 | 显示全部楼层
但是上面波形中第5个高电平之后有三个基本低电平宽度的时间,等于那个波形中有三种低电平宽度(1倍,2倍还有3倍),这个是什么情况
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

48

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部