Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Коллекция глюков Здесь публикуются все известные глюки, баги микроконтроллеров, памяти, АЦП и т.д.

 
Опции темы
Непрочитано 15.05.2003, 10:34  
Lean
Гость
 
Сообщений: n/a
По умолчанию Ошибка в IAR C for AVR

В компиляторе C для AVR существует ошибка при работе с указателем на стек данных в модели памяти Tiny.
При сохранении локальных переменных в стеке в некоторых функциях изменяется только регистр R28, а не регистровая пара R29:R28. Это важно, когда стек данных простирается до адреса 0xff.
Например:

char k(char i)
{
return i;
}
void g(char *buf)
{
char i;
for (i = 0; i != 10; i++)
buf[i] = k(i);
}
void f(void)
{
char buf[10];
g(buf);
}
void main(void)
{
f();
}

Установим размер стека данных 0xA0, процессор 8515.
При входе в main() R29 = 1, R28 = 0. Первая команда в функции f() - SUBI R28, 10.
Т.е. R29 = 1, R28 = 0xF6. При вызове функции g() первая команда
RCALL ?PROLOGUE2_L09, в которой исполняется команда ST -Y, R25. Таким образом содержимое R25 будет сохранено в ячейке с адресом 0x1F5, а не в 0x0F5.
И так далее.

Чтобы избежать этого:
1. Уменьшить размер стека на 1 байт.
2. Поменять в .xcl файле порядок выделения памяти для сегментов (не будет работать в данном конкретном примере).
3. Не использовать модель памяти Tiny.

P.S.
Данное сообщение я отправлял в форум на "Телесистемах", но реакции посетителей никакой не было. Может никто не использует модель Tiny?
Реклама:
 
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AVR450 - AVR + buck converter - ошибка в схеме или во мне? sns13 Источники питания и свет 23 13.01.2010 19:40
IAR for AVR kassiopay Микроконтроллеры, АЦП, память и т.д 5 27.03.2009 17:20
IAR AVR 5.11B Wanted Kabron Микроконтроллеры, АЦП, память и т.д 30 08.02.2009 01:43
Глюк IAR C/EC++ Compiler for AVR 3.20 paha1956 Коллекция глюков 0 01.11.2006 17:31
IAR for AVR vasilij-kursikov Микроконтроллеры, АЦП, память и т.д 29 28.09.2006 18:14


Часовой пояс GMT +4, время: 06:15.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot