打印

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

[复制链接]
3465|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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空间全部烧写就可以了。

使用特权

评论回复
5
NE5532| | 2012-1-5 10:02 | 只看该作者
不能读到FF就改写成E2的值,因为FF也可以是他正常的设置值
Ryanhsiung 发表于 2012-1-5 08:17


我是说你另外找个地址做这个标志哈。

使用特权

评论回复
6
兰天白云| | 2012-1-5 10:53 | 只看该作者
第一个问题,我的做法是把C写的简单,简单到类似汇编级,这样,编译器想优化都没门

使用特权

评论回复
7
Ryanhsiung|  楼主 | 2012-1-5 11:27 | 只看该作者
A1:可以用新建一个文件的方式,是否有特殊关键字达到类似效果,估计应该会有,但需要查查编译器手册确定一下,另外IAR下面的__root也并不是取消优化的意思吧!但一般能达到类似不优化的效果,例如一段无效变量定 ...
yewuyi 发表于 2012-1-5 08:48


A1:编译器手册里我没找到
A2:那我要怎么设定EEPROM里的值呢??

使用特权

评论回复
8
Ryanhsiung|  楼主 | 2012-1-5 11:28 | 只看该作者
第一个问题,我的做法是把C写的简单,简单到类似汇编级,这样,编译器想优化都没门
兰天白云 发表于 2012-1-5 10:53

那不好做啊

使用特权

评论回复
9
兰天白云| | 2012-1-5 11:33 | 只看该作者
确实不好做,前提是要懂汇编

使用特权

评论回复
10
真的厝哥| | 2012-1-5 12:40 | 只看该作者
围观,领教

使用特权

评论回复
11
cool_coder| | 2012-1-5 13:02 | 只看该作者
#pragma optimize= none //none, low, medium, high, size, or speed放在被优化函数前

使用特权

评论回复
12
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中说明也没有这个
兄弟,你用的什么编译器啊

使用特权

评论回复
13
yewuyi| | 2012-1-5 17:01 | 只看该作者
这个是PICC的吧,我C18中提示 unknown pragma 'optimize'?我找C18里PRAGMA中说明也没有这个
兄弟,你用的什么编译器啊
Ryanhsiung 发表于 2012-1-5 16:16


呵呵,我没装C18的编译器,但应该编译器的帮助手册都应该写了的吧。

使用特权

评论回复
14
Ryanhsiung|  楼主 | 2012-1-14 17:14 | 只看该作者
本帖最后由 Ryanhsiung 于 2012-1-14 17:31 编辑

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

2、会导出MCH文件


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

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

使用特权

评论回复
15
Ryanhsiung|  楼主 | 2012-1-14 17:32 | 只看该作者
建议可以在MPLAB中修改EEPROM的值,修改后导出!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

64

主题

4654

帖子

14

粉丝