|
LPC1768 непонятное поведение |
|
|
|
Jan 27 2017, 19:27
|
Участник

Группа: Участник
Сообщений: 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] - для короткого!
|
|
|
|
|
 |
Ответов
|
Jan 28 2017, 20:58
|
Участник

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

|
Цитата(RabidRabbit @ Jan 28 2017, 23:46)  Настраиваете таймер 1 раз и он будет генерить до потери пульса без Вашего участия. Ему не надо каждый раз параметры перенастраивать... мне надо каждый раз период перестраивать А во вторых в таймере 4 регистра сравнения, их нужно проверить и сбросить флаги при необходимости, и вот каждая из этих операций длится 250нс Еще по поводу того что - не читал документацию, не понимаю что делаю прошу заметить что зарегистрировался я 11 лет назад, и за это время всего 18 сообщений, это потому что 11 лет не было вопросов, и за это время прочитаны тысячи документаций и реализовано десятки больших проектов, но вот сейчас наступил на какие то грабли и обратился к залу так сказать.
|
|
|
|
|
Jan 28 2017, 21:03
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(dpatrakov @ Jan 28 2017, 23:51)  А во вторых в таймере 4 регистра сравнения, их нужно проверить и сбросить флаги при необходимости, и вот каждая из этих операций длится 250нс Прям беда эти 250нс! И что за задача такая, интересно, требующая прерывания в 1МГц?? Цитата(dpatrakov @ Jan 28 2017, 23:58)  реализовано десятки больших проектов, но вот сейчас наступил на какие то грабли и обратился к залу так сказать. Ага "реализованы десятки проектов" и после этого не знаете, что получить такие частоты прерывания крайне проблематично - не знаете?? Имхо - это вроде как почти самоочевидно. Сомнения берут в десятках проектов... И каким образом кстати произведены все эти замеры с точностью до десятков нс? Вы умудрились воткнуть щуп осциллографа прямо в AHB? Поделитесь вашим бесценным опытом!
|
|
|
|
|
Jan 28 2017, 21:16
|
Участник

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

|
Цитата(jcxz @ Jan 28 2017, 23:59)  Прям беда эти 250нс! И что за задача такая, интересно, требующая прерывания в 1МГц?? 250 нс не беда, но когда выполняются 3 такие инструкции подряд, плюс время входа и выхода из прерывания это 1 мкс, это дофига. 1 МГц мне не нужен, я писал ранее, нужно 200 кГц, но это тоже не мало. самая медленная операция в прерывании это посчитать теорему пифагора для 6мерного пространства тоесть корень из суммы 6квадратов Цитата(jcxz @ Jan 29 2017, 00:03)  И каким образом кстати произведены все эти замеры с точностью до десятков нс? Вы умудрились воткнуть щуп осциллографа прямо в AHB? Поделитесь вашим бесценным опытом!  Вы что издеваетесь? в первом посте все написано, меряю все цифровым осциллографом, ножкой для этого и дергаю
|
|
|
|
Сообщений в этой теме
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 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  Dog Pawlowa Не могу похвастаться хорошим знанием ARM, но рассч... Jan 28 2017, 21:18   dpatrakov Цитата(Dog Pawlowa @ Jan 29 2017, 00:18) ... Jan 28 2017, 21:23    Dog Pawlowa Цитата(dpatrakov @ Jan 29 2017, 00:23) wi... Jan 28 2017, 21:28     dpatrakov Цитата(Dog Pawlowa @ Jan 29 2017, 00:28) ... Jan 28 2017, 21:35 dpatrakov Вот думал тут, на шине где висит таймер, есть друг... Jan 29 2017, 08:22
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|