3596|6

32

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【瑞萨电子MCU套件免费试用】自行车炫彩风火轮开发应用笔记——(4)代码分析与效果 [复制链接]


1 软件代码分析

1.1.
代码量与数据量
经过编译器的输出信息中,代码量为1750Byte,数据量为。34Byte
由于本项目使用的MCUROM大小为2KBRAM大小为256B,而如果整个圆周面的2n*m个像素,每个像素存储RGB2Byte(一般是RGB三种颜色各占8bit,共3Byte,但是LPD6803采用R5G5B5格式,只需要2Byte即可存储一个像素点的颜色数据),需要2n*m*2ROM存储空间。这里选取2n=64m=5,则一幅图像需要,640Bytes,已经将近超出了ROM区域。
一种办法是降低2n或者m,但是这样导致图像不精细。不符合风火轮项目的设计要求。
为了解决上述矛盾,本项目巧妙地利用旋转图像的旋转对称性,即只使用0-30°的颜色数据,另外的30-360°的数据采取0-30°的数据的循环,这样生成的图像是12边形对称的。

1.2. 代码执行速度

执行速度的瓶颈在控制LED灯条的Timer00中断。
每个LED需要16bit,总共需要m*16bit的时间,同时还有前导32bit和后续的m个附加脉冲,所需的脉冲数总数为 (16*m + 32 + m)。由于采用的是瑞萨芯片的RL78架构,在每个指令一般需要两个周期。而一个bit输出时间约X个汇编指令,LED灯条总共需要略多于(16*m + 32 + m)*X的指令数。
则要求
(16*m + 32 + m)*X < dT = T/2n
LED数量增多,则Timer00的中断服务程序加长,而如果车速较快,则旋转一周的时间T缩短,此时Timer00的中断服务程序消耗的时间可能超过dT=T/2n,造成当前角度的LED灯条没有全部点亮,就已经旋转到了下一个角度,进入下一个中断。造成错误。
本项目选取的m=5,LED数量较少),2n=64(角度等分较多,图像较精细),在调试中没有优化过的bit输出代码,容易导致上述显示不正确的情况。在优化后则无异常。

1.3. 代码开发心得

1. TDR0nH TDR0nL的读写顺序不对会导致读写出错,这点在DATASHEET里有明确的说明,如果不慎忽略掉会导致抓狂的结果。另外,需要注意的是在调试时在Watch中添加TDR0n也相当于读取,可能会出错。
2. 虽然DATASHEET里说flash0x0000被向量中断表占用,但是如果先定义的是const常量并不超过一定空间是会从0x00C0前面。
分配flash. 这在DATASHEET中好像没有说明。
3.变量在内存中分配,常量在flash中,but若先定义了变量再定义常量,const常量也会分配到ram中。
4.变量定义要在函数体内提前,这跟原先我个人学的C99不同,导致很纠结。
5.有一段时间写Pn老会引起栈中的变量变化,不懂原因。

2 实现效果

经过调试和测试后,最终实物效果图如下:

图 61 自行车风火轮的电路搭建实物图

图 62 自行车风火轮实物效果图


图 63 自行车风火轮实物效果图

图 64 自行车风火轮实物效果图



【瑞萨电子MCU套件免费试用】自行车炫彩风火轮开发应用笔记——(4)代码分析与效果.pdf (276.12 KB, 下载次数: 41)

最新回复

线好乱啊! 会不会绞进轮子里!   详情 回复 发表于 2014-12-21 00:35
点赞 关注

回复
举报

1658

帖子

1

TA的资源

纯净的硅(高级)

沙发
 
动态效果不错,赞一个
 
 

回复

940

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
看到楼主扎的线有点抓狂啊

不过,效果图片要点赞
 
 
 

回复

775

帖子

0

TA的资源

纯净的硅(高级)

4
 
效果不错,但感觉出事总在下雨天。
 
 
 

回复

71

帖子

1

TA的资源

一粒金砂(中级)

5
 
很炫啊,有创意
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(中级)

6
 
真炫酷
 
 
 

回复

1274

帖子

2

TA的资源

版主

7
 
线好乱啊!
会不会绞进轮子里!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表