Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ARM
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Student21
Как узнать оную?

Я использую стандартный стартовый проект от Atmel.

Дай думаю узнаю на какой частоте работает процессор....

Делаю функцию

void Delay (unsigned long a) { while (--a!=0); };

по выходу из функции зажигаю светодиод.
Теперь вопрос: сколько тактов в AT91SAM9XE занимает сам while?

и где в коге можно посмотреть задание тактовой.

есть такие строки
функция LowLevelInit

/* 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));


Но эта функция абсолютно нигде не вызывается, но есть такие строки в стартапе

/*
After a reset, execution starts here, the mode is ARM, supervisor
with interrupts disabled.
Initializes the chip and branches to the main() function.
*/
SECTION .cstartup:CODE:NOROOT(2)

PUBLIC resetHandler
EXTERN LowLevelInit
EXTERN ?main
REQUIRE resetVector
ARM


ещё раз упоминаю что это стандартный getting-started-project.

Как посмотреть частоту процессора?
aaarrr
Цитата(Student21 @ Feb 28 2011, 19:18) *
Теперь вопрос: сколько тактов в AT91SAM9XE занимает сам while?

Можете посмотреть листинг и подсчитать. Но лучше просто вывести тактовую после делителя на внешний пин (SCKx).

Цитата(Student21 @ Feb 28 2011, 19:18) *
Но эта функция абсолютно нигде не вызывается, но есть такие строки в стартапе

А строки "bl LowLevelInit" в стартапе нет?
Student21
есть ещё

/* Perform low-level initialization of the chip using LowLevelInit() */
label:
LDR r0, =LowLevelInit
LDR r4, =SFE(CSTACK)
MOV sp, r4
BLX r0


больше ничего.

И как подсчитать по листингу не совсем понятно... ну есть он там и есть... стоит while и всё...

А расскажите как вывести частоту через делитель на внешний пин? Только если можно по-подробнее....
aaarrr
Цитата(Student21 @ Feb 28 2011, 21:05) *
есть ещё

Это и есть вызов.

Цитата(Student21 @ Feb 28 2011, 21:05) *
И как подсчитать по листингу не совсем понятно... ну есть он там и есть... стоит while и всё...

По дизассемблеру, я хотел сказать. Только нужно будет еще учитывать конфигурацию кэшей.

Цитата(Student21 @ Feb 28 2011, 21:05) *
А расскажите как вывести частоту через делитель на внешний пин? Только если можно по-подробнее....

У процессора есть два программируемых выхода - PCK0 и PCK1. Подробно о них можно почитать в разделе
Power Management Controller datasheet'а.

Пример кода, выдающего на пин PB30 выходную частоту PLL A, деленную на 8:
Код
#define PCK0 (1UL << 30)

{
    AT91C_PMC_PCKR[0] = AT91C_PMC_CSS_PLLA_CLK | AT91C_PMC_PRES_CLK_8;
    *AT91C_PIOB_ASR = PCK0;
    *AT91C_PIOB_PDR = PCK0;
    *AT91C_PMC_SCER = AT91C_PMC_PCK0;
}
Student21
вот спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.