点阵模块闪动

hallowwar 2010-06-09 12:13:53
1. 外部中断接受一帧数据, 接受完毕后进行新数据的LED点阵显示。(奇怪的是,数据更新显示正常,但现场调试时是不是有乱点出现)。
2. 定时器中断,这个是查询端口而已,更新正常, 但中断时点阵显示变化很大,不管定时器定时多少时间,长短我都试了,怎么就没有传说中的视觉停留效应了呢?这个确定属于软件问题。
...全文
218 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
hallowwar 2010-06-13
  • 打赏
  • 举报
回复
可以确定是干扰, 估计是接受线与595的SCK线间距问题,问题没有解决,遗憾。
Miracjj 2010-06-12
  • 打赏
  • 举报
回复
学习一下
hallowwar 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 peasant_lee 的回复:]

中断函数不算大,,一般的那种。。

中断会改变ram区,因为要压栈,保存现场地址和其他变量,RAM会变小。
[/Quote]
恩,小了就小了,只要做了现场保护就好。
Peasant_Lee 2010-06-12
  • 打赏
  • 举报
回复
中断函数不算大,,一般的那种。。

中断会改变ram区,因为要压栈,保存现场地址和其他变量,RAM会变小。
hfCoder 2010-06-12
  • 打赏
  • 举报
回复
帮 顶
shagua0916 2010-06-12
  • 打赏
  • 举报
回复
不长,仅用到一个除法和取模。问题不大。
hallowwar 2010-06-12
  • 打赏
  • 举报
回复
void extern0() interrupt 0 using 0 //外中断0入口服务程序
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

if(cs==1)
receive++;
else
{
receive=0;
return;
} // to avoid the disturbance.

if(receive<25) //The 3 bytes ahead the frame is ignored. Also, the disturbance'check is unnecessary.
return;

if(dat)
receive_tp|=1;
if((receive-24)%8==0)
{
buff[((receive-24)/8)-1]=receive_tp;
if(receive==fram_length)
{
receive=0;
receive_tp=0;
new_frame_flag=1;
}
}
receive_tp<<=1;

}


这么长的中断处理函数算长吗? 还有,中断是不是会改变ram 区的值呢?
hallowwar 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 peasant_lee 的回复:]

好像真的没有什么好的办法。假如楼主肯定在以前的调试中,没有出现这种闪动的情况,而在现场就有,那么真的可以考虑干扰,,处理的话,软件估计没什么好办法,只能从硬件找原因,找出干扰源。
[/Quote]
这个干扰源难找的啊,截止今晚是必须解决问题的最后关头,到时候结贴,也 给大家一个答复。加油。
sjdcz 2010-06-11
  • 打赏
  • 举报
回复
不清楚你的具体电路,估计受到干扰的几率比较大
hallowwar 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 sjdcz 的回复:]

不清楚你的具体电路,估计受到干扰的几率比较大
[/Quote]
关键是这种硬件干扰的话,软件有没有什么处理方法啊?
Peasant_Lee 2010-06-11
  • 打赏
  • 举报
回复
好像真的没有什么好的办法。假如楼主肯定在以前的调试中,没有出现这种闪动的情况,而在现场就有,那么真的可以考虑干扰,,处理的话,软件估计没什么好办法,只能从硬件找原因,找出干扰源。
hallowwar 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 peasant_lee 的回复:]

这种随机的乱点闪动,软件也很难搞定。最好能找出干扰的源头。软件真的要试,可以将每次点亮的时间延长一点,这样闪动就会相对感觉弱一点。
[/Quote]
时间长度应该没有问题,除了中断接收新的数据,剩下的时间都是在做显示的处理,没有新数据,就一直显示老数据的。软件方面你觉得从哪里入手比较好? 我现在完全没有思路啊。
stgzdcc 2010-06-10
  • 打赏
  • 举报
回复
来学习 顺便接分~~~
Peasant_Lee 2010-06-10
  • 打赏
  • 举报
回复
这种随机的乱点闪动,软件也很难搞定。最好能找出干扰的源头。软件真的要试,可以将每次点亮的时间延长一点,这样闪动就会相对感觉弱一点。
hallowwar 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 peasant_lee 的回复:]

感觉,受干扰的可能性很大。楼主说,现场调试时有乱点,是不是可以换个话说,你以前在非现场的时候调试过,同样软件硬件不会出现乱点呢?假如真的这样,干扰的可疑就很大了。
[/Quote]
如果真的是干扰,软件方面有什么好的处理方法么?
yunqian09 2010-06-10
  • 打赏
  • 举报
回复
受到干扰了吧
hallowwar 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jbb0523 的回复:]

奇怪的是,数据更新显示正常,但现场调试时是不是有乱点出现

这种与时间有关的能用现场调试吗?
[/Quote]
说错了,就是把板子带到现场测试而已,不是调试。
Peasant_Lee 2010-06-10
  • 打赏
  • 举报
回复
感觉,受干扰的可能性很大。楼主说,现场调试时有乱点,是不是可以换个话说,你以前在非现场的时候调试过,同样软件硬件不会出现乱点呢?假如真的这样,干扰的可疑就很大了。
hallowwar 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sybil_mao 的回复:]

有两个地方要查一下,一个是你说的会闪,一般来说一秒最少要刷新25帧,最好能到40帧每秒,这样就不会有闪的问题。如果这个还不行就要查一下硬件设计方案是否可行。
[/Quote]
不是整个点阵闪动那种,只是杂乱的亮点偶尔出现,在有数据传送过来的时候。

碰上比较棘手的问题啊,还望集大家的智慧,一起帮忙解决这个问题。非常感激。
hallowwar 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wangfan027 的回复:]

可能是数据线有干扰,例如焊接不牢,有异物粘在数据线上了
或者是有RAM溢出
OR(很有可能)外部中断过快,还在刷新显示时,又来一中断,于是上一次刷新还没完成又开始刷新了,这样就会造成很多乱点
[/Quote]
外部中断的速度大约是:一帧数据72位,时间为4.4ms左右,每位数据都会引起一次外部中断,然后处理数据。
同样的中断速度,一帧48位的数据,做同样处理,到没有这个乱点出现的现象,很是纳闷,我怀疑相差24位,不至于是软件原因。(这块板子要大一点,元器件间隔较大,且没有72位的发热现象严重。)

加载更多回复(5)

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧