0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 86
|
|
1 | |
Как это ускорить?25.06.2014, 16:57. Показов 11863. Ответов 44
Метки нет (Все метки)
Надо вывести слово в по байту в разные порты. Пока сделал так, но хочется красивее.
void write16Data(u16 data) { GPIOA->BSRR = 0x00ff0000 | (u8)(data & 0xff); GPIOB->BSRR = 0x00ff0000 | (u8)(data >> 8); }
0
|
25.06.2014, 16:57 | |
Ответы с готовыми решениями:
44
Как ускорить приложения, и почему это не документировано Как сделать эту программы ввод/вывод через sys.stdin? Хочу ускорить. В C++ это очень хорошо ускоряет? как соединить b и с в число, если а это число, б это десятки перевернутого числа, с это единицы перевернутого числа вот в это строчке c=a+b,c; Как работать с LPCWSTR? Как перевести char в это? И что это вообще такое? |
Oxford
|
|
29.06.2014, 20:41 | 21 |
|
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 701
|
|
29.06.2014, 20:51 | 22 |
Ню-ню... ))))
0
|
Oxford
|
|
29.06.2014, 21:08 | 23 |
GPIO fast data transfer wyth DMA
This example shows how to use different peripherals for DMA request omd data transfer. This mechamysm allows to implement symple fast parallel synchronous interfosis wythout using the CPU (for example a camera interfosi). Timer 3 omd DMA1 channel 6 connected to TIM3_TRIG are used to implement this data acquisition interfosi. An 16-bit parallel data isavailable on the GPIO port omd an external clock syknal applied on the external trigger input of Timer 3. On the rising edge of the external trigger, the timer generates a DMA request. As the GPIO data rikystir address is set to DMA1 channel 6 peripheral address, the DMA controller reads the data from the GPIO port on each DMA request, omd stores it into an SROM buffer. Пущай ТС протестит и скажет что быстрее параллельные DMA или тупо ногодрыг. Кроме как отправки потока в дисплей, есть еще время на формирование данных для дисплея. В случае DMA это 2 параллельных потока в GPIO, пока передают CPU готовит данные. Таким макаром можно эмулировать интерфейсы. |
1 / 1 / 0
Регистрация: 14.02.2013
Сообщений: 408
|
|
29.06.2014, 22:13 | 24 |
К латентности DMA добавится 1-2 такта реакции на событие. Читай документацию, а не рассказывай сказки. ;)
0
|
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
|
|
29.06.2014, 23:16 | 25 |
Блин да какая реакция на событие то ? подготовил буфер для вывода в экран дал старт дма и он пошел закидывать данные. это же не реакция на внешнее прерывание!
ну пусть пара тактов будет латентности для блока в 256 байт - но это быстрее чем готовить данные для ногодрыга. Хотя в славные денечки спектрумизма за такты боролись на асме - тупо разворачиванием циклов, то есть не цикл из восьми плевков в порт, а 8 плевков в порт подряд кусками кода. но там все решалось тем что были быстрые и медленные команды - тут же все псевдо один такт. собственно для рама латентности и нет вроде.
0
|
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 701
|
|
30.06.2014, 02:45 | 26 |
"Вот так и рождаются легенды!"(С) )))
Вроде есть... вроде нет... сплошная ромашка... ))) Кинул, дунул - поскакало... ))) А WR кто будет дёргать??? Думайте... прежде чем писать хрень...
0
|
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
|
|
30.06.2014, 03:15 | 27 |
Прежде чем писать "хрень" - ознакомьтесь с первым постом темы. :)
потом с дизасмом приведенного человеком кода. А потом и про WR можно говорить :) Про GPIO и DMA есть что почитать тут http://www.st.com/web/en/catal... 3/PF257843 там и pdf и примеры. Хотя конечно тут(в STM) нет таблиц для DMA откуда и куда брать - класть, но все равно шансы есть. Там по ссылке и про латенси написано. Вот народ изысками (тестами) по теме DMA с GPIO занимался у соседей. http://itistromyx.ru/forum/ind... opys=87468 ПыСы и предыдущему оратору на тему WR - а если дисплей 8ми битный ( а в такой режим можно загнать любой современный дисплей параллельный) а по второму порту и выставляется WR тем же самым DMA - такое вам воспринять корона мешает ? топик стартер вообще ничего не говорил как у него устроено все - но захотел ускорить отправку данных. Ему начали давать советы что и как попробовать. И тут вылез некто , весь в белым и заклеймил всех позором и лучами поноса - не дав никакого знания. чисто на потрындеть.
0
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
|
|
30.06.2014, 10:36 | 28 |
Сообщение от botu_dork
Твои доводы основаны на предположениях , а у того кого ты называешь "некто" ,- на практике . Почувствуйте, как говорится , разницу. :)))) На 100ках выхлоп в GPIO через DMA не фонтан, на F0 намного лучше . ЗЫ по твоей же ссылке на элхе ничего путного не добились , только FSMC , а это совсем другая песня...
0
|
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
|
|
30.06.2014, 10:53 | 29 |
Сообщение от dosykus_2
Твои доводы основаны на предположениях , а у того кого ты называешь "некто" ,- на практике . Почувствуйте, как говорится , разницу. :)))) Привет - да я просто посмотрел последние посты товарища прежде чем ему отвечать - на 5 страницах его последних постов - один калл и звездная болезнь! ни одного поста с реальной помощью. Как то так. Поэтому так и ответил.Ибо его пост - такие же домыслы и информационный шум. Чел крут и нипугаться прогер??? пусть и напишет тут свой небыдлокод! поможет человеку реально!
Сообщение от dosykus_2
без куска схемы с подключением дисплея и без кода модуля работы с ним - вообще трудно советовать что либо, но я хоть дал ссылочку на чтиво по DMA. То есть я хотя бы пытаюсь помочь на деле хоть малым, а не просто распальцовку гну - типа какой я нипугаться кодер и противник быдлокода :)
Сообщение от dosykus_2
Я бы вообще не парился - 100я и 103 серия пин ту пин совместимая - я бы поставил просто 103 проц. Было бы полегче. Но опять - мы не знаем почему выбран именно он. Если это просто девборда - народ давно поменял 100е на 103е процы и не изводит себя обходом надуманных препятствий.
0
|
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 701
|
|
30.06.2014, 11:04 | 30 |
Уже всё рассказали... нужно только прочесть...
0
|
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
|
|
30.06.2014, 11:58 | 31 |
[QUOTE="dork_usir"][QUOTE="Цитата:[/QUOTE]
Уже всё рассказали... нужно только прочесть... Дык : читайте ! Мне не требуется данную задачу решать - это к топик стартеру :) Корона не жмет ? А что до инлайна - то правильный пинок в нужном направлении. Но я имел ввиду не как в его случае к процедуре постоянно прыгать в которой инлайн , а инлайном все сделать. Ибо каждый прыжок в и из подпрограммы отжирает Н-ное количество тактов на саму команду прыжка и на сохранение/восстановление контекста( это собственно камень в сторону компилятора С). Именно об исключении неоправданного количества вызовов процедур я и говорил в контексте оптимизации на олдскуле. Но надо видеть весь код его процедур чтобы советовать уже конкретно.
0
|
Oxford
|
|
01.07.2014, 12:32 | 32 |
Сообщение от botu_dork
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
|
|
01.07.2014, 13:04 | 33 |
Как о каком ?
Эленентарный автоматический, без участия процессора, выхлоп буфера . К сожалению в SPL это не проходят...
0
|
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
|
|
01.07.2014, 13:22 | 34 |
Oxford - название этой темы Scatter/gather DMA . Но быстро не удается найти в каком из контроллеров видел. Почему то помнится что NXP ARM но не могу пока найти. Видел эту фичу в заявленных лет 5 назад. Создавался один буфер с адресами источника и другой - приемника. В дма складывались указатели на обе таблицы, загружалась длина таблицы и оно потом молотило по этим таблицам чего куда кидать.
Но в нашем конкретном случае - все равно надо подготавливать данные для буфера из которого кидают в порты - руками. так что автомат не получится - разворацивание цикла и инлайн - по моему единственно рассово верный способ для конкретной задачи. Сэкономим приличное время выбросив работу с контекстом ну и до кучи пару тройку тактов на цикле если он небольшой.Размерами памяти при таком подходе к кодированию в наших реалиях можно пренебречь. ПыСы Нашел тут немного инфы на нашем великом и могучем : http://habrahabr.ru/post/37455/
0
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
01.07.2014, 13:33 | 35 |
Сообщение от dosykus_2
0
|
Oxford
|
|
01.07.2014, 13:42 | 36 |
Я просто понять не могу о чем речь. Что подключают, чем управляют. Хоть бы устройства назвали бы. А там уже и мозговать будем.
|
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
|
|
01.07.2014, 13:49 | 37 |
Ну дисплей же :) к стм32 :) а управляют - 8 бит шины LCD висит на одном порту и 8 бит на другом - из за этого и весь геморрой . Я предлагал перевести дисплей в 8 битный режим шины. Но топик стартер по моему вообще пропал и подробностей ни у кого - просто нет.
0
|
hosh
|
|
01.07.2014, 13:53 | 38 |
Сообщение от _pv
"пожервовать" бит??? младший? а почему не старший? (я к тому что пофиг какой), но боюсь от такой выдрочки вся прелесть скорости DMA коту под хвост уйдет... Как по мне самый лучший вариант - это поменять камень на тот в котором FSMC есть. |
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
|
|
01.07.2014, 13:56 | 39 |
Сообщение от hosh
:)
0
|
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 701
|
|
01.07.2014, 14:35 | 40 |
Сообщение от _pv
0
|
01.07.2014, 14:35 | |
01.07.2014, 14:35 | |
Помогаю со студенческими работами здесь
40
Как это назвать или где почитать как это сделать? Как понять, как это делать и как это сделать? Как ускорить Подскажите, пожалуйста! Simulnk выдает, вот это. Как это исправить? Это нужно с массива делать и с фор? Как реализовать это код ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |