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

 
 
> AT91SAM7S деление, Вопрос о реализации опереции деления
ZiB
сообщение Mar 19 2009, 05:31
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 122
Регистрация: 26-07-05
Из: Россия, Томск
Пользователь №: 7 109



Всем, привет!

Осваиваю AT91SAM7S256. Eclipse + GCC + SAM-ICE.
Запустил демо проект с сайта at91.com (getting-started-project-1.4-at91sam7s-ek)

В функции конфигурации DBGU модуля, установка (точнее расчет) скорости обмена занимает почти 3 секунды.
AT91C_BASE_DBGU->DBGU_BRGR = mck / (baudrate * 16); // mck = 48 000 000, baudrate = 9600
так как апаратного деления у ARM-а нет, то деление происходит программным способом.

Вопрос:
Насколько оптимально производит деление компилаятор gcc?
в сравнении с IAR-ом?

Планирую в проекте использовать цело численное деление.

CODE
void DBGU_Configure(unsigned int mode,
unsigned int baudrate,
unsigned int mck)
{
// Reset & disable receiver and transmitter, disable interrupts
AT91C_BASE_DBGU->DBGU_CR = AT91C_US_RSTRX | AT91C_US_RSTTX;
AT91C_BASE_DBGU->DBGU_IDR = 0xFFFFFFFF;

// Configure baud rate
AT91C_BASE_DBGU->DBGU_BRGR = mck / (baudrate * 16);

// Configure mode register
AT91C_BASE_DBGU->DBGU_MR = mode;

// Disable DMA channel
AT91C_BASE_DBGU->DBGU_PTCR = AT91C_PDC_RXTDIS | AT91C_PDC_TXTDIS;

// Enable receiver and transmitter
AT91C_BASE_DBGU->DBGU_CR = AT91C_US_RXEN | AT91C_US_TXEN;
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Flexz
сообщение Mar 19 2009, 10:29
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



А какой именно GCC используете?
mck и baudrate - константы, очень странно, что компилятор это не посчитал на этапе компиляции и не вставил константу в код. Обычно всё наоборот - когда нужно что бы значение обязательно считалось в программе на этапе выполнения, приходится везде тыкать volatile.

В плане диагностики - дергайте ножку порта до и после деления и смотрите осцилографом время.
Go to the top of the page
 
+Quote Post



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

 


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


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