본문 바로가기

3D Printer/OctoPrint

Chamber Manager Board 제작 #14 (EEPROM에 설정값 저장하고 불러오기 기능 추가)

【 3D 프린터 챔버 만들기 】


[ Control Board 제작 #14 : EEPROM에 설정값 저장하고 불러오기 ]


□ 필요 사항


 - EEPROM Library 사용


   : uint8_t EEPROM.read(int idx) => EEPROM에서 데이터 읽기

   : void    EEPROM.update(int idx, uint8_t val) => 해당 주소에 저장된 데이터와 쓸 데이터가 다를 경우에만 

                                                          EEPROM에 데이터 쓰기



[ EEPRROM용 함수 작성 ]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
typedef struct {  // Length 27
  char firstRun;
  int Temp_ControlMode;
  int Temp_Target;
  int Door_Ventil_Pos_Max;
  int Door_Ventil_Pos_Min;
  int Door_Filter_Pos_Max;
  int Door_Filter_Pos_Min;
  int Door_Ventil_Angle;
  int Door_Filter_Angle;
  int Door_Ventil_Speed;
  int Door_Filter_Speed;
  int Light_ControlMode;
  int Light_Sensitivity;
  int Light_InitailStatus;
} DEVICEPARAM, *pDEVICEPARAM;
 
DEVICEPARAM g_Param;
 
#define EEPROM_ADDRESS  995  // Max 1024
 
void WriteEEPROM(DEVICEPARAM* pParam) {
  uint8_t* buf = (uint8_t*)pParam;
 
  pParam->firstRun = 1;
 
  for(unsigned int i=0; i<sizeof(DEVICEPARAM); i++) {
    EEPROM.update(i+EEPROM_ADDRESS, buf[i]);
  }
}
 
void ReadEEPROM(DEVICEPARAM* pParam) {
  uint8_t* buf = (uint8_t*)pParam;
 
  for(unsigned int i=0; i<sizeof(DEVICEPARAM); i++) {
    buf[i] = EEPROM.read(i+EEPROM_ADDRESS);
  }
}
cs