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

 
 
> LPC1768 непонятное поведение
dpatrakov
сообщение Jan 27 2017, 19:27
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 20-05-06
Пользователь №: 17 293



Форумчане прошу помощи в поиске проблемы

Проблема в следующем, камень запущен на частоте 100 МГц тоесть инструкции должны выполняться за 10нс, дерганье ножкой показывает что примерно так и есть, но вот возникла задача генерить высокую частоту таймером, и больше 1 мегагерца не получилось, хотя по мануалу вход в прерывание занимает 12 тактов или 120 нс, путем тыка найдена инструкции которые выполняются не за 10нс а за целых 250.
Вот проблемная команда LPC_TIM0->MR0 += T0MR0->interval; ее выполнение занимает 500 нс, это не то что медленно, а вообще жесть.
в ассемблере это занимает всего 4 инструкции (загрузка адреса, чтение, сложение, выгрузка обратно)
в итоге прерывание даже пустого таймера выполняется за 750 нс плюс 120нс вход и 120 выход тоесть 1мкс.
750 получается из 1) операция проверки флага mr0 2) сброс флага 3) изменение mr0

Вторую проверку проводил так
Код
while (1)
{
f = 1-f;
if (f) PINSET;
else PINCLR;
LPC_TIM0->MR0 += T0MR0->interval;
}
итог период выполнения ~600 нс

Код
while (1)
{
f = 1-f;
if (f) PINSET;
else PINCLR;
//LPC_TIM0->MR0 += T0MR0->interval;
}
период выполнения ~85нс

ассемблере тесты различаются всего на 4 инструкции

еще тест
Код
while (1)
{
f = 1-f;
if (f) PINSET;
else PINCLR;
LPC_TIM0->MR0 = T0MR0->interval;
}
итог период выполнения ~300 нс

если рассуждать логически то включение ноги процессора это банальная операция записи в ячейку памяти соответствующую GPIO, а запись в регистр сравнения это такая же операция записи числа в ячеку памяти, но одна выполняется за 10 нс другая аж за 250
Встал в ступор куда копать не знаю

Сообщение отредактировал IgorKossak - Jan 27 2017, 20:51
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
RabidRabbit
сообщение Jan 28 2017, 20:46
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040



Цитата(dpatrakov @ Jan 27 2017, 22:27) *
Проблема в следующем, камень запущен на частоте 100 МГц тоесть инструкции должны выполняться за 10нс, дерганье ножкой показывает что примерно так и есть, но вот возникла задача генерить высокую частоту таймером, и больше 1 мегагерца не получилось

Настраиваете таймер 1 раз и он будет генерить до потери пульса без Вашего участия. Ему не надо каждый раз параметры перенастраивать...
Go to the top of the page
 
+Quote Post
dpatrakov
сообщение Jan 28 2017, 20:58
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 20-05-06
Пользователь №: 17 293



Цитата(RabidRabbit @ Jan 28 2017, 23:46) *
Настраиваете таймер 1 раз и он будет генерить до потери пульса без Вашего участия. Ему не надо каждый раз параметры перенастраивать...

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


А во вторых в таймере 4 регистра сравнения, их нужно проверить и сбросить флаги при необходимости, и вот каждая из этих операций длится 250нс

Еще по поводу того что - не читал документацию, не понимаю что делаю прошу заметить что зарегистрировался я 11 лет назад, и за это время всего 18 сообщений, это потому что 11 лет не было вопросов, и за это время прочитаны тысячи документаций и реализовано десятки больших проектов, но вот сейчас наступил на какие то грабли и обратился к залу так сказать.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jan 28 2017, 21:18
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Не могу похвастаться хорошим знанием ARM, но рассчитывать, что даже при коэффициенте деления = 1 мост между шинами работает без задержек, выглядит чрезмерно оптимистичным.
Периферия медленная, мост вставляет циклы ожидания. Все должно быть описано в AMBA.
Сам сейчас шлюз клепаю - ну просто живой пример, хотя совершенно в другой области.

>> меряю все цифровым осциллографом, ножкой для этого и дергаю
Вы не имеете возможности оценить задержки моста, поэтому стоит почитать документацию
http://infocenter.arm.com/help/index.jsp?t...ch04s01s04.html


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
dpatrakov
сообщение Jan 28 2017, 21:23
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 20-05-06
Пользователь №: 17 293



Цитата(Dog Pawlowa @ Jan 29 2017, 00:18) *
Не могу похвастаться хорошим знанием ARM, но рассчитывать, что даже при коэффициенте деления = 1 мост между шинами работает без задержек, выглядит чрезмерно оптимистичным.
Периферия медленная, мост вставляет циклы ожидания. Все должно быть описано в AMBA.
Сам сейчас шлюз клепаю - ну просто живой пример, хотя совершенно в другой области.

в документации написано что для общения с периферией буферизированная запись для того чтобы не ждать
Цитата
APB peripherals are connected to the CPU via two APB busses using separate slave
ports from the multilayer AHB matrix. This allows for better performance by reducing
collisions between the CPU and the DMA controller. The APB bus bridges are configured
to buffer writes so that the CPU or DMA controller can write to APB devices without
always waiting for APB write completion
.


ну пусть он их вставит, но не 25 тактов же

Сообщение отредактировал dpatrakov - Jan 28 2017, 21:22
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jan 28 2017, 21:28
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(dpatrakov @ Jan 29 2017, 00:23) *
without always waiting

Загадочный английский язык, варианты перевода какие?
"всегда без ожидания", "без ожидания всегда"

А если чтение-модификация-запись, то шине и периферии оклематься надо.
Ну пишут же напрямую - скорость по APB снижена для экономии потребления.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
dpatrakov
сообщение Jan 28 2017, 21:35
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 20-05-06
Пользователь №: 17 293



Цитата(Dog Pawlowa @ Jan 29 2017, 00:28) *
Загадочный английский язык, варианты перевода какие?
"всегда без ожидания", "без ожидания всегда"

А если чтение-модификация-запись, то шине и периферии оклематься надо.
Ну пишут же напрямую - скорость по APB снижена для экономии потребления.

дак снижена до 48МГц, но не до 4х же

пробовал и просто запись и просто чтение дает 250нс, чтение модификация запись соответственно 500

Сообщение отредактировал dpatrakov - Jan 28 2017, 21:36
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- dpatrakov   LPC1768 непонятное поведение   Jan 27 2017, 19:27
- - skripach   Цитата(dpatrakov @ Jan 27 2017, 22:27) Н...   Jan 27 2017, 20:25
|- - dpatrakov   Я это в душе понимаю, но как посмотреть? 250нс это...   Jan 27 2017, 20:41
|- - jcxz   Цитата(dpatrakov @ Jan 27 2017, 23:41) Я ...   Jan 28 2017, 07:43
|- - dpatrakov   Цитата(jcxz @ Jan 28 2017, 10:43) Смотрит...   Jan 28 2017, 08:39
|- - jcxz   Цитата(dpatrakov @ Jan 28 2017, 11:39) Та...   Jan 28 2017, 12:06
- - AVI-crak   Цитата(dpatrakov @ Jan 28 2017, 01:27) Вс...   Jan 28 2017, 13:12
|- - dpatrakov   Цитата(AVI-crak @ Jan 28 2017, 16:12...   Jan 28 2017, 17:10
|- - jcxz   Цитата(dpatrakov @ Jan 28 2017, 20:10) Ес...   Jan 28 2017, 17:43
|- - dpatrakov   Цитата(jcxz @ Jan 28 2017, 20:43) Где нап...   Jan 28 2017, 18:18
- - KRS   Если уж боретесь за наносекунды, пишите код оптима...   Jan 28 2017, 19:36
|- - dpatrakov   Цитата(KRS @ Jan 28 2017, 22:36) Если уж ...   Jan 28 2017, 20:18
|- - KRS   Цитата(dpatrakov @ Jan 28 2017, 23:18) И ...   Jan 30 2017, 18:42
|- - dpatrakov   Цитата(KRS @ Jan 30 2017, 21:42) в данном...   Feb 1 2017, 14:25
|- - jcxz   Цитата(dpatrakov @ Jan 28 2017, 23:51) А ...   Jan 28 2017, 21:03
||- - dpatrakov   Цитата(jcxz @ Jan 28 2017, 23:59) Прям бе...   Jan 28 2017, 21:16
||- - jcxz   Цитата(dpatrakov @ Jan 29 2017, 00:16) Вы...   Jan 28 2017, 21:28
||- - jcxz   Цитата(dpatrakov @ Jan 29 2017, 00:16) 1 ...   Jan 28 2017, 21:35
||- - dpatrakov   Цитата(jcxz @ Jan 29 2017, 00:35) На этом...   Jan 28 2017, 21:43
||- - jcxz   Цитата(dpatrakov @ Jan 29 2017, 00:43) 20...   Jan 28 2017, 21:53
||- - dpatrakov   Цитата(jcxz @ Jan 29 2017, 00:53) Опять п...   Jan 28 2017, 22:59
||- - Dog Pawlowa   Цитата(dpatrakov @ Jan 29 2017, 01:59) ма...   Jan 29 2017, 06:57
||- - jcxz   Цитата(Dog Pawlowa @ Jan 29 2017, 09:57) ...   Jan 29 2017, 12:50
- - dpatrakov   Вот думал тут, на шине где висит таймер, есть друг...   Jan 29 2017, 08:22


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

 


RSS Текстовая версия Сейчас: 18th August 2025 - 10:56
Рейтинг@Mail.ru


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