[an error occurred while processing this directive] [an error occurred while processing this directive]
Я делал так:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Baser 19 апреля 2002 г. 14:46
В ответ на: По разным причинам надо использовать EEPROM в AVR 8515 на IAR 1.4С Как правильно описать сегмент EEPROM в .xcl для использования под масивмасив отправлено тормоз 19 апреля 2002 г. 11:25

Описывал два свои сегмента, в одном размещал константы, разрешенные изменять прользователям, в другом калибровочные (заводские) константы:

добавка к *.xls файлу:

-! EEPROM memory -!
-Z(ZPAGE)EEPROM1=0-FF
-Z(ZPAGE)EEPROM2=100-1FF

описание переменных в файле ee_def.c:

//*******************************//
#pragma memory = dataseg(EEPROM1)
char No_Use_Byte1;
char CycleCfg;
char AddCorr[3];
struct LvlConst {
int HighLvl;
int LowLvl;
};
struct LvlConst CalcConst[3];
struct LvlConst Threshold[3];
.....
int EEp1CRC;
#pragma memory = default
//*******************************//
#pragma memory = dataseg(EEPROM2)
struct CfgConst {
float MulConst;
float AddConst;
};
struct CfgConst AbsConst[3][3];
char ProdYear[2];
char ProdMonth;
char SerialNum[3];
......
int EEp2CRC;
#pragma memory = default
//*******************************//

Макросы не применял, работал с EEPROM-ом через свои процедуры:

char WriteEEp1 (char Addr,char Val);
char WriteEEp2 (char Addr,char Val);
char ReadEEp1 (char Addr);
char ReadEEp2 (char Addr);

При линковке не обращал внимания на сообщения:

Linking...
Warning[18]: Segment RSTACK overlaps segment EEPROM2
Warning[18]: Segment CSTACK overlaps segment EEPROM2

Работать было достаточно удобно и никаких проблем при этом не возникало. Успехов!

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru