Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: не прошивается eeprom?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Fynjisx
ПРивет Всем!
у меня в программе есть такие строчки:
Код
_no_init __eeprom unsigned char ee1, ee2;
unsigned char width1, width2;

init()
{
... //здесь инициируются переменные
   width1 = ee1;
   width2 = ee2;
}

write()
{
  unsigned char a, b;
...
  ee1 = a; //по идее запись в eeprom
  ee2 = b;
}


main()
{
  init();
  ...
  write();
  ...
}

после того как я запрограммировал AVR, программа по мере выполнения должна записать другие значения в eeprom. Далее я выключаю питание AVR,
затем снова включаю и смотрю на дисплее какие значения в ee и ee1. Тут всё нормально - значения те же которые записала программа
в эти ячейки перед отключением. Но когда я вытаскиваю разъём программатора из платы, и делаю то же самое, т.е подаю питание на AVR,
запускается программа, далее она должна сохранить значения в ячейках ee и ee1, затем я её отключаю, чтобы при новом включении проверить
как записало и вот тут то вижу что значения там не изменились!
Т.е пока программатор подключен, всё нормально, а когда его отключаешь, то возникает подобная штука.
проект написан на СИ, откомпилирован в IAR5.10А, выходной формат msd-i.
Подскажите в чем проблема.
Заранее благодарю...
IgorKossak
Цитата
...Но когда я вытаскиваю разъём программатора из платы, и делаю то же самое, т.е подаю питание на AVR,
запускается программа, далее она должна сохранить значения в ячейках ee и ee1, затем я её отключаю, чтобы при новом включении проверить
как записало и вот тут то вижу что значения там не изменились!
...

Как Вы удостоверяетесь в том, что программа в этом случае вообще стартует и выполняет функцию main()?
RA3WUM
Проверяйте цепи питания и сброса схемы, скорее всего там проблема.
Сергей Борщ
Цитата(Fynjisx @ Jul 6 2009, 06:17) *
т.е подаю питание на AVR,
запускается программа, далее она должна сохранить значения в ячейках ee и ee1, затем я её отключаю, чтобы при новом включении проверить
А при этом втором включении она точно должна сохранить в eeprom другие значения, или те же самые, которые сохраняла и при первом? В приведенном вами коде в eeprom сохраняются значения неинициализированных локальных переменных, т.е. мусор со стека, который может быть и одинаковым от включения к включению.
IgorKossak
Судя по недостаточности информации в приведённом примере, вообще ничего определённого сказать нельзя.
Похоже (только похоже), что всё дело как раз в инициализации переменных.
Кстати, один из способов выявить глюк, это уменьшить проект до минимальных размеров, при которых проявляется глюк, а не приводить фрагменты программы, которые могут не иметь ни малейшего отношения к глюку.

PS: Fynjisx, отвечать на вопросы лучше сюда, а не в личку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.