Faradey 0 20 ноября, 2006 Опубликовано 20 ноября, 2006 · Жалоба если можно, то как определить структуру в еепром? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARIM 0 20 ноября, 2006 Опубликовано 20 ноября, 2006 · Жалоба если можно, то как определить структуру в еепром? struct MyStruct { int alpha; int __flash * beta; /* Pointer to variables in flash memory */ }; __eeprom struct MyStruct gamma; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
otrog 0 20 ноября, 2006 Опубликовано 20 ноября, 2006 · Жалоба Для IAR-а: struct TConstConstructive { double d; double D_; double y; unsigned int CRC16; }; __eeprom struct TConstConstructive ConstConstructiveEEP = {12.0, 25.0, 2.26e-5, 0x545C}; Для CV никак. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Faradey 0 20 ноября, 2006 Опубликовано 20 ноября, 2006 · Жалоба а так почему не работает? struct REG { u08 Lo_byte; u08 Hi_bite; }; struct HOLD_REG { struct REG SS_ADR; struct REG SS_BAUD; struct REG SS_PARITY; struct REG SS_RESERV; }; __eeprom struct HOLD_REG hold_reg; hold_reg.SS_ADR.Lo_byte = 1; ругается: Error[Pe077]: this declaration has no storage class or type specifier Error[Pe147]: declaration is incompatible with "HOLD_REG __eeprom hold_reg" Error[Pe065]: expected a ";" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
otrog 0 20 ноября, 2006 Опубликовано 20 ноября, 2006 · Жалоба __eeprom struct HOLD_REG hold_reg; Помоему компилятору без разницы в каком регистре записаны идентификаторы. Поэтому получилось одинаковое название у типа структуры и у структуры. Пишите struct THOLD_REG { struct REG SS_ADR; struct REG SS_BAUD; struct REG SS_PARITY; struct REG SS_RESERV; }; __eeprom struct THOLD_REG hold_reg; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Faradey 0 20 ноября, 2006 Опубликовано 20 ноября, 2006 · Жалоба __eeprom struct HOLD_REG hold_reg; Помоему компилятору без разницы в каком регистре записаны идентификаторы. Поэтому получилось одинаковое название у типа структуры и у структуры. Пишите struct THOLD_REG { struct REG SS_ADR; struct REG SS_BAUD; struct REG SS_PARITY; struct REG SS_RESERV; }; __eeprom struct THOLD_REG hold_reg; это не так... причина в другом... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
otrog 0 20 ноября, 2006 Опубликовано 20 ноября, 2006 · Жалоба это не так... причина в другом... А вы попробовали мой пример? Компилятор также ругается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Faradey 0 20 ноября, 2006 Опубликовано 20 ноября, 2006 · Жалоба это не так... причина в другом... А вы попробовали мой пример? Компилятор также ругается? клеветать и лгать не в моих традициях Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARIM 0 20 ноября, 2006 Опубликовано 20 ноября, 2006 (изменено) · Жалоба а так почему не работает? struct REG { u08 Lo_byte; u08 Hi_bite; }; struct HOLD_REG { struct REG SS_ADR; struct REG SS_BAUD; struct REG SS_PARITY; struct REG SS_RESERV; }; __eeprom struct HOLD_REG hold_reg; hold_reg.SS_ADR.Lo_byte = 1; ругается: Error[Pe077]: this declaration has no storage class or type specifier Error[Pe147]: declaration is incompatible with "HOLD_REG __eeprom hold_reg" Error[Pe065]: expected a ";" потому что надо чтобы все объекты в структуре были размещены в одном и том же типе памяти . в еепром, флэш, рам. Изменено 20 ноября, 2006 пользователем ARIM Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
otrog 0 20 ноября, 2006 Опубликовано 20 ноября, 2006 · Жалоба клеветать и лгать не в моих традициях Тогда строчку hold_reg.SS_ADR.Lo_byte = 1; перенесите в main, или еще в какую процедуру. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 20 ноября, 2006 Опубликовано 20 ноября, 2006 · Жалоба ... строчку hold_reg.SS_ADR.Lo_byte = 1; перенесите в main, или еще в какую процедуру. т. к. инициализация переменной должна быть в строке, в которой эта переменная обьявляется. В примере Faradey происходит присвоение переменной значения. А это должно осуществляться только внутри функции. И дело здесь вовсе не в eeprom, а в нарушении правил программирования на С. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Faradey 0 20 ноября, 2006 Опубликовано 20 ноября, 2006 · Жалоба ... строчку hold_reg.SS_ADR.Lo_byte = 1; перенесите в main, или еще в какую процедуру. т. к. инициализация переменной должна быть в строке, в которой эта переменная обьявляется. В примере Faradey происходит присвоение переменной значения. А это должно осуществляться только внутри функции. И дело здесь вовсе не в eeprom, а в нарушении правил программирования на С. спасибо IgorKossak . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться