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

 
 
> быстрый тайминг 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
Ответов
GetSmart
сообщение Jan 8 2008, 19:57
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Код
LDR  R9,[R8]  ; R8 = T0CR (инициализируется во время LowLevelInit)
AND  R9,R9,#7 ; с небольшим риском эту команду можно убрать
ADD  R15,R15,R9
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
Я точно не анализировал, но может быть этот алгоритм уменьшит скорость в два раза.

кол-во NOPов тоже нужно подобрать получше. Вобщем я обрисовал только идею. Возможно этот пример нужно немного доработать.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
alexander55
сообщение Jan 9 2008, 07:23
Сообщение #3


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Вопрос к автору.
Что Вы хотите сделать ?
Варианты :
- генератор сигналов произвольной формы
- систему регулирования какого-то параметра.
В зависимости от ответа на этот вопрос, решение будет различным.
Go to the top of the page
 
+Quote Post
ГУ-49А
сообщение Jan 9 2008, 18:16
Сообщение #4


Участник
*

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



Цитата(alexander55 @ Jan 9 2008, 09:23) *
Вопрос к автору.
Что Вы хотите сделать ?
Варианты :
- генератор сигналов произвольной формы
- систему регулирования какого-то параметра.
В зависимости от ответа на этот вопрос, решение будет различным.

Ответ: Вариант 1-й, т.е. генератор сигналов произвольной формы (на фоне выполнения другой менее приоритетной задачи).
Повторюсь, интересуют программные, а не аппаратные решения.

Цитата(GetSmart @ Jan 8 2008, 21:57) *
кол-во NOPов тоже нужно подобрать получше. Вобщем я обрисовал только идею. Возможно этот пример нужно немного доработать.

Идею уловил, спасибо.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Jan 10 2008, 06:23
Сообщение #5


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(ГУ-49А @ Jan 9 2008, 21:16) *
Ответ: Вариант 1-й, т.е. генератор сигналов произвольной формы (на фоне выполнения другой менее приоритетной задачи).

Понятно.

Цитата(ГУ-49А @ Jan 9 2008, 21:16) *
Повторюсь, интересуют программные, а не аппаратные решения.

Самым лучшим вариантом Вашей задачи является программно-аппаратное решение (это мое мнение).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ГУ-49А   быстрый тайминг GPIO для LPC   Jan 6 2008, 20:16
- - zltigo   Цитата(ГУ-49А @ Jan 6 2008, 22:16) К...   Jan 6 2008, 20:45
|- - ГУ-49А   Цитата(zltigo @ Jan 6 2008, 22:45) Конкре...   Jan 6 2008, 21:10
|- - zltigo   Цитата(ГУ-49А @ Jan 6 2008, 23:04) в...   Jan 6 2008, 21:46
|- - 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   Попытался применить код, который я тут запостил и ...   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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


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


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