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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Не срабатывает прерывание при чтении по DMA
HardEgor
сообщение Sep 14 2018, 08:43
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Цитата(avg33 @ Sep 13 2018, 20:18) *
Очень мало - это сколько?))))

Во всех контроллерах происходит событие(event) - например окончание передачи байта, полный/пустой буфер и др. Физически это выход цифрового компаратора, т.е. один проводок внутри контрллера и он выходит из блока в котором произошло событие(SPI, DMA, UART, etc.).
А дальше event можно перенаправить в контроллер прерывания или контроллер DMA, или и туда и туда, можно еще и в другой блок, например АЦП, ЦАП и т.д. И каждый блок предпринимает собственные действия по поступлению события - контроллер прерываний вызывает подпрограмму, DMA начинает или останавливает передачу и т.д.

Цитата(avg33 @ Sep 13 2018, 20:18) *
В моем контроллере периферия запрашивает передачу DMA путем установки прерывания. Не знаю, как это устроено в других контроллерах - в моем именно так.

Возможно при переводе перепутали понятие event и interrupt. А возможно и правда на прерывании висит сигнал запуска DMA, это значит разработчики упростили систему.

Цитата(avg33 @ Sep 13 2018, 20:18) *
Видимо точно что-то с прерываниями. Выше писали, что приоритет канала RX должен быть выше, чем канала TX.

Если бы вы назвали контроллер или архитектуру, тогда возможно что-то сказать, а так осталось только помогать вам гадать на "кофейной гуще" sm.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 14 2018, 10:02
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(avg33 @ Sep 13 2018, 16:18) *
Очень мало - это сколько?))))

3мм biggrin.gif

Цитата(avg33 @ Sep 13 2018, 16:18) *
Вы с кем общаетесь? Сам с собой?) Объясняю еще раз.
...
Если знаете как запустить передачу без него в текущих условиях - поделитесь примером

Я не знаю как запустить передачу на сферическом коне в вакууме на неизвестном гипотетическом МК. И никто этого не знает.
Какой смысл тогда Вашего вопроса здесь? Пойти туда не знаю куда, сделать то не знаю что? Или просто - пофлудить?
Никто не сможет запустить чего-то там на сферическом коне в вакууме.

Цитата(avg33 @ Sep 13 2018, 16:18) *
Но вот вчера вечером уже от безысходности поменял DMA каналы местами. Теперь у чтнения приоритет ниже, чем у отправки. И вот уже несколько часов непрерывного чтения и ни одной ошибки (раньше хватало на несколько минут или даже секунд). Понять бы природу странности, ведь по опыту людей все должно быть ровно наоборот. В даташите толком ничего не написано и примеров нет

Вы здесь-то чего хотите? Чтобы Вам посочувствовали? Поплакаться в жилетку? crying.gif

Цитата(HardEgor @ Sep 14 2018, 11:43) *
А дальше event можно перенаправить в контроллер прерывания или контроллер DMA, или и туда и туда, можно еще и в другой блок, например АЦП, ЦАП и т.д.

Не обязательно это один и тот же event. В некоторых МК прерывания и DMA-запросы - это совершенно разные сигналы, формируемые разной логикой. И даже их может быть несколько одновременно. Я писал об этом выше.
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Sep 15 2018, 09:09
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Цитата(jcxz @ Sep 14 2018, 17:02) *
Не обязательно это один и тот же event.

event - это событие совпадения сигналов блока с какой-то маской, т.е. физически в чипе стоит цифровой компаратор и сравнивает набор сигналов блока и маску, при совпадении на выходе возникает сигнал event'а.
А в какой блок дальше его можно отправить зависит от возможностей чипа, потому что чем больше возможностей оправки event'ов из одного блока в другие и их настройки, тем больше связей и логики управления надо создавать внутри чипа.

Цитата(jcxz @ Sep 14 2018, 17:02) *
В некоторых МК прерывания и DMA-запросы - это совершенно разные сигналы, формируемые разной логикой. И даже их может быть несколько одновременно.

Если логика их формирования разная, значит это разные event'ы.
Go to the top of the page
 
+Quote Post
avg33
сообщение Sep 16 2018, 12:24
Сообщение #19





Группа: Участник
Сообщений: 12
Регистрация: 7-08-18
Пользователь №: 106 564



Цитата(HardEgor)
Возможно при переводе перепутали понятие event и interrupt. А возможно и правда на прерывании висит сигнал запуска DMA, это значит разработчики упростили систему.

Если дословно: "The peripheral resource (I/O) requests DMA transfer by asserting an interrupt".
У DMA канала есть регистр, в котором указывается номер прерывания, которое инициирует передачу. То есть, если настроить DMA канал на прерывание RX, то event "регистр-приемник полный" инициирует прерывание RX, которое уйдет не в контроллер, а в DMA. DMA прочитает байт из регистра-приемника USART и уменьшит счетчик прочитанных байт. Если счетчик обнулился, DMA передает запрос на прерывание контроллеру и тот вызывает обработчик RX.
Вот блок-схема из документации:

Так вот, время от времени возникает ситуация, что отправил я 1029 байт, а получил якобы только 1028. В этот момент счетчик переданных байт = 0, прочитанных = 1. Соответственно и обработчик RX не вызывается и я не могу завершить транзакцию чтения. Хотя последний байт пришел, я вижу его в регистре приемника. Получается по каким-то причинам DMA не обнулил счетчик (прерывание не пришло?)

А поциент jcxz выше явно забежал сюда меня потроллить, вот и разводит бесполезный флуд вокруг терминологии rolleyes.gif
Цитата(HardEgor)
Если бы вы назвали контроллер или архитектуру, тогда возможно что-то сказать, а так осталось только помогать вам гадать на "кофейной гуще" sm.gif

F2MC-16FX MB96600 Series
http://www.cypress.com/file/241411/download
Как оказалось, приоритеты каналов тут ни при чем. И новая и старая версии чтения дают сбой при запуске прошивки через отладчик. Если запускаю без отладчика все работает без сбоев. Отладчик может влиять на процесс?

Цитата(jcxz)
Я не знаю как запустить передачу на сферическом коне в вакууме на неизвестном гипотетическом МК. И никто этого не знает.

Я в курсе, что вы не знаете. И сарказма тоже не понимаете, как я вижу.
Ну раз не знаете, то и не надо меня убеждать, что я что-то путаю и не понимаю работу своего контроллера.
Цитата(jcxz)
Вы здесь-то чего хотите? Чтобы Вам посочувствовали? Поплакаться в жилетку? crying.gif

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

Сообщение отредактировал avg33 - Sep 16 2018, 12:25
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 16 2018, 13:16
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(avg33 @ Sep 16 2018, 15:24) *
А поциент jcxz выше явно забежал сюда меня потроллить, вот и разводит бесполезный флуд вокруг терминологии rolleyes.gif
...
Если не долбиться в глаза можно увидеть вопросы, которые я задавал. Возможно, у кого-то была похожая проблема. Может быть, у кого-то отладчик тоже влиял на работу и тд. Вас лично никто отвечать не заставляет

и откуда-ж вы такие вылазите?...
Go to the top of the page
 
+Quote Post
Herz
сообщение Sep 16 2018, 14:06
Сообщение #21


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Господа! Прошу без грубостей. Если есть какие-то недосказанности или разночтения терминов, это ещё не повод наезжать друг на друга. Помощь предполагает терпение. Если его нет, лучше прекратить общение. Спасибо за понимание.
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Sep 16 2018, 16:41
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Цитата(avg33 @ Sep 16 2018, 19:24) *
F2MC-16FX MB96600 Series

Это Fujitsu, японцы, с ними мало кто умеет работать.

Цитата(avg33 @ Sep 16 2018, 19:24) *
Как оказалось, приоритеты каналов тут ни при чем. И новая и старая версии чтения дают сбой при запуске прошивки через отладчик. Если запускаю без отладчика все работает без сбоев. Отладчик может влиять на процесс?

В общем случае отладчик может, зависит от отладчика, там есть целая глава "On Chip Debugger".
Например в других контроллерах есть биты(флаги), которые сбрасываются, если прочитать определенный регистр - в этом случае отладчик может сломать логику работы.

Цитата(avg33 @ Sep 16 2018, 19:24) *
Вот блок-схема из документации:

Всё правильно, они подразумевают что interrupt - это просто прерывание работы шины ядра на передачу DMA, а есть еще interrupt как последовательность действий по вызову подпрограммы обработки прерывания INT.
Собственно на стр. 120 это и нарисовано CASE A когда передача данных идёт с помощью прерывания INT, а в CASE B с помощью DMA.

Поверхностно глянул что DMA может маскировать прерывания идущие на контроллер прерываний, да, японцы они такие затейники...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th April 2024 - 23:29
Рейтинг@Mail.ru


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