搜索
bottom↓
回复: 15

怎样才能将浮点数正确写入EEPROM(M8)?

[复制链接]

出0入0汤圆

发表于 2006-8-31 19:29:10 | 显示全部楼层 |阅读模式
请高手指教,怎样才能将浮点数(比如说)比如说36.6666EEPROM(M8)?谢谢了
-----此内容被basten820226于2006-08-31,19:35:06编辑过

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2006-8-31 19:54:57 | 显示全部楼层
结构、联合

出0入0汤圆

发表于 2006-8-31 20:01:06 | 显示全部楼层
用定点方法,如可以将36.6666转换成366666(0x05984A),分三个字节存储。这只是一种办法。楼主可以参考计算机内的定点小数的存储。

出0入0汤圆

 楼主| 发表于 2006-8-31 20:11:21 | 显示全部楼层
哦,谢谢楼上的兄弟,还有具体的参考资料么?

出0入0汤圆

发表于 2006-9-1 06:23:31 | 显示全部楼层
/*****************************************************************************/

#include <avr/io.h>

#include <avr/eeprom.h>



double EE_double EEMEM = 1.235;



int main()

{

volatile double RAM_double1 = 36.6666;

volatile double RAM_double2 = 5.68;



eeprom_write_block((const void*)&RAM_double1, (void*)&EE_double, 4);

eeprom_read_block((void*)&RAM_double2, (void*)&EE_double, 4);



while(1);

return 0;

}
armoksb 该用户已被删除
发表于 2006-9-1 07:01:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2006-9-1 10:07:48 | 显示全部楼层
4楼和我用的一样,感觉也没有问题

出0入0汤圆

发表于 2006-9-1 10:18:28 | 显示全部楼层
GCC新兵,问个问题:double EE_double EEMEM = 1.235; 指向E2PROM的什么地址?如何计算?

出0入0汤圆

 楼主| 发表于 2006-9-2 12:59:33 | 显示全部楼层
谢谢各位,如果我想在程序源文件初始化EEPROM数据,可以这样么?(ICC环境)

#pragma data:eeprom

float n=36.6666

char table[]={0,1,2,3,4,5};

#pragma data:data

┅┅┅┅

float k;

EEPROM_READ((float)&n,k);

EEPROM_WRITE((float)&n,k);

  初学AVR,请高手多多指教

出0入0汤圆

发表于 2010-6-19 22:11:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-19 22:24:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-21 00:35:51 | 显示全部楼层
联合体

出0入0汤圆

发表于 2010-6-21 09:30:28 | 显示全部楼层
36.6666
表示为浮点数:
设高位字节在左:4212AA99  

float n=36.6666;
unsigned char table[4];

(float)table[0] = n;

然后再把table数组一个个存入即可。
不同的环境下要区分大小端。

出0入0汤圆

发表于 2011-3-25 00:18:41 | 显示全部楼层
如果浮点数是一个结构体的成员,上述方法好象不好用?(在STM32下)

出0入0汤圆

发表于 2013-3-4 14:39:48 | 显示全部楼层
用指针!
float  Df_k;
Df_k = 1.01;
I2C_EE_BufferWrite((uint8 *)&Df_k,12,4);//写模块漂移斜率Df_k的值;

出0入0汤圆

发表于 2013-3-25 10:58:33 | 显示全部楼层
testcode 发表于 2006-9-1 06:23
/*****************************************************************************/

#include

#include

double EE_double EEMEM = 1.235;

这一句是啥意思呀?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 01:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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