реклама на сайте
подробности

 
 
> Подкиньте идею организации массива данных.
zheka
сообщение Jan 15 2011, 19:57
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Следующая задачка. ОПять же ради бога, не подумайте что я прошу писать за меня программу. Просто мне хочется совета от человека, который напишет ее рациональнее чем я.

Итак, нужно сделать массив для заполнения таблички.
1 колонка - порядковый №
2 колонка - заголовок
3 колонка - сохраняемая настройка
4 колонка - текущее состояние.

Ясно что первую и вторую колонки нужно сохранять во flash. УДобнее будет и заполнять и редактировать.
3 колонка - однозначно eeprom
4 колонка - ram.

Возникают следующие мысли - сделать структуру в RAM типа:

Код
typedef struct {
unsigned char chain_id; //номер цепи
char header_1;          // строка 1 заголовка
char header_2;          // строка 2 заголовка
char header_3;          // строка 3 заголовка
unsigned char key_id;   // номер ключа коммутирующего цепь (сохраняемая в eeprom настройка)
unsigned char default;  // состояние по умолчанию (сохраняемая в eeprom настройка)
unsigned char diagnos;  // результат диагностики цепи (записывается в RAM во время работы)
unsigned char state;    // включен/выключен (записывается в RAM во время работы)
} TChain;


TChain CHAINS[40];

unsigned char eeprom key_ids[40];
unsigned char eeprom defaults[40];


и вот дальше я что-то застрял... думается что массив CHAINS будет формироваться после загрузки, заполнять его путем переписи из key_ids и defaults, кроме того, такой же массив с заголовками создать во flash...

А надо ли это? может быть тупо пользоваться по отдельности массивами key_ids, defaults и массивом заголовков из flash ??
СТруктура конечно удобная, но нужна ли она в данном случае?

Как бы вы организовали операции с данными в описанной ситуации?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
codier
сообщение Jan 16 2011, 09:07
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 21-01-05
Пользователь №: 2 113



Надо разобраться какие ресурсы где хранятся и там их и хранить :-)

Саму структуру, которая это всё собирает можно тоже во флеш пихать, т.к. она указывает на константные адреса что во flash, что в ram, что eeprom.

Идея такая:
Код
flash char descr_1[] = "Header 1";  // во FLASH
flash char descr_2[] = "Header 2";  // во FLASH

eeprom struct s_state config_1;  // в EEPROM
eeprom struct s_state config_2;  // в EEPROM

struct s_state state_1;  // в RAM
struct s_state state_2;  // в RAM


flash TChain chain_1 = {&descr_1, &config_1, &state_1}; // Указывает на 1 элемент. Сам хранится во FLASH
flash TChain chain_2 = {&descr_2, &config_2, &state_2}; // Указывает на 2 элемент. Сам хранится во FLASH

// Или так:
flash  TChain chains[] = {
    {&descr_1, &s_config_1, &s_state_1},
    {&descr_2, &s_config_2, &s_state_2}
};


Можно сделать какие-нибудь обёртки с макросами для удобства создания, наверное.

Тут главное использовать функции доступа к элементам соответствующие их типам хранения (RAM, FLASH, EEPROM).

Сообщение отредактировал codier - Jan 16 2011, 09:10
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 14:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01368 секунд с 7
ELECTRONIX ©2004-2016