搜索
bottom↓
回复: 9

红外线遥控PWM的软件模拟实现.

[复制链接]

出0入0汤圆

发表于 2009-2-26 17:08:46 | 显示全部楼层 |阅读模式
现在我在做一个系统,MCU选用PIC系列,现在调试用877,红外遥控(软件解码)及软件模拟4路PWM输出的单独模块都可以实现了,但当将两个模块合在一起就出了问题,不论如何调整,要么是红外接收可用,要么就是PWM可用,红外软件解码用CCP来实现,4路PWM也是用软件模拟实现,周期5ms,有50级,每100us中断一次,由于PWM的实时资原占用比较多,所以两者合一起就是不行.我程式中设定PWM的中断优先级最高,CCP的中断第二(反之也试过,也不行),不知各位兄弟有什么好的办法,两者都要用软件实,单片机一定选取用PIC.

出0入0汤圆

发表于 2009-2-26 18:33:58 | 显示全部楼层
用20M时钟,只开一个定时器中断,自己用状态机实现所有功能。

出0入0汤圆

 楼主| 发表于 2009-2-26 23:22:43 | 显示全部楼层
20M的时钟我也试过,就是不行,程式中断后进行识别如是PWM的中断就屏蔽CCP的中断,如果是CCP的中断,还是打开PWM的中断,当在用CCP接收红外信号时,还可以进入PWM中断,这样我计算过,红外信号的误差最大也就100us,我增大了红外信号的解码的识别误差,理论上应可以的,但不知为什么就是不行。红外信号1的高电平我设定为1500us,0的高电平为1000us,在这里CCP通过识别高电平的时间可以识别到1或0。

出0入0汤圆

发表于 2009-2-26 23:39:29 | 显示全部楼层
不要使用CCP功能,只使用一个定时器中断,定时器每0.1ms中断一次,中断服务程序将一个标志位置位、重装定时器初值后,不做任何其他操作就退出。
主程序挂在标志位上,一旦发现标志位被置位,就将其清零,然后利用状态机思想分别处理4个PWM输出和红外解码,5个事件,450个指令周期,平均每个事件有90个指令周期,应该是足够了。

出0入0汤圆

 楼主| 发表于 2009-2-26 23:47:22 | 显示全部楼层
多谢,这个方法我先试试先,但在上面的程式调试成功,我还要在主程式中加入PID程式,那样运算量就更大了。由于我考虑到这个问题,所以想让PWM和CCP独立运行,不想占用CPU太多的时间。(还有我不理解你所说的450个周期是指?)

出0入0汤圆

 楼主| 发表于 2009-2-27 23:02:38 | 显示全部楼层
楼上的,可以说说状态机的原理吗?有些不太明.最好是能有一个简单片的例子.多谢.

出0入0汤圆

发表于 2009-3-3 11:22:39 | 显示全部楼层
做红外遥控解不要这么复杂吧,

main:                                           ;;
        mov     a,#5ah                          ;;清看门狗         
        b0mov   wdtr,a                          ;;清看门狗   
;;----1ms要做的事情
        bts1    f_1ms_work
        jmp     @f
        call    time_process
        call    lcd_data_send_process
        call    out_pross
        bclr    f_1ms_work
@@:
;;----10ms要做的事情
        bts1    f_10ms_work
        jmp     @f
        call    lcd_disp_updata
        call    key_process
        call    out_voltage_set
        call    music_process
        bclr    f_10ms_work
@@:
;;----有空就做的事情
        call    ir_receive     ;;遥控接收
        jmp     main

出0入0汤圆

发表于 2009-3-3 11:28:18 | 显示全部楼层
这段程序不要PIC的,能看明白吗?

出0入0汤圆

 楼主| 发表于 2009-3-3 14:03:12 | 显示全部楼层
多谢各位朋友的关心,我的程式已调试成功了.其本思路是按我原来的,只是取消了CCP.

(原文件名:PIC_Ir_PMW_PID.JPG)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 08:43

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表