Страница 1 из 1

Как защить данные в EEPROM?

Добавлено: Пн мар 19, 2012 12:21:29
AaNnDdRrEeYy
Есть простенькая программка для ATmega8 при старте она должна считать данные из EEPROM а в процессе работы если нужно обновить эти данные.
вот так я считываю

Код: Выделить всё

EEMEM unsigned char abc_;
int main()
{
    unsigned char abc =0;
    abc = eeprom_read_byte(&abc_);
   //а так записываю
    eeprom_update_byte(&abc_,abc);
 
}
проблема в том, как мне прошить в МК первоначальное значение переменной abc_, которое прочитается первый раз при запуске программы?

Re: Как защить данные в EEPROM?

Добавлено: Пн мар 19, 2012 12:34:15
korsaj
У кажи начальный адрес епрома и забивай данные! После компилирования в прошивке все будет.

Re: Как защить данные в EEPROM?

Добавлено: Пн мар 19, 2012 13:10:42
AaNnDdRrEeYy
а как его указать? я прошиваю программкой khazama в ней отдельно кнопки прошить флеш и прошить eeprom. какой файл выбрать для прошивки eeprom?

Re: Как защить данные в EEPROM?

Добавлено: Пн мар 19, 2012 13:45:08
Мастер Ломастер
AaNnDdRrEeYy писал(а):какой файл выбрать для прошивки eeprom?
с расширением eep обычно. по формату - обычный hex

Re: Как защить данные в EEPROM?

Добавлено: Пн мар 19, 2012 13:53:07
AaNnDdRrEeYy
когда нажимаю на загрузить eeprom программа не позволяет выбрать eep. там фильтр по расширению hex.

Re: Как защить данные в EEPROM?

Добавлено: Пн мар 19, 2012 13:58:29
Мастер Ломастер
ну переименуйте... проблему нашли

Re: Как защить данные в EEPROM?

Добавлено: Пн мар 19, 2012 14:30:54
AaNnDdRrEeYy
конечно проблема, ведь в этот файл сначала надо данные записать а как это сделать нигде не написано, всюду только как с ними работать.

Re: Как защить данные в EEPROM?

Добавлено: Пн мар 19, 2012 14:36:35
Engineer_Keen
Данные в файл для EEPROM записываются во время компиляции проекта.

Re: Как защить данные в EEPROM?

Добавлено: Пн мар 19, 2012 14:39:37
AaNnDdRrEeYy
если у меня в коде будет написано так
EEMEM unsigned char abc_ = 5;
в файл eep. запишется число 5?

Re: Как защить данные в EEPROM?

Добавлено: Пн мар 19, 2012 14:44:38
Engineer_Keen
Почти так... Число 5 будет где-то посередине одной из строчек. формат HEX-файла
Примерно вот так будет выглядеть .eep:

Код: Выделить всё

:0100000005FA
:00000001FF
Не знаю только верно ли вы переменную объявили.
Кстати, гугль как всегда рулит, вот первая ссылка по запросу winavr eeprom...

Re: Как защить данные в EEPROM?

Добавлено: Пн мар 19, 2012 15:21:12
AaNnDdRrEeYy
Вообщем почему то портяться данные при записи, при чтении данных там вместо 5 цифра 255.
сделал так
убрал код чтения данных оставил только код записи. Запустил мк, данные в память записались. считал программатором epprom и сохранил на комп., исправил программу (вставил блок чтения, откомпилировал), залил новую прошивку и залил сохраненные данные из eeprom.
получил ту же фигню вместо цифры 5 читается 255.
я так думаю что при второй компиляции (когда блок чтения вставил) компилятор все по другим адресам раскидал.

Re: Как защить данные в EEPROM?

Добавлено: Пн мар 19, 2012 15:32:02
Engineer_Keen
Ничего он не раскидывает, если ему не указать. Адреса переменных идут в порядке их объявления в программе. Если стоит одно объявление переменной в EEPROM, оно всегда будет по адресу 0x0000. А почему у вас портятся данные может быть уйма причин, начиная от ошибок в программе (приводите код целиком, чтобы участники форума не гадали) и кончая фьюзами и настройками оболочки программатора.

Re: Как защить данные в EEPROM?

Добавлено: Пн мар 19, 2012 15:40:23
AaNnDdRrEeYy
вот весь код. около 1000 строк, остальные подключаемые файлы это файлы драйверов usb.
контроллер atmega8535 частота 12 Мг
в EEPROM сохраняются настройки канала по команде с компа, читаются при старте программы.

Re: Как защить данные в EEPROM?

Добавлено: Пн мар 19, 2012 15:51:21
Engineer_Keen
AaNnDdRrEeYy писал(а):остальные подключаемые файлы это файлы драйверов usb.
Которые по умолчанию есть у всех кто работает с AVR, ага :facepalm: