Простейшая программа с мигающими светодиодами. Компилится через Crossworks/GCC. Прошивается SAM-BA. Тестится на макетной плате Olimex SAM7S64.
Мучаюсь уже 3 дня, но прога не работает. Код прошивается, но светодиоды не мигают. При этом, если прошить МК уже собранным бинарников, взятым отсюда (http://www.terraelectronica.ru/catalog_ ... 64&Razdel=Демонстрационные и оценочные платы для МК семейства ARM&TableName=class_19_2_26_5), то всё работает нормально.
Возможно, ошибка в коде? Но вроде я всё проверил, код элементарный. Или в настройках CrossWorks? Проект собирался и в режиме THUMB, и в режиме ARM.
//Enabling the Main Oscillator: //SCK = 1/32768 = 30.51 uSecond //Start up time = 8 * 6 / SCK = 56 * 30.51 = 1,46484375 ms
//AT91C_BASE_PMC->PMC_MOR = ... p_pPMC->PMC_MOR = (( AT91C_CKGR_OSCOUNT & (0x06 <<8) | AT91C_CKGR_MOSCEN )); //Wait the startup time while(!(p_pPMC->PMC_SR & AT91C_PMC_MOSCS));
//Setting PLL and divider: //- div by 5 Fin = 3,6864 =(18,432 / 5) //- Mul 25+1: Fout = 95,8464 =(3,6864 *26) //for 96 MHz the erroe is 0.16% //Field out NOT USED = 0 //PLLCOUNT pll startup time estimate at : 0.844 ms //PLLCOUNT 28 = 0.000844 /(1/32768) p_pPMC->PMC_PLLR = ((AT91C_CKGR_DIV & 3) | (AT91C_CKGR_PLLCOUNT & (28<<8)) | (AT91C_CKGR_MUL & (24<<16)));
// Wait the startup time while(!(p_pPMC->PMC_SR & AT91C_PMC_LOCK)); while(!(p_pPMC->PMC_SR & AT91C_PMC_MCKRDY));
//Selection of Master Clock and Processor Clock //select the PLL clock divided by 2 p_pPMC->PMC_MCKR = AT91C_PMC_CSS_PLL_CLK | AT91C_PMC_PRES_CLK_2 ; while(!(p_pPMC->PMC_SR & AT91C_PMC_MCKRDY));
}
void InitPeriphery(void) {
/**** LED BUTTONS ****/ //enable the clock of the PIO p_pPMC->PMC_PCER = 1 << AT91C_ID_PIOA;
//LED 1 //configure the PIO Lines corresponding to LED1 p_pPio->PIO_PER = BIT17; //Enable PA17 p_pPio->PIO_OER = BIT17; //Configure in Output p_pPio->PIO_SODR = BIT17; //set reg to 1
//LED 2 //configure the PIO Lines corresponding to LED2 p_pPio->PIO_PER = BIT18; //Enable PA18 p_pPio->PIO_OER = BIT18; //Configure in Output p_pPio->PIO_SODR = BIT18; //set reg to 1
}
int main() { //Init frequency InitFrec(); //Init leds InitPeriphery();
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения