zoukankan      html  css  js  c++  java
  • 压力校准仪开发日志2017-12-13

    完善

    lcdcommand.c

    /*
    自动保存 上一次运行的点 下一次开机自动选择
    清零按键可以取消它
    return : 
        1: OK
        0: ERROR
    
    每次清零之后 
    每次执行之后都要运行此函数
    */
    u8 SavePreRunPoint(void)
    {
            u8 l_u8ForWhile=0;
            u8 l_u8ForSaveParWhile=0; 
            
            //AT24CXX_Write(CountOfPreRunPointEEPROMAddr,(u8*)u16a_DownPressPara,1); 
            AT24CXX_WriteOneByte(CountOfPreRunPointEEPROMAddr,MainMenu_flag_toChargeMode);
        
            AT24CXX_Write(TheFirstRunPointEEPROMAddr,(u8*)MainMenu_ChargeMode_point,MainMenu_flag_toChargeMode);
        
            return 1;
    }

    完善

    u8 StartCheck_DisInit(void)

    /*开机后的一些参数的清零  HEAD*/    
            for(l_i=0x0000;l_i<0x000D+1;l_i++)//~~~~~~~~!!!!!!!!!!!!!!!!!!   开机主界面自动清空
            {
                    DisplayOneWord(l_i,0x0000);
                    delay_ms(20);
            }
            MainMenu_flag_toChargeMode=0;
            memset(MainMenu_ChargeMode_point,0,5*sizeof(u16));
            g_u8MotorRunningFlag=0;
            g_u8Flag_UPorDOWN=0;  // 这个必须手动清零
            g_u8Flag_ExternalAdd=0;
            /*开机后的一些参数的清零  END*/    
            
            
            
            /*读取打印SavePreRunPoint  函数中保存的上一次的设定点的EEPROM数据*/
            
            MainMenu_flag_toChargeMode=AT24CXX_ReadOneByte(CountOfPreRunPointEEPROMAddr);
            if(MainMenu_flag_toChargeMode>6)  //出现错误    根本没有那么多的运行点 EERPOM读写可能存在错误  编码:EA1
            {
                    printf("出现错误 EERPOM读写可能存在错误,编码:EA1
    ");
                    return 1;
            }
            AT24CXX_Read(TheFirstRunPointEEPROMAddr,(u8 *)MainMenu_ChargeMode_point,MainMenu_flag_toChargeMode);
            printf("MainMenu_flag_toChargeMode is:%d 
    ",MainMenu_flag_toChargeMode);
            for(l_loopFlag2=0;l_loopFlag2<MainMenu_flag_toChargeMode;l_loopFlag2++)
            {
                        printf("上次保存的执行点 is:%d
    ",MainMenu_ChargeMode_point[l_loopFlag2]);
            }
            
            /*读取打印SavePreRunPoint  函数中保存的上一次的设定点的EEPROM数据    over*/
            
            
            
            /*让LCD屏幕自动选定上次执行的点*/
                    for(l_loopFlag2=0;l_loopFlag2 < MainMenu_flag_toChargeMode;l_loopFlag2++)
            {
                    if(MainMenu_ChargeMode_point[l_loopFlag2]<6)
                    {        
                            DisplayOneWord((MainMenu_ChargeMode_point[l_loopFlag2]+5),0x0001);
                            delay_ms(20);
                    }
                    else
                    {
                            printf("出现错误 EERPOM读写可能存在错误,编码:EA2
    ");
                    }                    
            }
            /*让LCD屏幕自动选定上次执行的点   OVER*/
            
            return 0;

    后来增加

     

    发现  外部充气为18  这是因为  第一次使用 导致EEROM内部数据没有存储  

    解决办法

    在EEPROM的自检中加入 是否是第一次使用EERPOM

    如果是第一次使用则  全部内存写一遍 

     

    你会发现

     

     原因:

    存储的数组是16位大小的  而我往外读数据  是8位大小往外读的

    修改如下:

    目前等待验证

  • 相关阅读:
    layui timeline使用
    Java随机数使用
    Matlab信号处理工具箱函数
    高斯白噪声(white Gaussian noise,WGN)
    概率分布之间的距离度量以及python实现
    Wasserstein距离 和 Lipschitz连续
    线性分式变换(linear fractional transformation)
    算法的时间复杂度和空间复杂度-总结
    随机森林(Random Forest,简称RF)
    增强学习与马尔科夫决策过程
  • 原文地址:https://www.cnblogs.com/qdrs/p/8035326.html
Copyright © 2011-2022 走看看