Цитата(EugenB2 @ Jul 18 2010, 01:41)

А у меня была обратная проблема с USART - возникало Spurious Interrupt из-за AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE пришлось сменить на AT91C_AIC_SRCTYPE_POSITIVE_EDGE.
Spurious Interrupt возникает по вполне определенным причинам и не является проблемой, если, конечно, не снабжено зависающей заглушкой (в атмеловских примерах встречался такой маразм).
Цитата(EugenB2 @ Jul 18 2010, 01:41)

Да... и, если в IAR пишется, то почему бы не пользоваться стандарными библиотечными функциями

:
К IAR'у, слава богу, данные функции никакого отношения не имеют. Для записи значения в регистр можно обойтись и без "библиотек".
А если нужно что-то сложнее, то надежнее использовать собственную голову, дабы не украшать программу подобными чудесами программистской мысли:
Код
//*----------------------------------------------------------------------------
//* \fn AT91F_SSC_SetBaudrate
//* \brief Set the baudrate according to the CPU clock
//*----------------------------------------------------------------------------
__inline void AT91F_SSC_SetBaudrate (
AT91PS_SSC pSSC, // \arg pointer to a SSC controller
unsigned int mainClock, // \arg peripheral clock
unsigned int speed) // \arg SSC baudrate
{
unsigned int baud_value;
//* Define the baud rate divisor register
if (speed == 0)
baud_value = 0;
else
{
baud_value = (unsigned int) (mainClock * 10)/(2*speed);
if ((baud_value % 10) >= 5)
baud_value = (baud_value / 10) + 1;
else
baud_value /= 10;
}
pSSC->SSC_CMR = baud_value;
}