реклама на сайте
подробности

 
 
> Вопрос начинающего по АРМ, Помогите с AT91SAM7S256 & IAR
evgforum
сообщение Jun 4 2006, 09:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 18-04-05
Пользователь №: 4 266



1. Можно ли как-то пользоваться SAM-BA после прошивки в контроллер своей программы,
не загружая ее с помощью замыкания перемычек на плате?



2. Не получается помигать светодиодом.
Команда, включающая или выключающая светодиод, которая находится
в LowLevelInit (сейча закоментарена) выполняется,
а дальше в Main - никаких движений


int main()
{

AT91F_LowLevelInit();

//программа как будто останавливается здесь

//loop forever
while(1)
{
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, (1<<5) );
wait();

AT91F_PIO_SetOutput( AT91C_BASE_PIOA, (1<<5) );
wait();

}

}


---------------------------------------------------------------------------
#include "ioat91sam7s256.h"
#define __inline inline
#include "lib_AT91SAM7S256.h"

#define true -1
#define false 0

#define AT91F_Default_FIQ_handler 1
#define AT91F_Default_IRQ_handler 2
#define AT91F_Spurious_handler 3

void AT91F_LowLevelInit( void)
{
int i;
AT91PS_PMC pPMC = AT91C_BASE_PMC;
//* Set Flash Waite sate
// Single Cycle Access at Up to 30 MHz, or 40
AT91C_BASE_MC->MC_FMR = AT91C_MC_FWS_1FWS ;

//* Watchdog Disable
AT91C_BASE_WDTC->WDTC_WDMR= AT91C_WDTC_WDDIS;

//* Set MCK at 48 054 850
// 1 Enabling the Main Oscillator:
// SCK = 1/32768 = 30.51 uSecond
// Start up time = 8 * 6 / SCK = 56 * 30.51 = 1,46484375 ms
pPMC->PMC_MOR = (( AT91C_CKGR_OSCOUNT & (0x06 <<8) | AT91C_CKGR_MOSCEN ));
// Wait the startup time
while(!(pPMC->PMC_SR & AT91C_PMC_MOSCS));
// 2 Checking the Main Oscillator Frequency (Optional)
// 3 Setting PLL and divider:
// - div by 14 Fin = 1.3165 =(18,432 / 14)
// - Mul 72+1: Fout = 96.1097 =(3,6864 *73)
// for 96 MHz the error is 0.11%
// Field out NOT USED = 0
// PLLCOUNT pll startup time estimate at : 0.844 ms
// PLLCOUNT 28 = 0.000844 /(1/32768)
pPMC->PMC_PLLR = ((AT91C_CKGR_DIV & 14 ) |
(AT91C_CKGR_PLLCOUNT & (28<<8)) |
(AT91C_CKGR_MUL & (72<<16)));


// Wait the startup time
while(!(pPMC->PMC_SR & AT91C_PMC_LOCK));
while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));
// 4. Selection of Master Clock and Processor Clock
// select the PLL clock divided by 2
pPMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2 ;
while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));

pPMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK ;
while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));

// Set up the default interrupts handler vectors

AT91C_BASE_AIC->AIC_SVR[0] = (int) AT91F_Default_FIQ_handler ;
for (i=1;i < 31; i++)
{
AT91C_BASE_AIC->AIC_SVR[i] = (int) AT91F_Default_IRQ_handler ;
}
AT91C_BASE_AIC->AIC_SPU = (int) AT91F_Spurious_handler ;

//------------------------------------------------------------------
//Init of PIO

//enable clock to PIOA
AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA );

//config directions
AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, (1<<5) ); //PER & OER

//AT91F_PIO_SetOutput( AT91C_BASE_PIOA, (1<<5) );
}

__ramfunc void wait(void)
{
int time;

for (time = 0; time < 1E+6; time++);
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 03:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01318 секунд с 7
ELECTRONIX ©2004-2016