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

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

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

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

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

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

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

 
Опции темы

Ошибка в IAR C for AVR

Непрочитано 15.05.2003, 11: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, время: 08:27.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.