数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 43|回复: 1

[C51] 中断不会影响WS2812时序,我觉得不大可能

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式
按道理讲,单片机中断的时候,它会先去处理中断程序,待中断程序处理完毕后才继续进行其他的程序。WS2812是时序相对严格的一款外设,因为它的脉冲短(ns级),任何风吹草动都会影响它的脉冲长短。
本次的测试环境如下:
单片机:STC32G144K246
系统频率:40MHz
WS2812驱动模式:软件延时和PWM
WS2812发光:主程序轮流(间隔500ms)发红、蓝、绿三色光
大循环代码:
  1. while(1)
  2. {
  3. printf("test---");
  4. WS2812_rand_color(1,0,0);
  5. delay_ms(500);
  6. WS2812_rand_color(0,1,0);
  7. delay_ms(500);
  8. WS2812_rand_color(0,0,1);
  9. delay_ms(500);
  10. }
复制代码

中断干扰:通过串口连续向单片机发送数据,而串口接收中断后返回收到的数据,也就是说,中断不定时,无规律。串口通讯波特率:115200.
串口中断代码如下:
  1. void Uart1_Isr(void) interrupt 4
  2. {
  3. if (TI)
  4. {
  5. TI = 0;
  6. fBusy = 0;
  7. }
  8. if (RI)
  9. {
  10. ckdat=SBUF;
  11. SBUF=ckdat;
  12. RI = 0;
  13. }
  14. }
复制代码

通过测试,无论是PWM还是软件延时模式驱动ws2812,串口中断均不会对ws2812的色光发生影响,这真是百思不得其解。PWM暂且不说,软件延时模式驱动ws2812,任何中断都会对其延时产生巨大的影响,为什么不见ws2812的偏色现象?

测试视频网址:


本帖子中包含更多资源

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

x
发表于 1 小时前 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|数码之家-技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2026-7-18 15:29 , Processed in 0.078000 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz!

© MyDigit.Net Since 2006

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