|
Проблема с имуляцией AVRStudio 4.16, Не симулируется чтение flash |
|
|
|
May 6 2009, 19:30
|
Участник

Группа: Свой
Сообщений: 58
Регистрация: 23-03-05
Из: Москва
Пользователь №: 3 625

|
AVR Studio 4.16 build 628 WinAVR-20090313
Код:
__attribute__((__progmem__)) unsigned char _zzz[3] = {1,2,3}; unsigned char abc;
main() { abc=_zzz[1]; }
При симуляции значение abc не равно _zzz[1] !!! Пробовал несколько авр'ов от доисторического at90s8535 (который, собственно, и интересует), до atmega128. Оптимизация выключена. При просмотре памяти по адресу _zzz данные лежат нормальные. Кто-нибудь сталкивался?
Сообщение отредактировал _VM - May 6 2009, 19:54
|
|
|
|
|
 |
Ответов
|
May 6 2009, 20:38
|
Участник

Группа: Свой
Сообщений: 58
Регистрация: 23-03-05
Из: Москва
Пользователь №: 3 625

|
Пробдема решилась. Правильно делать так: #include <avr/pgmspace.h>
__attribute__((__progmem__)) unsigned char _zzz[3] = {1,2,3}; unsigned char abc;
main() { abc= pgm_read_byte(&_zzz[1]); }
|
|
|
|
|
Mar 23 2010, 16:22
|
Частый гость
 
Группа: Участник
Сообщений: 91
Регистрация: 5-11-06
Пользователь №: 21 995

|
Цитата(_VM @ May 6 2009, 23:38)  Пробдема решилась. Правильно делать так: #include <avr/pgmspace.h>
__attribute__((__progmem__)) unsigned char _zzz[3] = {1,2,3}; unsigned char abc;
main() { abc= pgm_read_byte(&_zzz[1]); } да все верно а вы нашли функцию записи? pgm_write_byte у меня пишет что нету определения этой функции
Сообщение отредактировал Mad-man - Mar 23 2010, 16:22
|
|
|
|
|
Mar 23 2010, 17:20
|
Частый гость
 
Группа: Участник
Сообщений: 91
Регистрация: 5-11-06
Пользователь №: 21 995

|
Цитата(Сергей Борщ @ Mar 23 2010, 19:48)  Вы слишком многого хотите. Изучайте boot.h, лучше всего внимательным чтением документации на avr-libc. да я уже читаю) это плохо что нужно переписывать целыми страницами флеш чтобы сохранить пару байт данных при этом нужно держать буфер на готове размером 128 байт и гемороиться с выравниманием этих двух байт по границе страницы (я так и не понял как)
|
|
|
|
|
Mar 23 2010, 21:14
|
Частый гость
 
Группа: Участник
Сообщений: 91
Регистрация: 5-11-06
Пользователь №: 21 995

|
Цитата(Сергей Борщ @ Mar 23 2010, 22:16)  Вообще-то для подобных целей существует eeprom. ооо точно!!! спасибо за идею! вижу _EEPUT _EEGET!!!! запись чтение побайтно! это то что нужно! спасибо! а сколько раз можно переписывать байт в eeprom? для флеш я знаю 10.000 перезаписей на страницу....
Сообщение отредактировал Mad-man - Mar 23 2010, 21:15
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|