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

 
 
> быстрый тайминг GPIO для LPC
ГУ-49А
сообщение Jan 6 2008, 20:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 26-11-07
Пользователь №: 32 699



Есть такая задача: реализовать быстрый синхронный 16-битный вывод в GPIO-порт для LPC2103 (через FIO). При этом ещё должна выполняться фоновая задача. Проблема в том, что вывод в порт необходимо делать стабильно, через равные интервалы времени, с как можно большей частотой. Скорость выполнения фоновой задачи при этом не принципиальна, но она не должна задерживать основной вывод в порт.

Первое и самое простое, что приходит на ум - использовать прерывание по таймеру для вывода в порт. Но очевидно, что максимума скорости так не добиться, хотя бы из-за избыточной работы по обслуживанию прерываний. По той же причине, видимо, не годятся и RTOS-надстройки.

Если же просто перемежать вызовы команд этих двух задач, то не понятно, как при этом обеспечить стабильный тайминг вывода в порт - ведь подсчёт тактов для пайплайна задача непростая... Есть ли какой-то инструментарий для подсчёта тактов выполнения команд на LPC? Чтобы можно было с учётом этого написать на асме код фоновой задачи так, чтобы вперемешку с ним выводить в порт данные строго каждые N тактов?

Какие ещё существуют способы решения данной задачи?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Jan 6 2008, 20:45
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(ГУ-49А @ Jan 6 2008, 22:16) *
Какие ещё существуют способы решения данной задачи?

Конкретных способов решения абстрактной ("делать стабильно, через равные интервалы времени, с как можно большей частотой") задачи (с неназванными временами) не существует smile.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ГУ-49А
сообщение Jan 6 2008, 21:10
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 26-11-07
Пользователь №: 32 699



Цитата(zltigo @ Jan 6 2008, 22:45) *
Конкретных способов решения абстрактной ("делать стабильно, через равные интервалы времени, с как можно большей частотой") задачи (с неназванными временами) не существует smile.gif

Некоторые способы я перечислил. Меня устроит, если вывод в порт будет происходить, скажем, каждые 10 тактов. Если получится быстрее - отлично; если можно только медленнее - надо видеть, насколько. За каждый выигранный или проигранный такт я хочу побороться.

Если самый лучший по скорости вывода способ будет напрямую зависеть от конкретных команд задачи (как в случае с вышеупомянутым методом интерлива кода), то, само-собой, кроме меня никто мою задачу решать не будет. Но в таком случае я хотел бы получить ответ на ранее заданный вопрос: Есть ли какой-то инструментарий для подсчёта тактов выполнения команд на LPC? Какова вообще методика расчёта таймингов, ведь кто-то наверняка уже это делал?

Или всё-таки можно сделать по-другому?

Цитата(zhevak @ Jan 6 2008, 22:50) *
А вообще о каких скоростях вывода в порт идет речь? Т.е. Сколь раз в секунду требуется выкидывать данные.

Речь идёт о попытке достижения теоретического максимума на данном железе и задаче. Т.е. порядок цифр - мегагерцы.
Цитата(zhevak @ Jan 6 2008, 22:50) *
Как-то давным давно у меня возникла подобная задача: что-то там делать в реальном времени. Я это "дело" навесил на обработчик прерываний от таймера. А что бы понять, сколько времени у меня реально занимает процесс, я не стал заморачиваться подсчетом тактов, а сделал по-простому.

Повесить на таймер и измерять скорость осциллом - это начальный вариант для такой задачи, спасибо. Каких частот вам удалось достичь, скажем, для простого "дёргания ногой"? Как вы считаете, насколько можно превзойти этот метод?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 6 2008, 21:46
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(ГУ-49А @ Jan 6 2008, 23:04) *
вывод в порт будет происходить, скажем, каждые 10 тактов

Задача для LPC2000 решения не имеет. Порядка 4 тактов только вывод через FastGPIO причем это тупая загрузка содержимого регистра по адресу содержащимуся в другом регистре. При этом нужно еще подтаскивать поток в 12 мегабайт в секунду smile.gif Ну и кто-то там еще про "фоновые задачи" smile.gif .....
Цитата
Или всё-таки можно сделать по-другому?

12 МегаБайт в секунду это скорости совсем других контролеров + аппаратная поддержка для обеспечения синхронного порта.


Цитата(ГУ-49А @ Jan 6 2008, 23:10) *
Каких частот вам удалось достичь, скажем, для простого "дёргания ногой"?

Ознакомьтесь с документацией - узнаете предел.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ГУ-49А   быстрый тайминг GPIO для LPC   Jan 6 2008, 20:16
|- - rezident   Цитата(ГУ-49А @ Jan 7 2008, 02:10) И...   Jan 8 2008, 13:31
- - zhevak   Цитата(ГУ-49А @ Jan 7 2008, 01:16) К...   Jan 6 2008, 20:50
- - Rst7   ЦитатаСкоп был хороший (LeCroy) и позволял собират...   Jan 6 2008, 21:01
- - GetSmart   Думаю можно достичь скорости вывода до Fosc/25 (ме...   Jan 7 2008, 09:43
- - ГУ-49А   Цитата(zltigo @ Jan 6 2008, 23:46) Задача...   Jan 7 2008, 10:25
|- - zltigo   Цитата(ГУ-49А @ Jan 7 2008, 12:25) О...   Jan 7 2008, 17:12
- - zhevak   Боюсь нарваться на скандал, но все же скажу, ибо и...   Jan 7 2008, 12:46
|- - ГУ-49А   Цитата(zhevak @ Jan 7 2008, 14:46) Боюсь ...   Jan 7 2008, 13:41
|- - zhevak   К сожалению, ни готового решения, ни совета я Вам ...   Jan 7 2008, 14:12
|- - ГУ-49А   Цитата(zhevak @ Jan 7 2008, 16:12) К сожа...   Jan 7 2008, 14:44
|- - Alex03   Цитата(ГУ-49А @ Jan 7 2008, 19:44) Ц...   Jan 8 2008, 08:20
|- - ГУ-49А   Цитата(Alex03 @ Jan 8 2008, 10:20) Дальше...   Jan 8 2008, 10:52
- - GetSmart   Цитата(ГУ-49А)Спасибо. Я готов переписать фон...   Jan 7 2008, 13:37
|- - ГУ-49А   Цитата(GetSmart @ Jan 7 2008, 15:37) Я им...   Jan 7 2008, 13:58
- - GetSmart   ЦитатаИли, может, мне стоит написать такой инструм...   Jan 7 2008, 13:53
- - GetSmart   Вы бы ещё пояснили подробности такого нестандартно...   Jan 7 2008, 14:06
- - GetSmart   Цитата(ГУ-49А)Т.е. одна из сложностей задачи ...   Jan 7 2008, 15:43
- - GetSmart   Цитата(Alex03)одна и та же команда в внутреннюю RA...   Jan 8 2008, 09:59
- - GetSmart   ЦитатаВидимо, речь идёт о выводах MATx.y? К сожале...   Jan 8 2008, 12:01
- - digital   ЦитатаМожет я что-то пропустил в обсуждении, но я ...   Jan 8 2008, 14:53
- - GetSmart   Господа-товарищи! Я тоже сначала подумал об SS...   Jan 8 2008, 15:18
|- - rezident   Цитата(GetSmart @ Jan 8 2008, 20:18) макс...   Jan 8 2008, 15:26
- - GetSmart   Скорость вывода бита = 2 такта. Чтобы вывести 16 б...   Jan 8 2008, 15:47
|- - ГУ-49А   Цитата(GetSmart @ Jan 8 2008, 17:47) Скор...   Jan 8 2008, 19:13
- - GetSmart   Цитата(GetSmart)Кстати, есть алгоритм, которым мож...   Jan 8 2008, 18:29
- - GetSmart   КодLDR R9,[R8] ; R8 = T0CR (иниц...   Jan 8 2008, 19:57
|- - alexander55   Вопрос к автору. Что Вы хотите сделать ? Варианты ...   Jan 9 2008, 07:23
|- - ГУ-49А   Цитата(alexander55 @ Jan 9 2008, 09:23) В...   Jan 9 2008, 18:16
|- - alexander55   Цитата(ГУ-49А @ Jan 9 2008, 21:16) О...   Jan 10 2008, 06:23
- - GetSmart   Попытался применить код, который я тут запостил и ...   Jan 13 2008, 11:41
- - GetSmart   Попробывал применить этот алгоритм в своём генерат...   Jan 21 2008, 07:23
- - Alex03   А если MAM=0?   Jan 21 2008, 08:47
- - GetSmart   Частота 5 МГц, PLL off, MAM=0, MAMTIM=1. Прерывани...   Jan 21 2008, 10:12
- - GetSmart   Частота 59 МГц, прерывание в RAMe, MAM = 2, MAMTIM...   Jan 23 2008, 12:46
- - ГУ-49А   Позвольте изложить некоторые результаты по открыто...   Feb 18 2008, 22:42
- - GetSmart   Конечно интересно! Думаю даже не мне одному   Feb 19 2008, 04:31
|- - alexander55   Цитата(GetSmart @ Feb 19 2008, 07:31) Кон...   Feb 19 2008, 06:18
|- - ГУ-49А   Цитата(GetSmart @ Feb 19 2008, 06:31) Кон...   Feb 19 2008, 09:47
- - GetSmart   Очень даже неплохо получилось. Можно сказать что э...   Feb 19 2008, 10:05
- - GetSmart   Цитата(ГУ-49А)Что ж, давайте ещё раз напомню,...   Feb 24 2008, 15:04
- - ГУ-49А   Цитата(GetSmart @ Feb 24 2008, 17:04) Мож...   Feb 24 2008, 16:02


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:04
Рейтинг@Mail.ru


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