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

 
 
> Hi-Tech C & EEPROM & FLASH, как красиво работать ?
_Pasha
сообщение Sep 29 2008, 15:52
Сообщение #1


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Доброго времени!
Уж на что в GCC некомфортно получается работать с флешом и еепром, но по сравнению с продукцией hi-tech это - вершина сервиса!
Кто-нить красиво работает в HTC? Имеется ввиду инициализация, работа со структурами... при наличии только EEPROM_READ(address) и __EEPROM_DATA(...).
Грустно все это...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DL36
сообщение Sep 30 2008, 06:00
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Цитата(_Pasha @ Sep 29 2008, 18:52) *
Доброго времени!
Уж на что в GCC некомфортно получается работать с флешом и еепром, но по сравнению с продукцией hi-tech это - вершина сервиса!
Кто-нить красиво работает в HTC? Имеется ввиду инициализация, работа со структурами... при наличии только EEPROM_READ(address) и __EEPROM_DATA(...).
Грустно все это...

Например так
Код
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Восстанавливам данные из EEPROM
//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void initSetNU(void)
{ unsigned char i, *p, n, N;
  i = sizeof(NUcanal);                    // Размер структуры
  p = (unsigned char*)(NUcanal);            // Указатель на место размещения в памяти
  n = NuCanalStartEEprom;                 // Размещение в ЕПРОМ

  while (i--)
    {*(p++)=eeprom_read(n++);}          //Чтение
}

И чего грустить.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 30 2008, 07:30
Сообщение #3


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(DL36 @ Sep 30 2008, 10:00) *
И чего грустить.

Вот чего:
Код
/*My extension to working with EEPROM*/
void eeprom_read_block(void* dest, void*src, size_t size);

/*
total parameter set, stored in EEPROM, fits in single record - the simplest way to operate instead of fixed address definition
*/
typedef struct
{
  int fld1;
  long fld2;
} complex_type_t;

complex_type_t* eep_image;
int requested_field;

void main(void)
{
/* blah blah blah*/
eep_image = (complex_type_t*) 0;
eeprom_read_block(&requested_field,&(eep_image->fld1),sizeof(requested_field));
}


А потом эту структуру инициализируем черт знает чем __EEPROM_DATA (...)
И это при том, что параметров может быть несколько десятков.
Проктологи отдыхают...smile.gif
Go to the top of the page
 
+Quote Post
DL36
сообщение Sep 30 2008, 08:01
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Цитата(_Pasha @ Sep 30 2008, 10:30) *
А потом эту структуру инициализируем черт знает чем __EEPROM_DATA (...)
И это при том, что параметров может быть несколько десятков.
Проктологи отдыхают...smile.gif
Я ведь привел инициализацию сложной структуры, любого размера, из ЕПРОМ.
Практически я делаю так, поскольку вычислять где и что лежит не интересно, и имеется запись тех же параметров в структуру. Под отладчиком пишу где и что надо, снимаю дамп и переписываю его в исходники.

Код
/*####################################################################
* EEPROM DATA Фактически это номер ячейки памяти с которой выполняем старт чтения
*####################################################################*/
#define NuStartEEprom 0         // Тут первое чтение Именно это значение подставляется
                              // в процедуру чтения и записи
#define NU_DET+sizeof(NuStartEEprom)  // Запись, чтение следующей структуры
...
...
...

Так, что вроде никаких проблем, держать переменные в ЕПРОМ
тоже вроде возможно но смысла я не вижу, поскольку будет большое время доступа.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 30 2008, 14:46
Сообщение #5


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(DL36 @ Sep 30 2008, 12:01) *
держать переменные в ЕПРОМ тоже вроде возможно...

А как? просветите, плз. Читал-перечитал TFM - не нашел.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 02:01
Рейтинг@Mail.ru


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