Цитата(Antokha @ Apr 22 2009, 21:52)

AT91C_BASE_PIOB->PIO_SODR |= ( DDS_P2_MODULATION ); - установить вывод PB7 в 1.
AT91C_BASE_PIOB->PIO_CODR |= ( DDS_P2_MODULATION ); - установить вывод PB7 в 0.
AIC_ICCR - это на самом деле лишнее.
Вместо |= нужно просто =, дабы не плодить бессмысленные и потенциально опасные действия.
Цитата(Antokha @ Apr 22 2009, 21:52)

Прерывание - внешнее - IRQ2, соответствует выводу PA25.
Да, пардон, меня сбило с толку имя обработчика - PIOA_Handler.
Тогда следующий вопрос. Если у Вас в стартапе
Код
__irq_handler:
ldr PC,[PC,#-0xF20] ;; IRQ
то где оформление функции как прерывания?
Код
static void PIOA_Handler( void )
Цитата(Antokha @ Apr 22 2009, 21:52)

Мне лучше, чтобы по фронтуили спаду прерывание обрабатывалось, чем по уровню. Я думаю будет точнее работать (время от появления какого либо фронта до установления PB7 в единичку)
Работать будет одинаково, а вот шанс пропустить событие возрастает.