Серьезная бага IAR AVR 2.28 и 3.10с тоже (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Krs 02 апреля 2004 г. 19:28

если проект из одной функции на С состоит (например все остальное в прерываниях) у ИАР серьезные проблемы с оптимизатором! во первых он считатет что регистры r0 - r3 проинциализиованы (у меня там переменные помещались но инициализацию не ИАР делал, пришлось ставить в startup)

но есть покруче баг:
поробуйте такую программу
#include
volatile __no_init __regvar unsigned char Test@14;
__C_task void main(void)
{
Test=0;
_SEI();
MainLoop:
__delay_cycles(100);
Test|=1;
goto MainLoop;

}

и все она не будет ничего делать!!!
но стоит ее немного поменять...

#include
volatile __no_init __regvar unsigned char Test@14;
#pragma optimize=no_inline
void Func(void)
{
return;
}

__C_task void main(void)
{
Test=0;
_SEI();
MainLoop:
Func();
__delay_cycles(100);
Test|=1;
goto MainLoop;

}

и о чудо!!! все работает!!
как броться даже и не знаю!
ну скорость мне нужна и функций нет вложенных все вреррываниях обмен через часть регистров...

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru