原创 无线遥控的曼彻斯特编码的接收(续)

2007-6-22 11:07 4889 11 11 分类: MCU/ 嵌入式

补充:编程思想


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 


总的指导思想:利用中断来为数据的高低电平计数。


1         计时中断的时间是270us。我的脉冲宽度为300us,则在一个高(低)电平中能且只能产生一次计时中断,即计数1次。Rfcount等于1


2         如果2个数据不同时,就会出现2个连续的高电平或低电平,即600us的高电平或低电平。但在这600us中能且只能产生2次计时中断,即计数2次。Rfcount等于2


3         理论上如果中断时间是270us时,可以对脉冲宽度为271404us的数据作出正确接收。因为只要能保证1个电平宽度大于1个中断时间和2个连续的电平宽度小于3个中断时间(3*270810us)时即可。


4         在电平变化中断后重赋定时器初值是为了抵消时间的累积误差。


以图为例进行说明:


点击看大图



⑴ 在a处产生中断,“预备……”;


⑵ 在b处产生中断,“准备就绪”;


⑶ 在c处产生中断,“检查同步头中低电平宽度是否合法。OK,则准备进入数据接收;否则仍就“预备……””;


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />⑷ ●在d处(图上)或e处(图下)产生中断,则判断是否产生了2次计时中断。很显然,对于图上只能产生1次计时中断,而图下就产生2次计时中断。产生了2次计时中断时,对数据进行判断,对于图下就能判断数据为1。对于图上,由于不足2次计时中断,所以直接退出中断。等待下一次中断(图上e处)。


     图上在e处产生中断,很明显,计时中断数为2,对数据进行判断,为0


⑸ 对数据进行判断后即清计时中断计数器。即Rfcount。为下一个数据接收作准备。返回到步骤⑷。如此反复,即可对所有的数据作出完整接收!


⑹ 由于以上接收时间为基准的,即Rfcount2次计时中断。所以数据中的高电平和低电平都有计时,其中任何1个的宽度超限都能导致接收失败。


 
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
11
关闭 站长推荐上一条 /3 下一条