ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
1 июля
69763
solder (22.09.2006 10:11, просмотров: 1789)
Помогите на старте (AT91SAM7S256) Пишу в IARE. Выставляю в линкере raw-binary. Компилю. Загружаю SAM-BAой по адресу 100000. Ресечу - не работает. Программа - простейшая. Может чего не так делаю, или настройки какие забыл поставить? ----------------------------- #include "ioat91sam7s256.h" #include "..\src\examples\Atmel\SAM7S256\Include\lib_AT91SAM7S256.h" #define LED_G ((unsigned int)0x1 << 18) #define LED_Y ((unsigned int)0x1 << 17) #define BUT_G ((unsigned int)0x1 << 19) #define BUT_Y ((unsigned int)0x1 << 20) #define set(a,b) ((a) |= (b)) #define clr(a,b) ((a) &=~ (b)) #define bit(a,b) ((a) & (b)) int main() { // Disable watchwog AT91F_WDTSetMode(AT91C_BASE_WDTC,AT91C_WDTC_WDDIS);// AT91C_BASE_WDTC->WDTC_WDMR= AT91C_WDTC_WDDIS; //Enabling the Main Oscillator: //Wait 1*8 slow clock cycle AT91C_BASE_PMC->PMC_MOR = AT91C_CKGR_MOSCEN | (AT91C_CKGR_OSCOUNT & (1 << 8)); //Wait the startup time while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS)); //Setting PLL and divider: //18432 / 192 * 625 = 60000(MHz); //Wait 1 slow clock cycle AT91C_BASE_PMC->PMC_PLLR = ((AT91C_CKGR_DIV & 192) | (AT91C_CKGR_PLLCOUNT & (1<<8)) | (AT91C_CKGR_MUL & (624<<16))); // Wait the startup time while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK)); while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY)); //Selection of Master Clock and Processor Clock //select the PLL clock AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_CSS_PLL_CLK | AT91C_PMC_PRES_CLK ; while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY)); //enable the clock of the PIO AT91F_MC_CfgPMC (); // AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_SYS) AT91F_PIOA_CfgPMC ();// AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_PIOA) //configure ports AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,LED_G | LED_Y);// AT91C_BASE_PIOA->PIO_PER; ->PIO_OER AT91F_PIO_CfgInput (AT91C_BASE_PIOA,BUT_G | BUT_Y);// AT91C_BASE_PIOA->PIO_ODR; ->PIO_PER while(1) { if (bit(AT91F_PIO_GetInput(AT91C_BASE_PIOA),BUT_G)) // -AT91C_BASE_PIOA->PIO_PDSR AT91F_PIO_SetOutput (AT91C_BASE_PIOA,LED_G);// AT91C_BASE_PIOA->PIO_SODR else AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,LED_G);// AT91C_BASE_PIOA->PIO_CODR if (bit(AT91F_PIO_GetInput(AT91C_BASE_PIOA),BUT_Y)) // AT91C_BASE_PIOA->PIO_PDSR AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,LED_Y);// AT91C_BASE_PIOA->PIO_CODR else AT91F_PIO_SetOutput (AT91C_BASE_PIOA,LED_Y);// AT91C_BASE_PIOA->PIO_SODR } }