STM32F103, непонятки с DMA
31.10.2014, 11:42
|
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Сообщение от eddy
|
|
Нет отладчика кроме printf ☺
|
Это писец! Без отладчика и анализатора там делать нечего, увы. В частности из-за того, что таймер загружается данными OW-шины заранее, а реакция датчика проверяется в следующем цикле.
Вот эпюры OW на голом таймере (два канала + одно прерывание) STM8S, там нет ДМА.
На первой картинке: запускается таймер и сразу вечный цикл с инверсией бита. Первое прерывание не соответствует никакому импульсу, потому что в этом прерывании только заносятся данные для последующего импульса.
|
|
|
|
31.10.2014, 22:44
|
|
|
Прохожий
Регистрация: 03.11.2010
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Сообщение от STM32F0
|
Это писец! Без отладчика и анализатора там делать нечего, увы. В частности из-за того, что таймер загружается данными OW-шины заранее, а реакция датчика проверяется в следующем цикле.
Вот эпюры OW на голом таймере (два канала + одно прерывание) STM8S, там нет ДМА.
На первой картинке: запускается таймер и сразу вечный цикл с инверсией бита. Первое прерывание не соответствует никакому импульсу, потому что в этом прерывании только заносятся данные для последующего импульса.
|
Порядок в каком контроллер устройства заполняет DMA буферы, определяется производителем. Контроллер может писать в первый свободный DMA буфер, либо просто писать подряд (дескрипторы DMA буферов в данном случае образуют односвязный кольцевой список) во все буфера и т.д.
Отправляйте все по кольцу.
|
|
|
|
31.10.2014, 22:59
|
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Интересно, поможет это ТС'у?
|
|
|
|
01.11.2014, 15:32
|
|
|
Прохожий
Регистрация: 03.11.2010
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
..................................in/off
|
|
|
|
14.11.2014, 13:25
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Охренеть!
Я с этого DMA просто ...
теперь ничего не работает. Воткнул (даже не видоизменяя) старый рабочий код - хрен там!
Мде.
Ну прямо вообще...
Хоть бери, да делай на прерываниях!
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
|
|
|
|
14.11.2014, 13:53
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Идиотизм какой-то: чтобы передача DMA правильно работала каждый раз, необходимо сначала целиком сконфигурировать оба канала DMA! Это что за нафиг?
Но добить надо. Буду ковыряться в даташите: сфига ли каждый раз надо канал DMA заново настраивать? Это ж охренеть как много времени тратится! Смысла в этом случае никакого от DMA нет.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
Последний раз редактировалось eddy; 14.11.2014 в 14:00.
|
|
|
|
14.11.2014, 14:28
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Сообщение от eddy
|
|
чтобы передача DMA правильно работала каждый раз, необходимо сначала целиком сконфигурировать
|
Что там конфигурировать-то? 3-4 регистра на канал. И то можно не всё переписывать (кажется DMA_SxNDTR может и сам перегрузиться), адрес периферии можно не менять, только адрес памяти загрузить и канал разрешить.
Сообщение от eddy
|
|
сфига ли каждый раз надо канал DMA заново настраивать? Это ж охренеть как много времени тратится
|
Если пересылка длинная, то оно того стоит. На 1-2 байта конечно смысла мало.
Сообщение от eddy
|
|
Смысла в этом случае никакого от DMA нет.
|
Ну, ядро-то разгружается. Нет?
|
|
|
|
14.11.2014, 15:42
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Сообщение от _Артём_
|
|
адрес периферии можно не менять, только адрес памяти загрузить и канал разрешить.
|
А вот не получается: счетчик почему-то неправильный выходит. Если сбросить DMA и полностью настроить, тогда все ОК.
Сообщение от _Артём_
|
|
Если пересылка длинная, то оно того стоит. На 1-2 байта конечно смысла мало.
|
Посылка 1-wire. 1 байт посылки == 1 бит данных. В принципе, получается прилично. Но хотелось-то как можно короче сделать функцию.
Сообщение от _Артём_
|
|
Ну, ядро-то разгружается. Нет?
|
Разгружается. На время N*110мкс (N - количество переданных бит).
Черт! Там еще и таймер надо заново переконфигурировать.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
Последний раз редактировалось eddy; 14.11.2014 в 15:50.
|
|
|
|
14.11.2014, 16:54
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Сообщение от eddy
|
|
А вот не получается: счетчик почему-то неправильный выходит. Если сбросить DMA и полностью настроить, тогда все ОК.
|
Странно, вроде пишут что:
|
Цитата:
|
Once the transfer has completed, this register can either stay at zero (when the stream is in
normal mode) or be reloaded automatically with the previously programmed value in the
following cases:
– when the stream is configured in Circular mode.
– when the stream is enabled again by setting EN bit to '1'
|
Хотя я не проверял - может не так их понял.
Сообщение от eddy
|
|
Посылка 1-wire. 1 байт посылки == 1 бит данных. В принципе, получается прилично. Но хотелось-то как можно короче сделать функцию.
|
Функцию инициализации? Она же и так никакая.
Сообщение от eddy
|
Разгружается. На время N*110мкс (N - количество переданных бит).
Черт! Там еще и таймер надо заново переконфигурировать.
|
А таймер в каком режим используете?
|
|
|
|
14.11.2014, 17:10
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Сообщение от _Артём_
|
|
Странно, вроде пишут что:
|
Я тоже так сначала и сделал, но фигвам.
|
Цитата:
|
|
Функцию инициализации? Она же и так никакая.
|
Больше трех десятков строк, однако.
|
Цитата:
|
|
А таймер в каком режим используете?
|
ШИМ, понятное дело. DMA обновляет значения в CCR4 (передача), а по захвату с CCR3 (прием) пинается DMA на запись.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:15.
|
|