Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Cannot write to flash memory
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
dio
Приветствую ! Хочю подвесить клавиатуру 4х4 к меге8. Знаю что есть готовые библ. но хочю сделать сам. Пишу следующее в Иар 4.12 :



enum TState{notpressed, prepressed, pressed, longpressed, released};

struct SingleKey
{
byte worked;
byte count;
enum TState state;
};

__flash struct SingleKey Keys[4][4];

int main( void )
{
Keys[1][1].count=1;
}



И получаю : Cannot write to flash memory. help.gif

Может забыл чего в Опциях ?!
Буду благодарен за помощь !
beer_warrior
Код
__flash struct SingleKey Keys[4][4];
...
Keys[1][1].count=1;

Так оно и есть - пишите же во флэш. Убирайте модификатор и будет вам счастье.
SpiritDance
IAR не обладает подпрограммами записи во флеш по ходу выполнения программы, во избежание. Или пишите свои подпрограммы на ассемблере или размещайте переменные для постоянного хранения в eeprom. Последний вариант намного лучше, так как flash в avr записывается постранично. В вашем случае не вижу смысла размещать Keys в энергонезависимой памяти, объявляйте переменные без модификаторов - используйте RAM.
dio
Цитата(beer_warrior @ Jun 25 2006, 20:44) *
Код
__flash struct SingleKey Keys[4][4];
...
Keys[1][1].count=1;

Так оно и есть - пишите же во флэш.


Я туда и хочю! Думал так будет лучше! Кроме того в примерах других делалось тоже самое ! blink.gif
Посоветуйте !

Цитата(SpiritDance @ Jun 25 2006, 20:50) *
В вашем случае не вижу смысла размещать Keys в энергонезависимой памяти, объявляйте переменные без модификаторов - используйте RAM.


Благодарю, этого я и хотел услышать !!!

smile.gif
SpiritDance
Цитата(dio @ Jun 25 2006, 21:57) *
Я туда и хочю! Думал так будет лучше! Кроме того в примерах других делалось тоже самое ! blink.gif

Каких примерах? Зачем данные с клавиатуры писать в энергонезависимую память?. У нее кроме всего прочего ограниченное количество циклов перезаписи и у flash и у eeprom.

Цитата(dio @ Jun 25 2006, 21:57) *
Посоветуйте !

Уже ж посоветовали. smile.gif
Код
struct SingleKey Keys[4][4];
...
Keys[1][1].count=1;


Блин. Издержки письменного общения. smile.gif Всегда пжалста!
beer_warrior
Логически непонятно, зачем это нужно? Такие вещи как клавиатура могут менять данные по нескольку раз в секунду.Так протереть дырку во флэше на раз два. Во флэш стоит писать только какие-нибудь апдейты кода, или таблицы перекодировки.В eeprom калибровки, адреса и прочие данные для настройки конкретного экземпляра устройства.Все остальное в ОЗУ.
Объясните вашу идею с флэшом.
Shurmas
Цитата(beer_warrior @ Jun 25 2006, 22:09) *
Такие вещи как клавиатура могут менять данные по нескольку раз в секунду.Так протереть дырку во флэше на раз два.


я вот так дырку протер в начале карьеры ... долго голову ломал почему прибор работать перестал.
dio
Спасибо огромное за пояснения, я понял все с первого раза, просто не заметил что ответил неправильно на ваш пост (два слились в один) и вас запутал. Спасибо ещё раз !!!
IgorKossak
Цитата(dio @ Jun 25 2006, 22:47) *
...просто не заметил что ответил неправильно на ваш пост (два слились в один) ...

Это не баг, а фича!
При частых подряд ответах одного автора в одной ветке посты сливаются, чтобы места занимать меньше.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.