Доброго времени суток, уважаемые ГУРУ!
Решил в целях самообразования поработать с архитектурой отличной от класической MCS-51. Хотелось и частоты побольше и переферии, в общем выбор пал на микроконтроллер AT91SAM9260. Была куплена отладочная плата SK-AT91SAM9260 и JTAG программатор MT-LINK. Скачан и успешно вылечен IAR EWAVR версии 6.30. Казалось бы, ничего не предвещало проблемм но первый же блин оказался канечно же "комом", и не только первый.
В ступор встал после первой же простейшей программы, суть которой считывать логический уровень с 24 пина порта А и в зависимости от него включать или выключать светодиод на выходе 17 порта Б:
#include <AT91SAM9260/AT91SAM9260.h>
void main(void)
{
unsigned long a=1;
AT91C_BASE_PIOA -> PIO_PER = (0x1<<24); // PORTA.24 as PIO
AT91C_BASE_PIOA -> PIO_PPUER = (0x1<<24); // PORTA.24 PULLUP ON
AT91C_BASE_PIOB -> PIO_PER = (0x1<<17); // PORTB.17 as PIO
AT91C_BASE_PIOB -> PIO_OER = (0x1<<17); // PORTB.17 as OUTPUT
AT91C_BASE_PIOB -> PIO_OWER = (0x1<<17); // PORTB.17 Output Write Enable Registor
AT91C_BASE_PIOB -> PIO_CODR = (0x1<<17); // PORTB.17 = 0;
while(1){
a = (AT91C_BASE_PIOA->PIO_PDSR)&AT91C_PIO_PA24; // состояние ПИНа А.24
if (a){AT91C_BASE_PIOB->PIO_SODR = (1UL<17);} // если неравно нулю то PORTB.17 = 1;
if (!a){AT91C_BASE_PIOB->PIO_CODR = (1UL<17);} // если равно нулю то PORTB.17 = 0;
}
}
Сразу прошу прощения,что пользуюсь разными методами задания вывода, а именно (0x1<<17) или (1UL<17) или AT91C_PIO_PВ17 должно быть одно и тоже, насколько я понимаю...
Компляция проходит на "УРА", запускается дебаг, иар радостно сообщает что прошивка загружена по месту назначения и ... ничего не происходит, на обоих выводах висит +3.3 вольта, на нажатие кнопки не реагирует. Уже низнаю что и думать можт IAR обманывает? или отладчик?

Извиняюсь, опечатался: не (1UL<17) а (1UL<<17).