29.10.2014, 15:25
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Сообщение от dosikus
|
dma_set_peripheral_size(DMA1, DMA_CHANNEL7, DMA_CCR_PSIZE_16BIT);
dma_set_memory_size(DMA1, DMA_CHANNEL7, DMA_CCR_MSIZE_32BIT);
Изумительно , а мы гадаем ....
|
Ну так tim2_buff имеет тип uint32_t! До этого делал uint16_t, получалась хрень какая-то. Хотя, можно попробовать отключить выравнивание...
Сделал массив восьмибитным, сменив размер на DMA_CCR_MSIZE_8BIT - та же история: сначала 2 последних байта, потом первые.
Прикола ради забульбенил вот это:
Код:
|
uint8_t tim2_buff[8] = {30,40,50,60,70,80,10,20}; |
Показывает по порядку: 10, 20... Мде...
__________________
Союз Советских Социалистических Округов Северной Америки
Последний раз редактировалось eddy; 29.10.2014 в 15:34.
|
|
|
|
29.10.2014, 15:50
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Сколько бы байт я не передавал, сначала передаются два последних, а потом уже с начала массива...
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
29.10.2014, 16:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Вот блин!
Пошла лесом моя идея ☹
Для того, чтобы через DMA делать захват, мне нужно подключать связанный с четвертым каналом таймера 2 канал 3. А он висит на канале 1 DMA, который уже занят АЦП ☹
Вот что за [censored]?! Почему так мало DMA в STM32? Могли бы на каждую хрень свой канал выделить... А так получается, что приходится выбирать. И если надо, скажем, SPI и USART делать через DMA, придется следить, чтобы это не были, скажем, SPI1 и USART3, висящие на одном канале DMA!
Вот же срака!!!
А кто-то мне хвастался на изиэлектрониксе, что реализовал аппаратный 1-wire ... Видимо, у него не было такой нехватки каналов DMA. Или ног было много свободных, чтобы захват делать другим таймером.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
29.10.2014, 20:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Решил чередовать работу с АЦП и 1-wire (т.е. нужный канал ПДП подключать туда-сюда). Захват с горем пополам настроил.
Вот же чертовщина! DMA по захвату практически идеально соответствует картинке на осциллограмме.
А вот выхлоп — хрена с два! Первый вообще интересный: 0 10 20 30 40 50 60 70. Далее 70 80 10 20 30 40 50 60, но бывают и 63 70 80 80 80 80 80 80 (изредка).
И упорно не хочет выход устанавливаться в единицу по окончанию работы.
Вот же япона мать!
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
29.10.2014, 20:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Да скачай игровую прошивку, поставь её на свой модем и посмотри в ней отладчиком, что творится в чипе... 10 минут на всё... В Виндах дебаггер прекрасно работает... К чему эти Линукс-понты и мужественное сражение с ветряными мельницами
|
|
|
|
29.10.2014, 20:57
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
eddy, А обработчик NVIC_TIM2_IRQ где ?
И где приоритеты ?
__________________
Осторожно , злой кот
|
|
|
|
29.10.2014, 21:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Сообщение от dosikus
|
А обработчик NVIC_TIM2_IRQ где ?
|
Этого прерывания нет, т.к. оно не нужно.
Прерывание DMA1_7 просто отрубает DMA (это передача из буфера в CCR4), а прерывание DMA1_1 отрубает этот канал ПДП + вырубает таймер + устанавливает на выходе высокий уровень (но что-то он не устанавливается).
Позже могу весь код выложить. Я просто пока не делаю коммит, т.к. нихрена не работает.
А приоритеты им разве нужны? Не пофиг ли?
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
29.10.2014, 21:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
niXto, в линуксе тоже gdb отлично работает. Я им просто не умею пользоваться. И не собираюсь учиться. И так дохрена времени на всякую фигню тратить приходится. Скоро, вот, выучу уже наизусть даташит на STM32F103 ☹
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
29.10.2014, 21:11
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Сообщение от eddy
|
Этого прерывания нет, т.к. оно не нужно.
|
А зачем тогда разрешаешь и включаешь?
__________________
Осторожно , злой кот
|
|
|
|
29.10.2014, 21:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: STM32F103, непонятки с DMA
Сообщение от dosikus
|
А зачем тогда разрешаешь и включаешь?
|
А и правда. Включил зачем-то. Видимо, решил, что без этого не сработает пинание DMA.
Буду завтра разбираться. Наверняка, что-нибудь пропустил. Следует более вдумчиво прочесть даташит. Хотя, вроде бы, первый канал ПДП инициализируется почти так же, но работает правильно. А этот хрень какую-то делает. Такое впечатление, что DMA не всегда срабатывает (особенно когда было несколько байт подряд с одним и тем же значением, а прерывание с ошибкой так и не сгенерировалось).
Но аппаратный 1-wire очень хочется сделать.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:09.
|
|