2013-02-22 4 views
1

PIC가 꺼진 후에도 PIC24F에서 데이터 값의 지속성 (저장)에 관한 질문이 있습니다.PIC24F - PIC의 전원이 꺼진 후에도 데이터 값이 지속될 수 있습니까?

데이터 시트를 읽었지만 EEPROM과 플래시 메모리의 차이에 관해 혼동 스럽습니다.

예를 들어 변수 "x"가 있다고 가정하면 PIC가 종료 된 후에도 "x"의 값이 유지되는 방법이 있습니까? 코드가 독립 실행 형 작업 (COE_OFF)으로 컴파일되는 한 프로그램이 플래시 메모리에 지속될 수 있다는 것을 알고 있습니다. 그러나 저는 데이터 값에 대해 특별히 궁금합니다.

데이터 메모리에 프로그램 메모리와 메모리를 비 휘발성으로 설정하면 전원이 꺼져 있어도 계속 유지됩니까?

"static"으로 값을 선언해야합니까? 예를 들면 다음과 같습니다. static int x; ?

전원이 꺼진 후에도 데이터 값이 지속될 수있는 잘못된 방법이 있습니까?

도움과 설명에 감사드립니다!

답변

0

전원을 끄면 레지스터 및 RAM 변수의 내용이 손실됩니다. 플래시와 EEPROM은 둘 다 영구적입니다. 플래시는 큰 블록 (128K 이상)에서만 지울 수 있습니다. EEPROM 워드는 개별적으로 읽거나 쓸 수 있습니다. EEPROM을 가지고 있다면 소량의 데이터를 저장하는 것이 가장 좋습니다. 일반적으로 EEPROM을 직렬로 읽고 써야합니다.

+0

PIC24는 한 페이지가 아닌 전체 장치에 최대 128k의 플래시를 갖습니다. 페이지 크기는 1.5kBytes (64 개 명령어의 8 개 행, 각 3 바이트)입니다. – janm

1

장치의 데이터 시트에서 읽은 것처럼 TBLWTL 및 TBLWTH 지침을 사용하여 페이지에 플래시로 작성해야합니다. 이것은 일반적으로 부트 로더를 통해 소프트웨어를 업데이트하기위한 것이며, 사용자가 수행하는 것처럼 보이지 않습니다.

EEPROM에 액세스하려면 더 작은 단위로 수행 할 수 있으며 변수가 메모리 맵에서 어디에 있어야하는지 선언하기위한 컴파일러 편의 매크로가 있습니다. 변수가 EEPROM에 저장되도록 지정하면 컴파일러에서 해당 변수를 액세스하고 업데이트하기위한 지침을 생성합니다. 컴파일러 내장 함수 또는 TBL 명령어를 사용하여 직접 읽을 수도 있습니다. 당신이 변수에 액세스 할 때 컴파일러가 무엇을보고 생성 된 어셈블러에

unsigned __attribute__((space(eedata), aligned(2)) my_eeprom_variable; 

봐 :

선언은 아마 같을 것입니다.

변수 선언 static에는 전통적인 C 의미론 만 있습니다. 변수의 범위와 초기화 규칙을 제어합니다.

0

답변 해 주셔서 감사합니다.

다른 제안을 한 후에 MPLAB C30 컴파일러 데이터 시트를 다시 읽고 "지속적"속성을 발견했습니다. 데이터 시트 당

:

는 "영구 속성은 변수가 초기화 또는 시작시 삭제하지 않도록 지정 영구 속성을 가진 변수는 장치 리셋 후 유효합니다 상태 정보를 저장하는 데 사용될 수 있습니다. . "

나는 이것이 작동 하는지를보기 위해 이것을 사용하려고 노력할 것입니다.