<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        關于EEPOM負載均衡想法實現

        作者:lch900   來源:lch900   點擊數:  更新時間:2014年05月16日   【字體:

        大家都知道EEPOM FLASH是有擦寫壽命的

         
        平時我們的單片機總是會用到其中一小部分 若是這一小部分都擦寫到死 那么就會造成機器使用壽命的衰減
         
         
         
        我就琢磨能不能平衡擦寫或者有序擦寫EEPOM中的每一部分
         
        下面的代碼解決了我的疑問
         
         
         
        void EEPOM_Test_AddrChange(void)
        {
         u8 i=0;
         u8 j=0;
         
         Address_Channel_1=STORE_Resistance_Address_Channel_1;
         Address_Channel_2=STORE_Resistance_Address_Channel_2;
         Address_Channel_3=STORE_Resistance_Address_Channel_3;
         DETECT_Address=STORE_RT_DETECT_Address;
         TEMPER_Address=STORE_RT_TEMPER_Address;//定義了五個存儲地址
         
          i = (u8)AD_Get_Average(AD_CHANNEL_0); //ADC采集值做隨機數
         
         while(1)
         {
          EE24c02_transfer(WRITE,Address_Channel_1,&i,1);//寫隨機數
          EE24c02_transfer(READ,Address_Channel_1,&j,1);//讀隨機數
          
          if(i==j)//E2POM沒問題
          {
        #ifdef DEBUG
          SERIAL_Putchar(Address_Channel_1);//如果讀寫正確 證明此字節擦寫正常
        #endif
           break;//跳出循環
          }
          else
          {
        #ifdef DEBUG
          SERIAL_Putchar(Address_Channel_1);
           SERIAL_Putchar(i);
           SERIAL_Putchar(j);
        #endif   
           Address_Channel_1 += 0x14;//如果擦寫不正常 地址+20做為新地址
          }
         }
         
          i = (u8)AD_Get_Average(AD_CHANNEL_0); //產生0-127的隨機數
         
         while(1)
         {
          EE24c02_transfer(WRITE,Address_Channel_2,&i,1);
          EE24c02_transfer(READ,Address_Channel_2,&j,1);
          
          if(i==j)//E2POM沒問題
          {
        #ifdef DEBUG
          SERIAL_Putchar(Address_Channel_2);
        #endif
           break;
          }
          else
          {
        #ifdef DEBUG
          SERIAL_Putchar(Address_Channel_2);
        #endif   
           Address_Channel_2 += 0x14;
          }
         }
         
          i = (u8)AD_Get_Average(AD_CHANNEL_0); //產生0-127的隨機數
         while(1)
         {
          EE24c02_transfer(WRITE,Address_Channel_3,&i,1);
          EE24c02_transfer(READ,Address_Channel_3,&j,1);
          
          if(i==j)//E2POM沒問題
          {
        #ifdef DEBUG
          SERIAL_Putchar(Address_Channel_3);
        #endif
           break;
          }
          else
          {
        #ifdef DEBUG
          SERIAL_Putchar(Address_Channel_3);
        #endif   
           Address_Channel_3 += 0x14;
          }
         }
         
          i = (u8)AD_Get_Average(AD_CHANNEL_0);//產生0-127的隨機數
         while(1)
         {
          EE24c02_transfer(WRITE,DETECT_Address,&i,1);
          EE24c02_transfer(READ,DETECT_Address,&j,1);
          
          if(i==j)//E2POM沒問題
          {
        #ifdef DEBUG
          SERIAL_Putchar(DETECT_Address);
        #endif
           break;
          }
          else
          {
        #ifdef DEBUG
          SERIAL_Putchar(DETECT_Address);
        #endif   
           DETECT_Address += 0x14;
          }
         }
         
          i = (u8)AD_Get_Average(AD_CHANNEL_0); //產生0-127的隨機數
         while(1)
         {
          EE24c02_transfer(WRITE,TEMPER_Address,&i,1);
          EE24c02_transfer(READ,TEMPER_Address,&j,1);
          
          if(i==j)//E2POM沒問題
          {
        #ifdef DEBUG
          SERIAL_Putchar(TEMPER_Address);
        #endif
           break;
          }
          else
          {
        #ifdef DEBUG
          SERIAL_Putchar(TEMPER_Address);
        #endif
           TEMPER_Address += 0x14;
          }
         }
        }
         
        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮