سلام
من در حال کار با برد AT91SAM9x-512 با نرم افزار IAR می باشم. من میخوام با PIO ها با سرعت حداقل 10MHz کار کنم ولی متاسفانه با داشتن برنامه زیر سرعت toggle در پورت زیر 1MHz است.
void main()
{
unsigned char test2=0;
// Initialize main oscillator
//---------------------------
AT91C_BASE_PMC->PMC_MOR = BOARD_OSCOUNT | AT91C_CKGR_MOSCEN;
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS));
// Initialize PLLA at 200MHz (198.656)
AT91C_BASE_PMC->PMC_PLLAR = BOARD_CKGR_PLLA
| BOARD_PLLACOUNT
| BOARD_MULA
| BOARD_DIVA;
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCKA));
// Initialize PLLB for USB usage (if not already locked)
// if (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCKB))
{
AT91C_BASE_PMC->PMC_PLLBR = BOARD_USBDIV
| BOARD_CKGR_PLLB
| BOARD_PLLBCOUNT
| BOARD_MULB
| BOARD_DIVB;
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCKB));
}
// Wait for the master clock if it was already initialized
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));
// Switch to fast clock
//---------------------
// Switch to main oscillator + prescaler
AT91C_BASE_PMC->PMC_MCKR = BOARD_PRESCALER;
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));
// Switch to PLL + prescaler
AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLLA_CLK;
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));
///-------PIO Configuration
AT91C_BASE_PIOC->PIO_OER = 1 << AT91C_PIO_PC30;
AT91C_BASE_PIOC->PIO_PER = 1 << AT91C_PIO_PC30;
AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOC;
while(1)
{
if(test2 == 0)
{
AT91C_BASE_PIOC->PIO_SODR = AT91C_PIO_PC30;
test2 = 1;
}
else if(test2 == 1)
{
AT91C_BASE_PIOC->PIO_CODR = AT91C_PIO_PC30;
test2 = 0;
}
}
موضوعی که هست اینه که من برنامه مربوط به NAND FLASH همراه برد را که روی چیپ میریزم روی بعضی از پایه های NANAFLAS (که در این شرایط در مد peripheral است] از طرف پروسسور پالس 40M ایجاد میشه در حالی که در مد IO سرعت خیلی پائین تره.
حدس من اینه که سرعت باس APB در این نوع پروسسور که بیشتر کاربرد نصب ویندوز داره کم هست . نظر دوستان دیگه چیه؟
من در حال کار با برد AT91SAM9x-512 با نرم افزار IAR می باشم. من میخوام با PIO ها با سرعت حداقل 10MHz کار کنم ولی متاسفانه با داشتن برنامه زیر سرعت toggle در پورت زیر 1MHz است.
void main()
{
unsigned char test2=0;
// Initialize main oscillator
//---------------------------
AT91C_BASE_PMC->PMC_MOR = BOARD_OSCOUNT | AT91C_CKGR_MOSCEN;
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS));
// Initialize PLLA at 200MHz (198.656)
AT91C_BASE_PMC->PMC_PLLAR = BOARD_CKGR_PLLA
| BOARD_PLLACOUNT
| BOARD_MULA
| BOARD_DIVA;
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCKA));
// Initialize PLLB for USB usage (if not already locked)
// if (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCKB))
{
AT91C_BASE_PMC->PMC_PLLBR = BOARD_USBDIV
| BOARD_CKGR_PLLB
| BOARD_PLLBCOUNT
| BOARD_MULB
| BOARD_DIVB;
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCKB));
}
// Wait for the master clock if it was already initialized
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));
// Switch to fast clock
//---------------------
// Switch to main oscillator + prescaler
AT91C_BASE_PMC->PMC_MCKR = BOARD_PRESCALER;
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));
// Switch to PLL + prescaler
AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLLA_CLK;
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));
///-------PIO Configuration
AT91C_BASE_PIOC->PIO_OER = 1 << AT91C_PIO_PC30;
AT91C_BASE_PIOC->PIO_PER = 1 << AT91C_PIO_PC30;
AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOC;
while(1)
{
if(test2 == 0)
{
AT91C_BASE_PIOC->PIO_SODR = AT91C_PIO_PC30;
test2 = 1;
}
else if(test2 == 1)
{
AT91C_BASE_PIOC->PIO_CODR = AT91C_PIO_PC30;
test2 = 0;
}
}
موضوعی که هست اینه که من برنامه مربوط به NAND FLASH همراه برد را که روی چیپ میریزم روی بعضی از پایه های NANAFLAS (که در این شرایط در مد peripheral است] از طرف پروسسور پالس 40M ایجاد میشه در حالی که در مد IO سرعت خیلی پائین تره.
حدس من اینه که سرعت باس APB در این نوع پروسسور که بیشتر کاربرد نصب ویندوز داره کم هست . نظر دوستان دیگه چیه؟
دیدگاه