Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Частота 200МГц или обман зрения?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
InsolentS
Здравствуйте! У меня AT91SAM7X256 с кварцем на 18,432МГц. Настраиваю генератор следующим образом:
Код
OSCCOUNT  0x40
USBDIV       1
MUL         11
DIV           1
PRES         1
CSS          3 (PLLCLOCK)

Получается, что проц работает на частоте 202МГц!! Что-то не верится blink.gif АРМ на самом деле такой крутой, или я чего-то не догоняю? help.gif
PrSt
Цитата(InsolentS @ Mar 25 2007, 13:14) *
Здравствуйте! У меня AT91SAM7X256 с кварцем на 18,432МГц. Настраиваю генератор следующим образом:
Код
OSCCOUNT  0x40
USBDIV       1
MUL         11
DIV           1
PRES         1
CSS          3 (PLLCLOCK)

Получается, что проц работает на частоте 202МГц!! Что-то не верится blink.gif АРМ на самом деле такой крутой, или я чего-то не догоняю? help.gif

ну насколько он крут это второй вопрос.... а по сути может!
для ответа смотрим датащит и наблюдаем...

10.3 Clock Generator
The Clock Generator embeds one low-power RC Oscillator, one Main Oscillator and one PLL
with the following characteristics:
• RC Oscillator ranges between 22 kHz and 42 kHz
• Main Oscillator frequency ranges between 3 and 20 MHz
• Main Oscillator can be bypassed
• PLL output ranges between 80 and 220 MHz
It provides SLCK, MAINCK and PLLCK.

26.4 USB Clock Controller

Note: The USB Clock Controller does not pertain to AT91SAM7S32.
The USB Source Clock is the PLL output. If using the USB, the user must program the PLL to
generate a 48 MHz, a 96 MHz or a 192

правда мне не ясно, (не нашел пояснения) это ядро на такой скорости работает или периферия?
на сколько я понял - ядро не может больше 50МГц работать... или я не верно понял?
mse
Цитата(PrSt @ Mar 26 2007, 11:14) *
правда мне не ясно, (не нашел пояснения) это ядро на такой скорости работает или периферия?
на сколько я понял - ядро не может больше 50МГц работать... или я не верно понял?

Если повезёт, то и ядро. Особенно из ОЗУ. Щас срочно понадобилось идейку откатать, взял АТмегу48 на 5В, да как вдул ей 36МГц! Вместо 20 штатных. Повезло. А могло бы и нет.
scifi
Цитата(PrSt @ Mar 26 2007, 11:14) *
правда мне не ясно, (не нашел пояснения) это ядро на такой скорости работает или периферия?
на сколько я понял - ядро не может больше 50МГц работать... или я не верно понял?


Производитель указывает в даташите тактовую частоту, на которой микроконтроллер будет работать гарантированно во всём оговорённом диапазоне температур и напряжений питания. Если не будет работать, можете обоснованно предъявлять им претензии. Конечно, он будет работать и на более высокой частоте, но только не удивляйтесь, если начнёт глючить. Для домашней поделки это может быть приемлемо, а для продукта - вряд ли.
IV_K
все правильно.. pll раскочегарить можно, но ядро на высокой частоте не заведется
InsolentS
Блин, всё, я в конец запутался ohmy.gif
сделал чтобы программка моргала светодиодом через равные промежутки времени. Так вот: я настраиваю тактовый генератор на SLOWCLOCK, MAINCLOCK, PLLCLOCK - а ему всё пофигу, моргает с одинаковой частотой во всех случаях!!! отлаживаю через JTAG, случайно не в этом причина? Поделитесь 100% работающей последовательностью инициализации тактового генератора плизз.. help.gif
AlexBoy
Цитата(InsolentS @ Mar 26 2007, 14:13) *
Блин, всё, я в конец запутался ohmy.gif
сделал чтобы программка моргала светодиодом через равные промежутки времени. Так вот: я настраиваю тактовый генератор на SLOWCLOCK, MAINCLOCK, PLLCLOCK - а ему всё пофигу, моргает с одинаковой частотой во всех случаях!!! отлаживаю через JTAG, случайно не в этом причина? Поделитесь 100% работающей последовательностью инициализации тактового генератора плизз.. help.gif

Недостающие include добавите.
InsolentS
Цитата(AlexBoy @ Mar 26 2007, 19:22) *
Недостающие include добавите.

Спасибо! cheers.gif
klen
вставлю свои 5 копеек:
1. ядро наверно и на 600 smile.gif работать будет, че ему будет?? этож смос логика....
2. ачто с этого толку если ОЗУ не будет успевать читать и писать.
3. У меня раскочегарилось и неглючило вплоть до 112МГц - маленький кусочек кода (руками на асме написанна была 32-бит комплексная бабочка для оценки чего можно выжать из контроллера )
4 а что толку если программа ВСЯ не влазит в ОЗУ - тоесть FLASH не будет успевать выдавать команды на конвеер.
5. у меня раскочегарилась до 88мгц с МАМом из флеша на максимум. Далее повышаю частоту и вижу что трасса постоянно пасется в PAbort -> исполнение инструкции -> PAbort->.... в цикле на одном месте до тех пор пока всетаки FLASH c МАМом не вытолкнут на конвеер команду (наверно в железяке модуль выборки очередной команды ставит внутренный железный флаг УУ на разрешение исполнения только когда от точно вытащил из озу или флеша чето и процессор перестает генерить эксепшен). Тоесть повышая частоту >88 скорость работы остается таже а время нахождения в PAbort пропорционально растет.
6. С глюками можно боротся програмно cranky.gif
7. на частоте более 80 начинает реально грется - палец ЖЖОТ!

Я вот так это здесь все понимаю, если не прав поправьте.

все описанное делалось и делается на пациенте olimex LPC-H2103, с естессено микросхемой
lpc2103F/0691.8/ZPGOS4/9-Y
SpiritDance
klen
А эта... не поделитесь бабочкой?ж)
defunct
Цитата(klen @ Mar 26 2007, 16:00) *
все описанное делалось и делается на пациенте olimex LPC-H2103, с естессено микросхемой
lpc2103F/0691.8/ZPGOS4/9-Y

LPC и на 110 заведется, это не новость.
На >80 не сказал бы, что он особо-то греется (пациен LPC2106).

В этой ветке речь о тормозном SAM'е, дык кто-нибудь реально разгонял его?
klen
Цитата(SpiritDance @ Mar 26 2007, 18:15) *
klen
А эта... не поделитесь бабочкой?ж)


Aлгоритм
data->AoutReal = data->AinReal + data->RotateReal * data->BinReal ;
data->AoutImage = data->AinImage + data->RotateImage * data->BinImage ;
data->BoutReal = data->AinReal - data->RotateReal * data->BinReal ;
data->BoutImage = data->AinImage - data->RotateImage * data->BinImage ;

Код
typedef struct {
int AinReal    ;
int AinImage   ;
int BinReal    ;
int BinImage   ;
int AoutReal   ;
int AoutImage  ;
int BoutReal   ;
int BoutImage  ;
int RotateReal ;
int RotateImage;
}TComplex;

volatile TComplex Data ;
void Baterfly(TComplex* data)  __attribute__((naked));
void Baterfly(TComplex* data)
{

  asm volatile ("ldr    r2, [%0, #8]   ;\
  ldr    r1, [%0, #36]  ;\
  ldr    r3, [%0, #12]  ;\
  ldr    ip, [%0, #32]  ;\
  stmdb    sp!, {r4, lr}  ;\
  mul    ip, r2, ip     ;\
  mul    lr, r3, r1     ;\
  ldr    r2, [%0, #4]   ;\
  ldr    r3, [%0]       ;\
  rsb    r1, lr, r2     ;\
  rsb    r4, ip, r3     ;\
  add    r2, r2, lr     ;\
  add    r3, r3, ip     ;\
  str    r1, [%0, #28]  ;\
  str    r2, [%0, #20]  ;\
  str    r3, [%0, #16]  ;\
  str    r4, [%0, #24]  ;\
  ldmia    sp!, {r4, pc}"
  :
  :"r"(data)
  :"r0", "r1" ,"r2");
}


Не уверен что это последняя версия, но вроде похоже, токак какой толк от нее - все было притянуто к целым числам
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.