Цитата(dimka76 @ Jul 21 2009, 13:18)

какой ЭТОТ ?
Код
__disable_interrupt();
__enable_interrupt();
Из THUMB нет доступа к регистру CPSR, поэтому для разрешения/запрещения прерываний придется переключаться в ARM. А между ними - опять в THUMB. Делая код чуть длинее за счет ARM-команд экономим место и время на выкидывании переключения в THUMB между ними. Мне так казалось. Давно это писалось.
Цитата(dimka76 @ Jul 21 2009, 13:18)

откуда эта формула?
Код
#define MCK_CYCLES ((15ULL * MCK + 5000000) / 10000000)
Из головы. Количество тактов в полутора микросекундах с округлением.
И наверное красивее было бы заменить
Код
#if MCK > 30000000
#define WAITSTATES AT91C_MC_FWS_1FWS
#else
#define WAITSTATES AT91C_MC_FWS_0FWS
#endif
на
Код
#define WAITSTATES ((MCK) > 30000000 ? AT91C_MC_FWS_1FWS : AT91C_MC_FWS_0FWS)