问两个问题,请高手指教!EEPROM保存已解决一个!

[复制链接]
4492|14
 楼主| Ryanhsiung 发表于 2012-1-4 17:19 | 显示全部楼层 |阅读模式
本帖最后由 Ryanhsiung 于 2012-1-14 17:18 编辑

1、C18编译器下怎么让某一段代码不优化     不能用以下这一招:新建一个.C文件将不优化的放进去??
     有没有想IAR里面的__root预编译指令

2、使用MPLAB烧写时,也将EEPROM里烧写一次(现是全部擦出为0),这样我就不用烧写完后再配置一次了。
   这个已解决,可以加载E2(.MCH)文件,NE5532说的不详细,今天摸了会 摸到了。详细见14L
NE5532 发表于 2012-1-4 21:41 | 显示全部楼层
第一个没用过,第二个,MP可以加载E2文件的说,另外一个更好的办法就是把配置数据默认为FF,然后就狠省事了。还有一个办法就是E2里写个标志字节,程序里面写个判断,如果读到该字节为FF,就用初始化参数写E2,然后再把该字节改回来。

其实让工人在烧写程序的时候再去加载一个E2文件是灰常麻烦和容易出错滴。
 楼主| Ryanhsiung 发表于 2012-1-5 08:17 | 显示全部楼层
不能读到FF就改写成E2的值,因为FF也可以是他正常的设置值
yewuyi 发表于 2012-1-5 08:48 | 显示全部楼层
1、C18编译器下怎么让某一段代码不优化     不能用以下这一招:新建一个.C文件将不优化的放进去??
     有没有想IAR里面的__root预编译指令

2、使用MPLAB烧写时,也将EEPROM里烧写一次(现是全部擦出为0),这样 ...
Ryanhsiung 发表于 2012-1-4 17:19


A1:可以用新建一个文件的方式,是否有特殊关键字达到类似效果,估计应该会有,但需要查查编译器手册确定一下,另外IAR下面的__root也并不是取消优化的意思吧!但一般能达到类似不优化的效果,例如一段无效变量定义,使用了__root后不会被优化删除。
A2:MPLAB下面用PICC16编译的时候,EEPROM中的数据会自动加载到HEX文件中,不需要单独再生成E2文件,烧写的时候选择FLASH和EEPROM空间全部烧写就可以了。
NE5532 发表于 2012-1-5 10:02 | 显示全部楼层
不能读到FF就改写成E2的值,因为FF也可以是他正常的设置值
Ryanhsiung 发表于 2012-1-5 08:17


我是说你另外找个地址做这个标志哈。
兰天白云 发表于 2012-1-5 10:53 | 显示全部楼层
第一个问题,我的做法是把C写的简单,简单到类似汇编级,这样,编译器想优化都没门
 楼主| Ryanhsiung 发表于 2012-1-5 11:27 | 显示全部楼层
A1:可以用新建一个文件的方式,是否有特殊关键字达到类似效果,估计应该会有,但需要查查编译器手册确定一下,另外IAR下面的__root也并不是取消优化的意思吧!但一般能达到类似不优化的效果,例如一段无效变量定 ...
yewuyi 发表于 2012-1-5 08:48


A1:编译器手册里我没找到
A2:那我要怎么设定EEPROM里的值呢??
 楼主| Ryanhsiung 发表于 2012-1-5 11:28 | 显示全部楼层
第一个问题,我的做法是把C写的简单,简单到类似汇编级,这样,编译器想优化都没门
兰天白云 发表于 2012-1-5 10:53

那不好做啊
兰天白云 发表于 2012-1-5 11:33 | 显示全部楼层
确实不好做,前提是要懂汇编
真的厝哥 发表于 2012-1-5 12:40 | 显示全部楼层
围观,领教
cool_coder 发表于 2012-1-5 13:02 | 显示全部楼层
#pragma optimize= none //none, low, medium, high, size, or speed放在被优化函数前
 楼主| Ryanhsiung 发表于 2012-1-5 16:16 | 显示全部楼层
本帖最后由 Ryanhsiung 于 2012-1-5 16:23 编辑
#pragma optimize= none //none, low, medium, high, size, or speed放在被优化函数前
cool_coder 发表于 2012-1-5 13:02

这个是PICC的吧,我C18中提示 unknown pragma 'optimize'?我找C18里PRAGMA中说明也没有这个
兄弟,你用的什么编译器啊
yewuyi 发表于 2012-1-5 17:01 | 显示全部楼层
这个是PICC的吧,我C18中提示 unknown pragma 'optimize'?我找C18里PRAGMA中说明也没有这个
兄弟,你用的什么编译器啊
Ryanhsiung 发表于 2012-1-5 16:16


呵呵,我没装C18的编译器,但应该编译器的帮助手册都应该写了的吧。
 楼主| Ryanhsiung 发表于 2012-1-14 17:14 | 显示全部楼层
本帖最后由 Ryanhsiung 于 2012-1-14 17:31 编辑

1、打开EEPROM界面打开,选择Export Table,将表导出!

2、会导出MCH文件


3、使用记事本打开此文件,里面就是导出的文件。
4、修改你要的值,保存。

5、在烧写时,打开EEPROM界面打开,选择Import Table,将表导入就可以了!

本帖子中包含更多资源

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

×
 楼主| Ryanhsiung 发表于 2012-1-14 17:32 | 显示全部楼层
建议可以在MPLAB中修改EEPROM的值,修改后导出!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:嵌入式技术专家
简介:道阻且长,行则将至!

64

主题

4653

帖子

14

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