Arduino 읽기/쓰기 EEPROM (1)

2709 단어 arduino단편기
공식 설명에 따르면 각 버전의 Arduino는 모두 작은 용량의 EEPROM을 가지고 있다. 각 모델의 AVR칩에는 모두 EEPROM이 있고 외부에서 연결된 EEPROM칩도 있다. 흔히 볼 수 있는 Arduino 컨트롤러의 EEPROM 크기: Arduino UNO, Arduino duemilanove-m328, Zduinom328은 모두 ATmega328칩을 사용하고 EEPROM은 모두 1K Arduino duemilove-m 168의 EEEEBy PROBy는 256이다.
 
여기에 EEPROM을 읽고 쓰는 과정을 간단하게 체험하기 위해 먼저 앞의 10바이트에 각각 250~241 서열 수치를 쓴 다음에 전기를 끊고 다시 전기를 넣고 함수를 읽으며 앞의 10바이트의 내용을 읽어내어 당초 전기를 끊기 전에 저장한 자료가 맞는지 비교하면 된다.
코드 파일:sketcheeprom.ino
/**********************************************************************
  Arduino UNO   
  1K    EEPROM  ,         


 *********************************************************************/

#include       //  EEPROM   ,      

int addr = 0;
int state = 1;
/***********************************************************************

     

 **********************************************************************/
void setup()
{
    Serial.begin(9600);
    if(state)
    {
        Serial.println("read data...");
        read(0);
        
    }else
    {
        Serial.println("write data...");
        int val = 250;
        for(int i = 0;i<10;i++)
        {
            write(val--);
        }
        
    }
    
  

}

void loop()
{
    
}
/****************************************************************
    ,     
      ,            250~241  

 ***************************************************************/

void write(int value)
{
    EEPROM.write(addr,value);
    Serial.print(addr);
    Serial.print(":\t");
    Serial.print(value,DEC);
    
    Serial.print("
"); addr = addr + 1; if(addr == 512) { addr = 0; delay(100); } } /****************************************************************** , , *****************************************************************/ void read(int addr) { int value = 0; for(int i = 0;i<10;i++) { value = EEPROM.read(addr++); Serial.print("addr:"); Serial.print(addr-1); Serial.print("="); Serial.println(value,DEC); Serial.println(""); } } void cleardata() { for(int i=0;i<512;i++) { EEPROM.write(i,0); } digitalWrite(13,HIGH); Serial.println("clear end"); }

주: 변수 state를 읽기와 쓰기를 전환하는 스위치로 사용합니다.state가 0일 때 upload에서arduino판에 이르면 초기화 단계에서 10개의 수치를 쓰고,state가 1일 때 upload에서arduino판에 이르면 초기화 단계에서 EEPROM의 10개 바이트 내용을 읽어내어 직렬 출력을 합니다.
데이터를 쓸 때 직렬 출력:
 
데이터를 읽을 때 직렬 출력:
 
주: EEPROM의 데이터를 제거하면 각 바이트에 0 값을 부여할 수 있습니다. 상기 코드의cleardata () 함수를 보십시오.

좋은 웹페이지 즐겨찾기