Здравствуйте.
Помогите запустить простенькую прогу на AT91sam7s256
Делаю первые шаги с АРМом, не судите сильно.
Пишу на ИАР 5.3,есть jetlink5
Код
#include <atmel\ioat91sam7s256.h>
//инициализация основных узлов системы
void CPUinit()
{
//нициализация EFC (Flash-памяти)
AT91C_BASE_MC->MC_FMR = AT91C_MC_FWS_1FWS; // 2 цикла на чтение, 3 цикла на запись
//настройка тактовых частот
//включение и задание времени запуска основного генератора
AT91C_BASE_PMC->PMC_MOR = (( AT91C_CKGR_OSCOUNT & (0x40 <<8) | AT91C_CKGR_MOSCEN ));
// ожидание стабилизации частоты основного генератора
while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS));
//задание частоты PLL 96,109 МГц и такт частоты UDP 48,058 МГц
AT91C_BASE_PMC->PMC_PLLR = (AT91C_CKGR_MUL & (72 << 16)) |
(AT91C_CKGR_DIV & 14);;
//ожидание стабилизации PLL
while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK) );
// ожидание стабилизации задающей частоты от PLL
while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
//задание задающей частоты и частоты процессора PLL/2=48 МГц
//регистр PMC_MCKR не должен програмироваться одной операцией записи
AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2;
// ожидание стабилизации задающей частоты
while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
//выбор основного источника тактового сигнала PLL
AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK;
// ожидание стабилизации задающей частоты
while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
// отключение сторожевого таймера
AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS;
// разрешение тактирования PIO
AT91C_BASE_PMC->PMC_PCER|=(1 << AT91C_ID_PIOA);
}
int main()
{
CPUinit();
AT91C_BASE_PIOA->PIO_PER=0xFFFFFFFF;
AT91C_BASE_PIOA->PIO_OER=0xFFFFFFFF;
AT91C_BASE_PIOA->PIO_CODR=0xFFFF0000;
AT91C_BASE_PIOA->PIO_CODR=0x0000FFFF;
return 0;
}
//инициализация основных узлов системы
void CPUinit()
{
//нициализация EFC (Flash-памяти)
AT91C_BASE_MC->MC_FMR = AT91C_MC_FWS_1FWS; // 2 цикла на чтение, 3 цикла на запись
//настройка тактовых частот
//включение и задание времени запуска основного генератора
AT91C_BASE_PMC->PMC_MOR = (( AT91C_CKGR_OSCOUNT & (0x40 <<8) | AT91C_CKGR_MOSCEN ));
// ожидание стабилизации частоты основного генератора
while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS));
//задание частоты PLL 96,109 МГц и такт частоты UDP 48,058 МГц
AT91C_BASE_PMC->PMC_PLLR = (AT91C_CKGR_MUL & (72 << 16)) |
(AT91C_CKGR_DIV & 14);;
//ожидание стабилизации PLL
while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK) );
// ожидание стабилизации задающей частоты от PLL
while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
//задание задающей частоты и частоты процессора PLL/2=48 МГц
//регистр PMC_MCKR не должен програмироваться одной операцией записи
AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2;
// ожидание стабилизации задающей частоты
while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
//выбор основного источника тактового сигнала PLL
AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK;
// ожидание стабилизации задающей частоты
while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
// отключение сторожевого таймера
AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS;
// разрешение тактирования PIO
AT91C_BASE_PMC->PMC_PCER|=(1 << AT91C_ID_PIOA);
}
int main()
{
CPUinit();
AT91C_BASE_PIOA->PIO_PER=0xFFFFFFFF;
AT91C_BASE_PIOA->PIO_OER=0xFFFFFFFF;
AT91C_BASE_PIOA->PIO_CODR=0xFFFF0000;
AT91C_BASE_PIOA->PIO_CODR=0x0000FFFF;
return 0;
}
Проблема в том, что я не могу поставить точку останова, допустим на первой строчке.
И прога не работает, не устанавлеваются уровни на линиях выводов.
Что нетак делаю?