2012-06-15 1 views
0

글쎄, 그 질문은 모두 그것을 말한다. 내가하고 싶은 것은 마이크로 컨트롤러의 전원을 켤 때마다 저장된 데이터에서 일부 데이터를 가져와 사용해야한다는 것입니다. 외부 플래시 칩을 사용해서는 안됩니다. 가능한 경우 AVR 스튜디오 4에서 사용할 수 있도록 코드 스 니펫을 제공하십시오. 예를 들어 8 개의 uint16_t 데이터를 저장하면 해당 데이터가 uint16_t 배열에로드됩니다.AVR 마이크로 컨트롤러에 일부 데이터를 영구히 저장할 수 있습니까?

감사합니다.

+1

어떤 AVR을 사용하고 있습니까? 메모리 자원은 장치들간에 매우 상이하고, 일부는 교정 인자, 일련 번호 등을 저장하도록 설계된 사용자 섹터를 갖는다. –

+0

올바른 코드를 포함한 답변을 받으 셨습니다. 동의 하시거나 응답이 만족스럽지 않은 경우 답변 해주십시오. – John

답변

1

프로그래밍 방식으로 데이터를 업데이트 할 필요가없는 경우 데이터를 칩의 프로그램 메모리에 구워야하거나, 읽기 - 쓰기 지원을 원하면 내장 된 EPROM을 사용해야합니다.

Pgmem 예 :

#include <avr/pgmspace.h> 

PROGMEM uint16_t data[] = { 0, 1, 2, 3 }; 

int main() 
{ 
    uint16_t x = pgm_read_word_near(data + 1); // access 2nd element 
} 
+0

사실, 프로그래밍 방식으로 데이터를 저장해야합니다. 문제는 몇 시간 동안 데이터를 사용하는 장소에서 일부 데이터를 보정해야한다는 것입니다. 몇 시간 동안 사용하면 보정을하고 싶습니다. 따라서, 그것을 반복해서 교정하는 것이 좋지 않습니다. 모든 시간 동안 마이크로 컨트롤러를 실행하는 것은 좋지 않습니다. : – ponir

+3

EEPROM이 충분히 양호하지 않습니까? –

0

당신은 당신이 사용하고있는 부분에 대한 데이터 시트를 얻을 필요가있다. 이와 같은 마이크로 컨트롤러는 일반적으로 다른 플래시 메모리에 영향을주지 않고 하나의 전체 플래시를 쉽게 지우는 동시에 다른 부트 로더를 허용하기 위해 적어도 플래시 및 때때로 여러 개의 플래시 뱅크를 포함합니다. 마찬가지로 일부에는 eeprom이 있습니다. 이것은 모두 내부가 아닌 외부입니다. 당신이 프로그래밍 방식으로 저장해야한다고 말한 이후로 이것이 작동해야합니다. (플래시가 필요없는 경우 저장하지 않는 것이 얼마나 쉬운 지 기억하십시오). eeprom 또는 플래시는 전원을 켤 때 비 휘발성 정보를 필요로합니다. 프로그래밍 방식으로 저장할 수있을뿐만 아니라 인터넷 검색에는 분명히 읽지 않은 데이터 시트 외에도이 정보가 포함 된 앱 노트 (읽어야 했음)뿐만 아니라이를 수행하는 방법에 대한 많은 예제가 있습니다. 일종의 프로그래머블 퓨즈를 찾고 있다면, avr의 OTP 버전이있을 수 있으며, 메모리를 프로그래밍하는 방법에 대한 데이터 시트, 프로그래머 참조 및 애플리케이션 노트를 읽어야하며, OTP 파트는 프로그래밍 방식으로 작성되거나 다르게 취급되는 경우 작성할 수 있습니다.

데이터 읽기는 데이터 시트의 메모리 맵에 있으며 해당 주소를 읽는 코드를 작성하십시오. 쓰기는 데이터 시트 (프로그래머 참조 매뉴얼, 사용자 가이드, atmel이 호출하는 모든 것)에 설명되어 있으며 그물에 많은 예제가 있습니다.

+0

감사합니다. 앞으로 데이터 시트를 읽기 시작할 것입니다. :) – ponir

0

avr/eeprom.h의 기능을 사용하십시오. 간단한 경우

eeprom_write_byte (addr, val);

이면 충분합니다.

관련 문제