| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
AT91SAM9XE on 10GHz???
22.03.2011, 21:01
|
|
|
Вид на жительство
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
|
AT91SAM9XE on 10GHz???
Привет.
Написал код, залил...
Получил в терминале такую частоту сообщений.. что ели успевает порт компа обрабатывать.....
|
Код:
|
unsigned int calc=0;
unsigned int ddx=0;
unsigned int ddy=0;
while (1)
{
for (ddx=0; ddx‹1000000; ddx++)
{
for (ddy=0; ddy‹10000; ddy++)
{
calc++;
calc--;
calc=0;
}
}
PIO_Configure(pins_off, PIO_LISTSIZE(pins_off));
printf("--AFTER 80000000--\n\r");
calc=0;
for (ddx=0; ddx‹100000; ddx++)
{
for (ddy=0; ddy‹100000; ddy++)
{
calc++;
calc--;
calc=0;
}
}
PIO_Configure(pins_on, PIO_LISTSIZE(pins_on));
printf("--AFTER 90000000--\n\r");
} |
printf - вывалвает в COM порт дебагера сообщение
Получаю кучу такого типа:
--AFTER 90000000--
--AFTER 80000000--
--AFTER 90000000--
--AFTER 80000000--
................
Где ошибка в коде, или в чем загвоздка?
Код писан в eclipse, откомпилирован в GCC.
|
|
|
|
22.03.2011, 21:59
|
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: AT91SAM9XE on 10GHz???
Все Ваши 10-ти миллиардные циклы компилятор выкидывает из выполняемого кода для оптимизации программы. Реально в цикле while(1){} выполняются только PIO_Configure() и printf(), остальное проскакивается за один шаг.
|
|
|
|
22.03.2011, 22:02
|
|
|
Вид на жительство
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
|
Re: AT91SAM9XE on 10GHz???
Можете посоветовать как это протестить то частоту проца?
|
|
|
|
22.03.2011, 22:08
|
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: AT91SAM9XE on 10GHz???
Попробуйте в первом цикле calc++, а во втором calc--. И уберите calc=0, а то компилятор заранее знает результат цикла и сразу пишет calc=0, выкидывая все 10 млрд. сложений-вычитаний !
Или вручную отключите всякую оптимизацию.
Или определите переменную calc, использую волшебное слово volatile:
volatile unsigned int calc=0;
Да, и будьте готовы ждать некоторое время, т.к. , например, при скорости процессора 20млн сложений в секунду цикл в 10млрд. будет выполняться 500 сек ...
Последний раз редактировалось Yurkin2007; 22.03.2011 в 22:21.
|
|
|
|
23.03.2011, 00:33
|
|
|
Вид на жительство
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
|
Re: AT91SAM9XE on 10GHz???
Большое спасибо, помогло.
На счет того, что операция сложения - вычитания занимает не один процессорный такт - я знаю
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:47.
|
|