IAR 3.10 C или хождение по чужим граблям
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Tech_ 07 июня 2004 г. 10:56

Изначально проект был выполнен в IAR 2.28A, и нормально работал.
Захотелось перейти на IAR 3.10C. Проект скомпилировался без ошибок,
но насторожило то, что сжались временные диаграммы и устройство пе-
рестало работать.
После отладки через AVRStudio выяснилось следующее:

//Так выглядели функции в тексте программы
void swait(void )
{
uchar cnt;
cnt=30; while (--cnt);
}
void swait1(void )
{
uchar cnt;
cnt=10; while (--cnt);
}

//А так они были откомпилированы
*00000A53:swait
+00000A53: 9508 RET
*00000A54:swait1
+00000A54: 9508 RET

Исправить положение удалось установкой в параметрах оптимизации
компилятора из High в Medium (Вспомнился чей-то вопрос в конферен-
ции). Объем кода увеличился на 30 слов.

//Результат
*00000A60:swait
+00000A60: EF01 LDI R16,0x1E ; 0xF1 = 0b11110001 = 241
+00000A61: 950A DEC R16
+00000A62: F7F1 BRNE -0x02 ; Destination: 0x000A61
+00000A63: 9508 RET
*00000A64:swait1
+00000A64: E00A LDI R16,0x0A ; 0x0A = 0b00001010 = 10
+00000A65: 950A DEC R16
+00000A66: F7F1 BRNE -0x02 ; Destination: 0x000A65
+00000A67: 9508 RET

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

Ответы



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

E-mail: info@telesys.ru