Посмотрел листинги от skodafelicia (ckps_421A.zip и ckps_610.zip).STC wrote:Это скорее всего перечисление внешних связей - переменных используемых в данной функции. В данном случае это ячейки памяти в ОЗУ соответствующие регистрам портов.\ 0000001A REQUIRE _A_PORTD
\ 0000001A REQUIRE _A_PORTC
\ 0000001A REQUIRE _A_DDRD
\ 0000001A REQUIRE _A_DDRC
В файле ckps.с есть отределение:
#define flags ( (volatile ckpsflags_t*)(&TWAR) )
IAR 4.21 работает со структурой ckpsflags_t как с I/O регистром, т.е. например :
flags->ckps_need_to_set_channel = 0;
CBI 0x02, 0x05
IAR 6.10 (5.50) работает со структурой ckpsflags_t как с областью памяти(данными), например:
flags->ckps_is_valid_half_turn_period = 0;
LDI R26, LOW(34)
LDI R27, (34) >> 8
LD R16, X
ANDI R16, 0xFD
ST X, R16
При этом, в некоторых случаях, вставляет и вызовы функций...
Думаю, это может увеличить время выполнения операций с ckpsflags_t. Насколько критично время выполнения операций со структурой ckpsflags_t - не знаю. Хотя мне больше нравится подход компилятора V4.21.
PS
У меня IAR 5.50, скомпилировал - появляются пропуски.
Как заставить IAR 5.50 работать с ckpsflags_t как с I/O регистром, пока не придумал....
Есть какие нибудь мысли на этот счет?