garlands 0 1 июня, 2008 Опубликовано 1 июня, 2008 · Жалоба собственно, в названии вопрос и отражен: как в EWAVR на этапе проекта инициализировать содержимое eeprom. Например, для mega16. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 2 июня, 2008 Опубликовано 2 июня, 2008 · Жалоба Точно так же, как и любую другую переменную. typedef struct { uint8_t data_a; uint32_t data_b; } MyConfig_t; __eeprom MyConfig_t Config = { 0x12, 0x34567890 }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirYU 0 3 июня, 2008 Опубликовано 3 июня, 2008 · Жалоба Точно так же, как и любую другую переменную.typedef struct { uint8_t data_a; uint32_t data_b; } MyConfig_t; __eeprom MyConfig_t Config = { 0x12, 0x34567890 }; И еще чуть чуть: В настройках проекта Linker->Extra Options птицу в окошко Use command line options а в окно примерно такиу две строчки -y(CODE) -Ointel-extended,(XDATA)=$EXE_DIR$\$PROJ_FNAME$_data.hex И тогда получите прошивку HEX для ЕЕПРОМ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
garlands 0 3 июня, 2008 Опубликовано 3 июня, 2008 · Жалоба Благодарю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alux 0 5 июня, 2008 Опубликовано 5 июня, 2008 · Жалоба Можно и так -y(CODE) -Ointel-extended,(XDATA)=.eep Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Rookie_ 0 21 февраля, 2011 Опубликовано 21 февраля, 2011 · Жалоба Добавил в Linker->Extra options -y(CODE) -Ointel-extended,(XDATA)=$EXE_DIR$\$PROJ_FNAME$.eep Сам код инициализации __eeprom unsigned char erm[15]="Demo STRing"; или так __eeprom char erm1=0x55; Компилится нормально, но файл *.ерр фактически пустой, и не меняется, даже если я выкину строку инициализации из кода. содержимое файла epp ниже. В чем может быть проблема? :040000031000F000F9 :00000001FF Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirYU 0 22 февраля, 2011 Опубликовано 22 февраля, 2011 · Жалоба Добавил в Linker->Extra options -y(CODE) -Ointel-extended,(XDATA)=$EXE_DIR$\$PROJ_FNAME$.eep Сам код инициализации __eeprom unsigned char erm[15]="Demo STRing"; или так __eeprom char erm1=0x55; Компилится нормально, но файл *.ерр фактически пустой, и не меняется, даже если я выкину строку инициализации из кода. содержимое файла epp ниже. В чем может быть проблема? :040000031000F000F9 :00000001FF при объявлении переменных ЕЕПРОМ добавьте ключевое слово __root __eeprom unsigned char erm[15]="Demo STRing"; в вашем случае скорей всего их выкинул компилятор, м.б. вы их не используете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Roger 0 3 марта, 2011 Опубликовано 3 марта, 2011 (изменено) · Жалоба чтобы не создавать схожу тему, спрошу тут. Задача построить список(дерево), поэтому требуется указатель на такой же объект. есть класс(структура) Class MyClass { pulbic: int a,b; MyClass *prt; } как правильно написать чтобы указатель MyClass *prt; располагался во Flash Такая конструкция не работает. __flash MyClass *prt; Изменено 3 марта, 2011 пользователем Roger Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 3 марта, 2011 Опубликовано 3 марта, 2011 · Жалоба Ответ на ваш вопрос - "никак". Объект не может находиться частично в ОЗУ а частично во флеш. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Roger 0 3 марта, 2011 Опубликовано 3 марта, 2011 (изменено) · Жалоба Ответ на ваш вопрос - "никак". Объект не может находиться частично в ОЗУ а частично во флеш. А как его полность разместить во флешь? __flash Сlass MyClass { pulbic: int a,b; MyClass *prt; } так описать класс? тогда как правильно реализовать такую конструкцию: Class MyClass { pulbic: int a,b; MyClass *prt; } ... __flash MyClass m={0,1}; __flash MyClass t={2,3,&m}; Компилятор тоже ругается. Изменено 3 марта, 2011 пользователем Roger Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 3 марта, 2011 Опубликовано 3 марта, 2011 · Жалоба Полагаю, что так: Class MyClass { pulbic: int a,b; __flash MyClass *prt; } ... __flash MyClass m={0,1}; __flash MyClass t={2,3,&m}; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Roger 0 3 марта, 2011 Опубликовано 3 марта, 2011 (изменено) · Жалоба Полагаю, что так: Class MyClass { pulbic: int a,b; __flash MyClass *prt; } ... __flash MyClass m={0,1}; __flash MyClass t={2,3,&m}; Подобную конструкцию побывал, но компилятор ругался... __flash MyClass *prt; Error[Pa004]: illegal declaration Изменено 3 марта, 2011 пользователем Roger Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 3 марта, 2011 Опубликовано 3 марта, 2011 · Жалоба Подобную конструкцию побывал, но компилятор ругался... Для __flash typedef class __MyClass { public: int a, b, c; __MyClass __flash *prt; } MyClass, *p_MyClass; __flash MyClass foo_a = { 1, 2, 3, 0 }; __flash MyClass foo_b = { 1, 2, 3, &foo_a}; int main() { int i, x = 0; for(i = 0; i < 10; i++) { x += foo_a.a; x -= foo_b.b; x ^= foo_a.c; } return x; } Для __eeprom парктически тоже typedef class __MyClass { public: int a, b, c; __MyClass __eeprom *prt; } MyClass, *p_MyClass; __eeprom MyClass foo_a = { 1, 2, 3, 0 }; __flash MyClass foo_b = { 1, 2, 3, &foo_a}; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Roger 0 11 марта, 2011 Опубликовано 11 марта, 2011 · Жалоба Если в класс добавить метод и к нему обращаться то возникают проблемы typedef class __MyClass { public: int a, b, c; __MyClass __flash *prt; void Add() { //a=b+c; } } MyClass, *p_MyClass; __flash MyClass foo_a = { 1, 2, 3, 0 }; MyClass __flash* prt=&foo_a; //создали указатель в OЗУ на объект во flash void main() { prt->Add(); а тут траблы Error[Pe315]: the object has cv-qualifiers that are not compatible with the member function object type is: MyClass __flash при обращении к полям класса проблем нету, а к методам есть и тоже самое если вызвать метод у объекта foo_a.Add(); } Кто может подсказать в чем проблемы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 11 марта, 2011 Опубликовано 11 марта, 2011 · Жалоба Думаю, __flash подразумевает const. Вы пытаетесь вызвать функцию, которая изменяет объект. А объект константный. Если хотите уверить компилятор, что функция не изменяет объект, обявите ее с квалификатором const: void Add() const { //a=b+c; } но тогда в ней нельзя будет делать a= Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться