|
发表于 2009-8-28 14:21:53
|
显示全部楼层
void save_adjdata(void)应加延时,修改为如下,否则只能正确写第一个字节
/保存校准参数
//保存区域:FM24C16的 40~52这段地址区间,总共12个字节
void save_adjdata(void)
{
u32 temp;//float temp;
//保存校正结果!
temp=Pen_Point.xfac*100000000;//保存x校正因素
FM24C16_WriteOneByte(40,temp&0xff);
delay_ms(2); //再发送器件地址0XAx,须等候 24C16
FM24C16_WriteOneByte(41,(temp>>8)&0xff);
delay_ms(2);
FM24C16_WriteOneByte(42,(temp>>16)&0xff);
delay_ms(2);
FM24C16_WriteOneByte(43,(temp>>24)&0xff);
delay_ms(2); //
temp=Pen_Point.yfac*100000000;//保存y校正因素
FM24C16_WriteOneByte(44,temp&0xff);
delay_ms(2);
FM24C16_WriteOneByte(45,(temp>>8)&0xff);
delay_ms(2);
FM24C16_WriteOneByte(46,(temp>>16)&0xff);
delay_ms(2);
FM24C16_WriteOneByte(47,(temp>>24)&0xff);
delay_ms(2);
//保存x偏移量
FM24C16_WriteOneByte(48,Pen_Point.xoff&0xff);
delay_ms(2);
FM24C16_WriteOneByte(49,(Pen_Point.xoff>>8)&0xff);
delay_ms(2);
//保存y偏移量
FM24C16_WriteOneByte(50,Pen_Point.yoff&0xff);
delay_ms(2);
FM24C16_WriteOneByte(51,(Pen_Point.yoff>>8)&0xff);
delay_ms(2);
temp=FM24C16_ReadOneByte(52);
temp|=0x01;//标记校准过了
FM24C16_WriteOneByte(52,temp);
} |
|