单线控制的led灯带 ws2812 驱动程序总被定时器打断

[复制链接]
9252|20
 楼主| ergabd 发表于 2014-12-21 14:24 | 显示全部楼层 |阅读模式
用的stc15系列的单片机写的驱动程序  ws2812是单线控制的 跑的20多M晶振 控制了64像素点的灯珠  区别高低电平的时候能用的是延时  
由于程序外设比较多 用到了定时器 还要用到pca模块进行霍尔测速
现在是不开中断 程序控制灯带没有一点问题 一开中断 ws2812的数据就会被打断 灯带的显示就很混乱 每次在刷新一帧数据之前把EA=0 刷新完之后EA=1 就没问题了
但是我里面涉及到测速 刷新一帧灯带64像素点大概要占用2ms时间 我刷新比较频繁的话 占用时间会更多 这样我测速就不准了
请各位前辈提供一个程序思路 谢谢

本帖子中包含更多资源

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

×
 楼主| ergabd 发表于 2014-12-21 16:49 | 显示全部楼层
hnkf118 发表于 2014-12-21 17:24 | 显示全部楼层
分时控制, 只要保证不闪烁就行了。 另外刷新LED灯的时候 如果时序不能乱的话,禁止中断就是了。 好像一般的器件都没这么严格的时序的吧? 指的时间,
Jack315 发表于 2014-12-21 18:32 | 显示全部楼层
ws2812 的控制要用定时器,否则无法保证时序的。

LZ 晒下N多定时器都干啥去了?
 楼主| ergabd 发表于 2014-12-21 18:41 | 显示全部楼层
hnkf118 发表于 2014-12-21 17:24
分时控制, 只要保证不闪烁就行了。 另外刷新LED灯的时候 如果时序不能乱的话,禁止中断就是了。 好像一般 ...

主要这个是单线控制的 我这还没刷新64个像素点 就被中断了 中断时间超过24us的话再送数据就认为是下一帧的数据了
 楼主| ergabd 发表于 2014-12-21 18:54 | 显示全部楼层
Jack315 发表于 2014-12-21 18:32
ws2812 的控制要用定时器,否则无法保证时序的。

LZ 晒下N多定时器都干啥去了? ...

串口中断必须设为最高优先级 一直在接收数据 外部中断用了一个检测外部脉冲变化次数 pca中断要通过无刷电机3根霍尔线判断电机转的方向和转速也是要即时响应 其他的是通过定时器分时执行的 现在我刷64个像素点的时候没刷完被中断时间超过24us 再送数据被认为是下一帧数据了 如果我等着刷完一帧数据的话要大约2ms 等待时间有点长 希望能指点一下
hnkf118 发表于 2014-12-21 19:34 | 显示全部楼层
你这个刷屏一定要一次全部刷新完64个像素? 另外串口中断 可以采取BUF的形式,这样这个占用的时间就比较短了。而且串口中断 你波特率不高的情况下(列如9600), 不用最高优先级的。 检测脉冲变化次数,也是一样 数据后台处理。 另外LED 是要依靠你刷新维持显示? 还是你只刷新数据,他自己维持显示?这点就比较重要, 如果是前者,你只在需要刷新数据的时候,刷新就是了,
康康同学 发表于 2014-12-22 14:47 | 显示全部楼层
看了下ws2812的手册和使用方法,没有太好的解决办法,得用一个专门的定时器,并且把定时中断优先级开到最高。
康康同学 发表于 2014-12-22 14:49 | 显示全部楼层
个人觉得你一个IO控制64个点有点牵强,分成两个或者4个IO,那用在刷新的时间会少一些
YJCSXDL 发表于 2015-1-23 14:02 | 显示全部楼层
楼主能够说下你是如何驱动WS2812的,我的灯为什么一直不亮呢,亮的话也只是绿色的。
15647402999 发表于 2015-3-18 08:11 | 显示全部楼层
楼主可以把代码给我发一份吗?724485809@qq.com,谢谢
shenzhifang 发表于 2015-3-25 01:56 | 显示全部楼层
我也想要一份驱动部分的  zhifangs@qq.com
 楼主| ergabd 发表于 2015-4-16 11:51 | 显示全部楼层
YJCSXDL 发表于 2015-1-23 14:02
楼主能够说下你是如何驱动WS2812的,我的灯为什么一直不亮呢,亮的话也只是绿色的。 ...

用的51单片机吧  应该是时序不对
liweidxh 发表于 2015-6-10 17:01 | 显示全部楼层
楼主我想要驱动代码,1663931967@qq.com
海天家族5 发表于 2016-1-27 15:47 | 显示全部楼层
这个大哥,小弟最近也在学习单片机怎么控制WS2812的驱动程序,麻烦这位大哥给我发一份好不,我好学习学习。
海天家族5 发表于 2016-1-27 15:49 | 显示全部楼层
太激动了,忘记留联系方式了。492143961@qq.com
ayh520 发表于 2016-7-7 22:26 | 显示全部楼层
求楼主一份代码,自己编了一份时序用示波器总不对,崩溃了好人一生平安
 楼主| ergabd 发表于 2016-7-8 16:46 | 显示全部楼层
把一个简单的驱动发上来  就不给你们一一发了  在这下载吧

本帖子中包含更多资源

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

×
datouyuan 发表于 2016-7-8 17:43 | 显示全部楼层
这驱动还是比较简单的,uS级,用51mcu很难保证时序准确.

感觉驱动前后一定要加关中断和开中断.

关中断2mS,这么长时间应该会对很多中断造成影响.这没什么好办法.
头套大神 发表于 2016-10-24 16:03 来自手机 | 显示全部楼层
怎样联系LZ
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

133

帖子

3

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