Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с имуляцией AVRStudio 4.16
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
_VM
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
Пробдема решилась.
Правильно делать так:
#include <avr/pgmspace.h>

__attribute__((__progmem__)) unsigned char _zzz[3] = {1,2,3};
unsigned char abc;

main() {
abc= pgm_read_byte(&_zzz[1]);
}
Mad-man
Цитата(_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, 18:22) *
pgm_write_byte
у меня пишет что нету определения этой функции
Вы слишком многого хотите. Изучайте boot.h, лучше всего внимательным чтением документации на avr-libc.
Mad-man
Цитата(Сергей Борщ @ Mar 23 2010, 19:48) *
Вы слишком многого хотите. Изучайте boot.h, лучше всего внимательным чтением документации на avr-libc.


да я уже читаю)

это плохо что нужно переписывать целыми страницами флеш чтобы сохранить пару байт данных
при этом нужно держать буфер на готове размером 128 байт
и гемороиться с выравниманием этих двух байт по границе страницы (я так и не понял как)
Сергей Борщ
Цитата(Mad-man @ Mar 23 2010, 19:20) *
это плохо что нужно переписывать целыми страницами флеш чтобы сохранить пару байт данных
Вообще-то для подобных целей существует eeprom.
Mad-man
Цитата(Сергей Борщ @ Mar 23 2010, 22:16) *
Вообще-то для подобных целей существует eeprom.


ооо точно!!! спасибо за идею!
вижу _EEPUT _EEGET!!!! запись чтение побайтно!

это то что нужно! спасибо!

а сколько раз можно переписывать байт в eeprom?
для флеш я знаю 10.000 перезаписей на страницу....
V_G
Цитата(Mad-man @ Mar 24 2010, 07:14) *
а сколько раз можно переписывать байт в eeprom?
для флеш я знаю 10.000 перезаписей на страницу....

Зависит от модели проца, но как правило, не менее 100000. Пишут в даташитах.
Сергей Борщ
Цитата(Mad-man @ Mar 23 2010, 23:14) *
а сколько раз можно переписывать байт в eeprom?
для флеш я знаю 10.000 перезаписей на страницу....
Перефразируя ФИДОшное "Чтение документации из интернета вслух - 100 баксов в час": "Цитирование даташита - 100 евро в час (бакс упал)"
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.