Перейти к содержанию
    

Вопрос про CVAVR

Довел до ума програмку зашил в мк и вот бли не задача не работает,

Думаю ну ладно может где напортачил, перелистал код все ок,

Вот только в майне у меня есть токая строка

void main(void)
{
init;
if (byte_read(0)==0)
   {
      #ifdef DEBUG
      putsf("FIRST RUN !!!\n\r");
      #endif   
      byte_write(126,0);
      byte_write(127,0);         
}
// ну и далее код
}

 

тут я понял что чтото с eeprom-ом случилось, а чем посмотреть???

Ну значит тыкаю на кнопку (запустить программатор),

вижу есть прочесть eeprom, ну я туда а он не читает. Так вот я подумал что пипец рому, ну запутил риал,

читает все ок, но ведъ в CVAVR поудобней будет, и тут я заметил что если проект не открыт, то читает и всек остальное нормально а если проджект открыт то пипец (и тут я заметил).

Что в окошке EEPROM в поле адрес окончания стоит 0 а не 7F поставил 7F и все ок но оно все время от туда слетает,

 

Может кто знает как решить данный трабл (чтод не ставить туда каждый раз адрес последнего байта), или разработчик так задумал ????

 

Может где галочку поставить нода ???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может в проекте неправильно проц указан? Может у того, который указан и EEPROMa-то нет.

 

0-ой адрес в EEPROMе не советовал бы использовать. Это "мусорный" нулевой байт. Иногда стирается при случайных сбросах. И это. Если проверяете в "if" так после "if" нужно же его прописывать ненулевым значением.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может в проекте неправильно проц указан? Может у того, который указан и EEPROMa-то нет.

 

0-ой адрес в EEPROMе не советовал бы использовать. Это "мусорный" нулевой байт. Иногда стирается при случайных сбросах. И это. Если проверяете в "if" так после "if" нужно же его прописывать ненулевым значением.

 

В проджекте указан 90S2313, а вот если в окне програматора поменять его на самого себя все становиться ок , но потом всеравно обваливается.

 

А какова вероятноть того что он будет затераться??? а то я уже сурц отдал. а в этом байте храниться информация о количестве ключей записанных в память.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может в проекте неправильно проц указан? Может у того, который указан и EEPROMa-то нет.

 

0-ой адрес в EEPROMе не советовал бы использовать. Это "мусорный" нулевой байт. Иногда стирается при случайных сбросах. И это. Если проверяете в "if" так после "if" нужно же его прописывать ненулевым значением.

 

В проджекте указан 90S2313, а вот если в окне програматора поменять его на самого себя все становиться ок , но потом всеравно обваливается.

 

А какова вероятноть того что он будет затераться??? а то я уже сурц отдал. а в этом байте храниться информация о количестве ключей записанных в память.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вероятность пропорционально частоте записи в епром по любым адресам, делённая на всё время и умноженная на вероятность сброса (пропадения питания). Короче, если во время записи в епром проц аппаратно сбросится (питание, вачдог и др.) то нулевой байт затрётся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а вот мне видится, что такая вот самопроизвольная порча еепромов в АВРках описана в эррартах, там сказано, что есть проблема со сбросом по питанию, если ставить внешние супервизоры такие как LM809, MAX809 или что то посерьезней, то все будет окей. Они вроде бы переделали потом схематику в мегах, но я все равно ставил эти трехножки, они копейки стоили и занимали на плате минимум места. Хотя может действительно я что-то не догонял все это время. У меня много реальных проектов, в которых первая (нулевая) ячейка использовалась (там был последний конфигурируемый IP-адрес устройства), если бы он накрывался, то девайс бы сразу же вырубался, а этого не припомнится, их уже более двух сотен спокойненько день изо дня работают на заводах заказчика и летают в наших отечественных самолетах. Может надо срочно делать апдейт ембеддед программ, а то падать начнут :(

 

И еще у меня еепромка обычно промаскирована в шахматном порядке какой-то константой, при каждой загрузке я проверяю эту маску, если в ней что то не так, то как минимум светодиодик. сообщение на верх системы по какому нить интерфейсу. Потому что в еепромке часто хранятся важные константы, уставки, калибровки, если они собъются, система получит некорректный алгоритм управления и это может закончится не только плачевно для системы, сколько для объекта, которым она управляет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По поводу порчи еепрома- я всегда забиваю первые 10 байт какой-нибудь фигней, а все данные хранятся начиная с 10-го байта.

 

До 10-го байта порча не доходила у меня никогда :) а вот , примногократном перепрограммировании, некоторые еячейуки переставали работать. примерно через год эксплуатации. это я в программе установок сделал мигание на ЖКИ устанавливаемого параметра (проект был программатор таймера), примерно с частотой 5гц, и с этой частотой переменные еепром переписывались. через год эксплуатации наиболее часто изменяемые параметры перестали меняться :). сделал буфер в озу- все прошло..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...