Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


Ответ
Опции темы
Непрочитано 10.01.2021, 11:07   #6021
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,485
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Кстати, я год назад когда запускал пиксельные линейки светодиодов, тоже столкнулся с проблемой лишних импульсов на F103. Разбираться не стал, просто сделал на F030 и не парился.
Реклама:
NewWriter вне форума   Ответить с цитированием
Непрочитано 10.01.2021, 11:26   #6022
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 434
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от j-Roger Посмотреть сообщение
в данном случае без разницы, пишем прямо в TIMER-›CCRx или через TIMER-›DMAR - ведь обновляется единственный канал таймера
Позволю себе не согласиться. Наличие такого режима и регистра TIMER-›DMAR подразумевает какую то логику и последовательность передачи данных между ДМА и регистром таймера. А соответственно какую то (пусть и минимальную но) задержку.

Дальше

Сообщение от j-Roger Посмотреть сообщение
DMA должен успеть сделать трансфер ПАМЯТЬ-›CCRx таймера до начала нового периода (на CCRx разрешена предзагрузка).
До события update event, так как по нему
Цитата:
TIMx_CCR1 preload value is loaded in the active register at each update event.
происходит обновление регистра из прелоада. И в этот же момент запускается передача по ДМА в прелоад регистр. Вот тут какая то коллизия и происходит. Если же использовать compare event то это событие уже будет отлично от update event по времени.

И мне непонятно выражение
Сообщение от j-Roger Посмотреть сообщение
там появляется проблема на относительно низких тактовых частотах
А какая разница высокая или малая частота если источник тактирования для всех один?
sat_art вне форума   Ответить с цитированием
Непрочитано 10.01.2021, 11:33   #6023
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 434
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

И так давайте по порядку.
Таймер считает вверх. Событие update event возникает в конце периода таймера при изменении счетчика из макс в 0.
В этот же момент начинается передача по ДМА и происходит обновление регистра CCR из прелоада. Что произойдет быстрее?
sat_art вне форума   Ответить с цитированием
Непрочитано 10.01.2021, 11:35   #6024
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 434
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Если же CCR отличен от нуля. То событие compare event для данного периода работы таймера произойдет раньше события update event и корректно (заранее до наступления события update) изменит значение прелоад регистра.
sat_art вне форума   Ответить с цитированием
Непрочитано 10.01.2021, 11:37   #6025
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 434
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от sat_art Посмотреть сообщение
Если же CCR отличен от нуля.
Если же равен нулю. То событие compare event наступает сразу же за событием update event. Только update event с прошлого периода таймера а compare event с текущего.
sat_art вне форума   Ответить с цитированием
Непрочитано 10.01.2021, 11:45   #6026
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 434
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от sat_art Посмотреть сообщение
В этот же момент начинается передача по ДМА и происходит обновление регистра CCR из прелоада.
Хочу уточнить, что обновление регистра CCR должно стать актуальным для наступающего периода таймера.
То есть оно обязательно должно обновиться. И вот если по какой то причине оно не обновится (а причина одна - CCR перезаписался из прелоада быстрее чем прелоад по ДМА) и появляются лишние импульсы. Так как прелоад обновился (и соответственно на следующий период он передастся в CCR).
sat_art вне форума   Ответить с цитированием
Непрочитано 10.01.2021, 12:54   #6027
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,485
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

sat_art, чой-то вы сами себе отвечаете то?
NewWriter вне форума   Ответить с цитированием
Непрочитано 10.01.2021, 12:57   #6028
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 434
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

NewWriter, так получилось
sat_art вне форума   Ответить с цитированием
Непрочитано 10.01.2021, 15:19   #6029
j-Roger
Гражданин KAZUS.RU
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 753
Сказал спасибо: 365
Сказали Спасибо 829 раз(а) в 389 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от sat_art Посмотреть сообщение
(а причина одна - CCR перезаписался из прелоада быстрее чем прелоад по ДМА)
Так да, по-любому CCR перепишется из прелоада быстрее, чем ДМА обновит прелоад - у ДМА больше телодвижений: ведь нужно получить запрос, пройти арбитраж, считать значение из источника и записать его в регистр, а это такты, такты, такты.. И в случае CCR › 0 момент инициации DMA request по compare event приближается к наступающему update event, и этих тактов может не хватить. Если CCR = 0, то в данном случае события compare event и update event можно считать эквивалентными для инициации DMA request.

Нажмите на изображение для увеличения
Название: AN2548_5_1_1.jpg
Просмотров: 0
Размер:	108.8 Кб
ID:	159825

Сообщение от sat_art Посмотреть сообщение
А какая разница высокая или малая частота если источник тактирования для всех один?
Ну там я не очень ясно выразился.
Имелось ввиду соблюдение довольно жестких таймингов для WS28xx при разных тактовых частотах МК (для простоты было принято AHB=APB1=APB2) : 8, 10, 12, 16, 24MHz.

Вот небольшая сводка для F103 и F030 при работе на 8MHz,
код и данные в RAM, TIM_ARR=8, TIM_PSCR=1, CCR=3 и 6 для T0H и T1H:
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 0
Размер:	112.5 Кб
ID:	159826

На частоте 12 MHz при любых значениях DMA request (burst feature тут никак не влиял) :
На F103 уже не было засветки лишних пикселов, только искажения цветов.
На F030 полный порядок

На 16 MHz уже все нормально и для F103.
j-Roger вне форума   Ответить с цитированием
Непрочитано 10.01.2021, 15:34   #6030
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 434
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от j-Roger Посмотреть сообщение
И в случае CCR › 0 момент инициации DMA request по compare event приближается к наступающему update event, и этих тактов может не хватить.
Да так оно и есть.
Понятно, что в данном конкретном случае, все равно когда (на каком периоде таймера) начнут появляться импульсы на выходе таймера.
Но если играться с точным кол-вом импульсов и правильным формированием длительности этих импульсов, то обновлять прелоад регистр нужно в течении текущего периода таймера, для того что бы он обновил CCR в следующем наступающем событии упдейт для следующего периода таймера.

Я, честно говоря, не совсем понимаю смысл игр с частотами для формирования 400nS импульсов. 103 позволяет на внутреннем генераторе 64Мгц, смысл опускать частоту? Сэкономить несколько мА, когда светодиод жрет на порядок больше.
125 наносекунд на такт при 8Мгц тактовой, и такой частотой пытаться сформировать 400 наносекундный импульс - извращение. Накладные расходы ДМА все съедают.

Ну а то что 103 внутри гавно, то и так понятно.

Последний раз редактировалось sat_art; 10.01.2021 в 15:37.
sat_art вне форума   Ответить с цитированием
Ответ

Закладки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 22:32.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot