|
|
  |
STM32F407 + прерывание + время реакции, Меняется время реакции на внешнее событие |
|
|
|
Aug 2 2015, 18:05
|
Местный
  
Группа: Участник
Сообщений: 291
Регистрация: 11-04-14
Из: Саратов
Пользователь №: 81 335

|
Цитата(ШСА @ Jul 31 2015, 22:00)  Но эксперимент (критерий истины) показал, что эффект влияния фоновой программы остался! Придётся мне покритиковать самого себя. Неправда это, Явление исчезло! А этот результат, оказывается, произошёл оттого, что я в процессе экспериментов отключил кэш команд, а потом забыл включить! Извините за дезинформацию. Цитата(ШСА @ Aug 1 2015, 18:39)  Теперь изображение на мониторе просто перепрыгивает - то левее, то правее в соответствии с переключением отображаемой страницы! Получается, что задержка вывода из CCM и из SRAM отличается очень сильно, а именно на 190 нс. Величина "прыжка" однозначно зависит от частоты тактирования шин. Когда я повысил частоту тактирования шины AHB1 вдвое (до 168 МГц), "прыжок" уменьшился ровно вдвое. Чем больше вожусь с этой системой, тем больше хочется задействовать DMA. Но как в этом случае организовать вывод байтов по тетрадам?
Сообщение отредактировал ШСА - Aug 2 2015, 18:09
|
|
|
|
|
Aug 3 2015, 07:32
|
Местный
  
Группа: Участник
Сообщений: 291
Регистрация: 11-04-14
Из: Саратов
Пользователь №: 81 335

|
Цитата(Golikov A. @ Aug 3 2015, 08:50)  Мы же не знаем куда у вас там подключены ножки, и доступен ли этот адрес из ДМА. Также мы не знаем сколько бит вам надо в паралель выплевывать наружу. Впараллель надо выплёвывать 4 бита - это видеосигнал (там ещё множество управляющих сигналов, но они однобитовые). А с доступностью то какие проблемы? DMA работает с устройствами и памятью. А у АРМ-ов все порты отображены на адресное пространство. Так что плеваться надо "память - память".
|
|
|
|
|
Aug 3 2015, 07:36
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
если 4 биты порта в памяти рядом (в пределах байта) и остальные биты порта неважны. А иначе надо лезть через спец регистры установки снятия бит, и тут встает вопрос есть ли к ним доступ ДМА, скорее всего есть, но надо проверить.
Ну и самое простое это по 4 бита, дополнить до байта 1 и 2 поле, и их выплевывать по очереди. Причем ДМА можно настроить циклически, и тогда он будет просто по кругу гнать картинку, даже не трогая проц, до тех пор пока картинку не поменяете, его даже перезапускать не надо будет.
|
|
|
|
|
Aug 3 2015, 07:46
|
Местный
  
Группа: Участник
Сообщений: 291
Регистрация: 11-04-14
Из: Саратов
Пользователь №: 81 335

|
Ну да, а как иначе? В STM32F4 нет никаких видеосредств, все АЦП и ЦАП довольно медленные. Цитата(Golikov A. @ Aug 3 2015, 10:36)  Причем ДМА можно настроить циклически, и тогда он будет просто по кругу гнать картинку, даже не трогая проц, до тех пор пока картинку не поменяете, его даже перезапускать не надо будет. А вот это заманчиво, но хватит ли ОЗУ? Там 2 видеостраницы находятся плотно упакованные, каждая по 58К. Для ещё одной полной видеостраницы в байтовом формате (т.е. по байту на точку) тут нет места. А вот сделать 1-2 строки и обновлять за 10 мкс и переключать их каждые 64 мкс - это можно. Вот как это организовать я и думаю.
Сообщение отредактировал ШСА - Aug 3 2015, 07:57
|
|
|
|
|
Aug 3 2015, 08:22
|
Местный
  
Группа: Участник
Сообщений: 291
Регистрация: 11-04-14
Из: Саратов
Пользователь №: 81 335

|
Цитата(Golikov A. @ Aug 3 2015, 10:55)  Делаете буфер размером 4 строки, запускаете ДМА, а по прерыванию Половину прошло, все прошло, подменяете данные в первой и второй половине буфере. А ДМА будет их выпихивать со строгой времянкой.
Размер буфера можно сделать больше строк, чтобы было больше времени на обновление....
а почему там 4 бита? еще какая-то синхронизация что ли? или это 16 уровней сигнала? Ну, хорошо. Но строка не выводится непрерывно. Из 64 мкс часть времени идёт вывод, а потом заткнуться до прихода следующего синхроимпульса. Это время, я полагал, и можно использовать для подмены строки. А как сделать вывод нескольких строк, каждая из которых то выводится, то нет, что-то я слабо представляю. 4 бита - это цвета раскраски и надписей изображения + тень.
Сообщение отредактировал ШСА - Aug 3 2015, 08:36
|
|
|
|
|
Sep 10 2015, 23:41
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(aaarrr @ Aug 1 2015, 22:50)  Одиночная LDR выполняется два такта; последовательность из двух LDR может быть выполнена за три такта (а из трех за четыре и т.д.), если адрес для последующей инструкции не зависит от результата предыдущей. Подскажите пожалуйста название документа, в котором описаны такие нюансы растактовки. На сайте ARMа есть что-то вроде для Cortex-M0, в котором почему-то нет зависимостей. Может зависимости (индивидуально к кажому ядру) описываются в другом документе? Интересуют нюансы двух видов - изменение аргумента текущей инструкции в предыдущей инструкции и задержки связанные с обращением к памяти, в том числе чередования чтения/записи, а так же одновременной подгрузке кода, особенно для M0, у которого одна общая шина.
Сообщение отредактировал GetSmart - Sep 11 2015, 02:36
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|