Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: встроенная функция копирования eeprom блоков
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
plombir
EWAVR 5.3
IAR умеет работать с копированием блоков eeprom->ram и ram->eeprom. Например, если это typedef структуры. На входе их задаётся откуда, куда и длина.

А есть ли возможность обратиться к этим функциям, чтобы свои не вставлять?
mempfis_
Цитата(plombir @ Oct 10 2011, 07:39) *
EWAVR 5.3
IAR умеет работать с копированием блоков eeprom->ram и ram->eeprom. Например, если это typedef структуры. На входе их задаётся откуда, куда и длина.

А есть ли возможность обратиться к этим функциям, чтобы свои не вставлять?


Зачем к ним обращатья? Если хотите узнать как ИАР читает/пишет еепром почитайте соотв. аппноуты от атмела. Это довольно простая процедура.
при написании программ на С в ИАРе нет необходимости вставлять свои процедуры. ИАР в зависимости от типа данных вызовет встроеннные процедуры чтения/записи байта/слова или целого массива байт.
plombir
"... или целого массива байт."


Код
char r[ 10 ] = { "123456789" };
__no_init __eeprom char e[ 10 ];
Как присвоить r к e? А часть r?


При приведении к типу - всё ок.
Код
typedef struct { char s[ 10 ]; } string10_t;
main()
{
    * (__eeprom string10_t *)e = * (string10_t *)r; //OK
}
mempfis_
Код
unsigned char r[10] = { "123456789" };
__no_init __eeprom unsigned char e[10];

void ee_to_ram(unsigned char __eeprom* pEE, unsigned char * pRAM, unsigned char size)
{
  while(size--)
  {
    *pRAM++ = *pEE++;
  }
}


ee_to_ram(e+5, r+4, 3); //копируем 3 байта начиная с 5го элемента массива в еепром в рам начиная с 4й ячейки


ИАР применит __eeget8_16 для копирования данных.
Аналогично можно создать ram_to_ee для перекидывания данных из рам в еепром.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.