串口接收引起的模拟PWM调光闪烁,请高手帮帮忙

[复制链接]
 楼主| xiaomuhong26 发表于 2010-11-8 21:31 | 显示全部楼层 |阅读模式
两片单片机通信,固定的不断从单片机A向单片机B发送串口信号,单片机B用定时器模拟PWM调光,但由于不断地要接收单片机A发送过来的信号(用于更新计数值),所以导致模拟PWM(LED)闪烁。请问各位大侠有什么办法能够使PWM能够正常地工作?
aihe 发表于 2010-11-8 22:17 | 显示全部楼层
结构不合理
Adu0227 发表于 2010-11-8 22:49 | 显示全部楼层
建议规定优先级。
coody 发表于 2010-11-8 23:15 | 显示全部楼层
1、你的串口接收程序可能耗时过长。
2、将PWM的定时器优先级设置最高。

我做过12路 8位的PWM,用的STC的20脚的MCU,跑22.1184MHZ,PWM频率为337.5HZ,12路同步输出。

评分

参与人数 1威望 +1 收起 理由
SmartEnergy + 1 好!牛!

查看全部评分

ayb_ice 发表于 2010-11-9 08:31 | 显示全部楼层
降低UART通信速率,优化中断程序...
 楼主| xiaomuhong26 发表于 2010-11-9 08:32 | 显示全部楼层
coody   请问你说的12路是用IO口模拟的吗?12路模拟时,我的也能实现,可是用串口时,把PWM定时器的优先级设置为最高时,根本就收不到数据了
coody 发表于 2010-11-9 10:47 | 显示全部楼层
6楼,是你的程序结构问题。
 楼主| xiaomuhong26 发表于 2010-11-9 11:30 | 显示全部楼层
那请问,如果我想达到一种效果类似于此:不断地接收从单片机A串口发送过来的数据来更新单片机B中PWM中的数据,而且要单片机B 中的PWM正常工作,该如何处理?请问有什么办法吗?
 楼主| xiaomuhong26 发表于 2010-11-9 11:42 | 显示全部楼层
补充:单片机B中,PWM调光定时器是每隔100us处理一次;串口波特率是250Kbit/s,不断地在接收从单片机A中发过来的数据来更新PWM中调光数据。如果我将定时器中断优先级设为高,则会造无法接收到串口数据;如果将串口优先级设为高,则会使PWM调光闪烁。
  请问各位大侠有没有一种好的程序结构,既能满足PWM调光不让其闪烁,又能较为实时的更新数据,达到实时变化效果??????
coody 发表于 2010-11-9 12:25 | 显示全部楼层
将PWM定时器中断优先级设置最高,优化PWM程序,使中断运行时间小于40us,串口才不会丢失数据,因为串口是40us一个字节。

评分

参与人数 1威望 +1 收起 理由
hyhv126 + 1

查看全部评分

yx331447791 发表于 2010-11-9 13:06 | 显示全部楼层
我觉得可能你用的过程序中不用这么做,你最好把你想实现的目标告诉大家,可能这种效果更好
上海普芯达 发表于 2010-11-9 13:27 | 显示全部楼层
模拟串口通信,跑飞是正常的!~~  不稳定!~
 楼主| xiaomuhong26 发表于 2010-11-9 14:01 | 显示全部楼层
我是做舞台灯光产品的,现在电路板上面有两个单片机,单片机A--STC12C5608,单片机B--STC90C52,我本意是在单片机A中实现键盘、数码管显示等功能,而在单片机B中实现各种灯光效果,例如频闪、渐变等;我本想让单片机A(波特率为250Kbit/s)发送一个数据组过来,里面包话模式(代表是哪种功能--频闪或渐变),和另一个数据(占空比:这个值在渐变功能中是会变化的),但是现在遇到了问题,单片机显示频闪效果时,LED灯光就会不断闪烁。我想问的是如何才能使LED不闪烁
 楼主| xiaomuhong26 发表于 2010-11-9 14:02 | 显示全部楼层
模拟串口通信,跑飞是正常的!~~  不稳定!~
上海普芯达 发表于 2010-11-9 13:27

我没有模拟串口,我模拟的是PWM调光
hwq362202 发表于 2010-11-9 14:07 | 显示全部楼层
hyhv126 发表于 2010-11-9 14:12 | 显示全部楼层
学习中。。
 楼主| xiaomuhong26 发表于 2010-11-9 14:50 | 显示全部楼层
我想知道是什么原因造成这种闪烁的
 楼主| xiaomuhong26 发表于 2010-11-9 14:51 | 显示全部楼层
不知各位大侠有什么高明的见解?请大侠们不吝解惑
SmartEnergy 发表于 2010-11-9 14:55 | 显示全部楼层
我是做舞台灯光产品的,现在电路板上面有两个单片机,单片机A--STC12C5608,单片机B--STC90C52,我本意是在单片机A中实现键盘、数码管显示等功能,而在单片机B中实现各种灯光效果,例如频闪、渐变等;我本想让单片机A ...
xiaomuhong26 发表于 2010-11-9 14:01

全调光范围都闪吗?会不会PWM频率太低了?
wkfuye 发表于 2010-11-9 15:08 | 显示全部楼层
:dizzy:优化中断程序
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

85

帖子

1

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