Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: как сохранить данные
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
dio
Необходимо сохранить кое какие данные внесенные через 4X4 клаву на m8.
Какие будут предложения?

Благодарю зарание!
IEC
Считываешь данные и сохраняешь в память!

ЗЫ: Каков вопрос, таков ответsmile.gif)
Палыч
Что за данные? Настройки устройства? Протоколирование нажатий кнопок клавиатуры?..

Ответ: Ну, например, использовать 512 байт EEPROM.

Вопрос, конечно, сформулирован очень расплывчато...
dio
Цитата(IEC @ May 22 2007, 14:52) *
Считываешь данные и сохраняешь в память!

ЗЫ: Каков вопрос, таков ответsmile.gif)


smile.gif чтож прийдется согласится


В runtime пользователем вводится через клавиатуру 4ехзначный код, который сохраняется в переменной

char *mat;
mat=GetFromKeyb();

и допустим что mat имеет значение "1234"
как его сохранить в камне в любом виде памяти

камень: mega8
среда: Iar avr 4.10a
GDI
имхо
__no_init eeprom char* mat;
и она всегда будет сохраняться/читаться в/из ЕЕПРОМ
dio
спасибо попробуем!
а можно как нибудь во flash, думаю будет постабильнее!
GDI
Ресурс записи флешь 10000 циклов, еепром -100000, это к сведению.
Чтобы хранить КОНСТАНТЫ во флешь в ИАРе есть префикс flash, чтобы предотвратить копирование в ОЗУ надо использовать еще и префикс const, для записи во флешь надо использовать команды самопрограммирования. У Атмела есть апнота о том как это сделать, но с учетом ресурса стоит ли овчинка выделки? Уточню, для хранения и перезаписи переменной в еепром в ИАРе достаточно добавить eeprom к имени - все подпрограммы для доступа ИАР сделает сам, а для записи во flash надо делать дополнительные телодвижения самому.
IEC
Тем более в EEPROM запись ведется побайтно, а в flash придется перемисывать страницу. Объем страницы зависит от типа AVR.
Наверное лучше сохранять в EEPROM.
Цитата
char *mat;
mat=GetFromKeyb();

и допустим что mat имеет значение "1234"
как его сохранить в камне в любом виде памяти

Это как? переменная mat является указателем на переменную типа char (или на начало массива переменных типа char).
Я бы попробовал написать:
__no_init eeprom char mat_1[4];
а указатель уже делать на массив данных, расположенный в EEPROM/
dio
Цитата(IEC @ May 24 2007, 09:41) *
Это как? переменная mat является указателем на переменную типа char (или на начало массива переменных типа char).


Не надо весь массив сразу, один byte более чем достаточно!

__no_init _eeprom не помогло, почему-то сбрасывается после RESETa

решил проблему иначе:

Код
#include <ina90.h>
#define ee_address 0x01

char w,r;
_EEPUT(ee_address,w);
_EEGET(r,ee_address);



Огромное спасибо всем за участие smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.