|
Изначально проект был выполнен в 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