Помогите на старте (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
}
}
-
- Ну так что? Никто не поможет? - solder(22.09.2006 14:53)
- Пятница, все расслабились и разползлись - General(22.09.2006 16:26)
- Ну так что? Никто не поможет? - solder(22.09.2006 14:53)