Ответить
  • siola Senior MemberАвтор темы
    офлайн
    siola Senior Member Автор темы

    10729

    14 лет на сайте
    пользователь #404386

    Профиль
    Написать сообщение

    10729
    # 28 сентября 2012 03:33 Редактировалось siola, 40 раз(а).

    Советы и помощь по ремонту, восстановлению абсолютно любой аудио-видео-радиотехники, а также размещаем и обсуждаем созданные лично различные радиоустройства, либо модернизацию промышленной, серийной аппаратуры.

    ...пусть это будут проигрыватели пластинок (винила), импортная или отечественная магнитола, дека, усилитель, тюнер, любой телевизор, катушечный аналоговый или кассетный цифровой аудио и видео магнитофон, даже эстрадный аппарат или акустика, пусть и самодельная... всего не перечесть :) .
    Обсуждаем схемотехнику транзисторных, интегральных и ламповых усилителей, кто пробовал повторить или придумывал сам. С какими "подводными камнями" пришлось столкнуться с определенной схемотехникой, ремонтом и т.д., чтоб не "лазить" по сторонним сайтам в поисках нужной инфы... как-никак, у нас достаточно грамотного в этом плане народу.
    Думаю, что благодаря этому общению и клиенты смогут выбрать, кому нести свой аппарат на ремонт.
    Мастерских в Беларуси хватает, но не везде есть толковые ребята. Им проще целиком плату/модуль заменить, чем найти копеечную деталь, которая вылетела. Почему???... думаю, что понятно всем, надеюсь...
    У многих есть знания, но есть и такие индивидуумы, что знаний много, но руки растут не и "нужного места" или совсем наоборот - напаяют, накурочат так, что без содрогания... смотреть на платы довольно тяжело :( .
    Пусть клиент и выбирает среди нас достойного ремонтника для себя, читая эту тему.
    Я не претендую на лидерство, т.к. знаю, что есть у нас очень даже немало специалистов, которые прежде, чем браться за аппарат - руки с мылом несколько раз вымоют! Есть очень дорогая и редкая техника, к которой надо подойти с полной ответственностью!
    Данная тема про абсолютно любую аппаратуру... и думаю, что она будет жить и помогать всем!
    ПЫ_СЫ... рекламы скрытой или косвенной - по услугам ремонта или продаж... здесь быть не должно, это в "барахолку" - надеюсь, всем понятно :) .

    Фото и видео красивой аппаратуры складываем сюда - https://forum.onliner.by/viewtopic.php?t=21014569

    Ветки параллельной тематики:
    Катушечные магнитофоны, их будущее... или цифра рулит?
    Команда Самоделкиных
    Паяльник & Отвертка TEAM part II

  • Victorio Senior Member
    офлайн
    Victorio Senior Member

    1823

    18 лет на сайте
    пользователь #112827

    Профиль
    Написать сообщение

    1823
    # 9 июня 2025 09:31
    КляйненЕнотен:

    ...мне откуда то знать спецификацию ваявший цифровиков, и да... с какой даты производства заканчивается современность цифровика?

    :conf:
    что к чему? что-то ляпнул, вообще не разобрать. Ни смысла, ни грамотности. Если не откуда знать, зачем сюда что-то писать?
    Современность цифровика заканчивается? А что начинается?

  • minzurka Senior Member
    офлайн
    minzurka Senior Member

    9964

    18 лет на сайте
    пользователь #112975

    Профиль
    Написать сообщение

    9964
    # 9 июня 2025 10:57

    Финиш.

  • Liv1 Senior Member
    офлайн
    Liv1 Senior Member

    7909

    10 лет на сайте
    пользователь #1728864

    Профиль
    Написать сообщение

    7909
    # 9 июня 2025 11:02 Редактировалось Liv1, 3 раз(а).

    Вот и мне пришлось столкнуться с этой баго-фичей. Делаю генератор калибровки для катушечного магнитофона. К STM32F405 по I2S подключил ЦАП PCM5102. В прерывании вычисляю отсчеты и вывожу в порт (текст обработчика приведен условный, а вместо треугольной скобки поставил фигурную, иначе форум не даёт).

    код выделить все

    // TXE interrupt:
    void SPI3_IRQHandler(void)
    {
    d = DDS_calc(f);
    SPI3-}DR = d;
    }

    Прерывание возникает 2 раза подряд на одно событие опустошения буферного регистра передачи. При этом всё, конечно, ломается. Баг, вроде, известный, но метод лечения какой-то кривоватый - пустое чтение регистра DR.

    e-mail: wubblick@yahoo.com
  • Popesych Паяльник & Отвертка TEAM
    офлайн
    Popesych Паяльник & Отвертка TEAM

    23753

    23 года на сайте
    пользователь #3482

    Профиль
    Написать сообщение

    23753
    # 9 июня 2025 13:30 Редактировалось Popesych, 3 раз(а).

    Liv1, По моему это во всех СТМках.... входной буфер не вырубишь.
    PS ну пусть переполняется... выключи прерывание RXNEIE и ERRIE
    PSS А почему не ДМА? Я вон в выше поделке на мот с 25мбит по СПИ на индикатор 240х240 16 бит цвет выдаю по ДМА... Крысота

    Баляць мае крылы
  • Land Клуб Самоделкиных
    офлайн
    Land Клуб Самоделкиных

    28161

    24 года на сайте
    пользователь #1470

    Профиль
    Написать сообщение

    28161
    # 9 июня 2025 13:32
    Liv1:

    Прерывание возникает 2 раза подряд на одно событие опустошения буферного регистра передачи.

    флаг не успевает сброситься?

    Согласно теории струн Вселенная имеет дополнительные измерения, свернутые в пространство Калаби-Яу.
  • dyno Senior Member
    офлайн
    dyno Senior Member

    14092

    17 лет на сайте
    пользователь #145869

    Профиль
    Написать сообщение

    14092
    # 9 июня 2025 15:40 Редактировалось dyno, 1 раз.

    Может у кого есть свежий опыт склеивания силумина (или похожего - алюминий, сплавы).
    Сварку и похожее не предлагать.
    В идеале тонкий слой, клей а-ля холодная сварка, на эпоксидной основе, 2-компонентный, без нагрева.
    Ещё какие-то есть анаэробные клеи-герметики сверхсильной фиксации, но пока изучаю, тож большие тубы.
    Нагрузка есть после склеивания есть, но не оч и большая.
    Хорошие промышленные в больших упаковках дорогие, может кто сможет устроить остаток 5-10мл, типа LOCTITE EA 9466

    Мои Боги меня рабом не называли.
  • Liv1 Senior Member
    офлайн
    Liv1 Senior Member

    7909

    10 лет на сайте
    пользователь #1728864

    Профиль
    Написать сообщение

    7909
    # 9 июня 2025 15:45
    Popesych:

    входной буфер не вырубишь.

    При чем тут входной буфер?

    Popesych:

    выключи прерывание RXNEIE и ERRIE

    Оно у меня и не включалось.

    Popesych:

    PSS А почему не ДМА?

    Особого смысла в DMA не вижу. Можно, конечно, вычислять сразу какое-то количество значений и передавать по DMA, но все равно суммарное время вычислений не поменяется. Разве что можно сэкономить на расходах по входу/выходу в прерывание, но это не сильно много.

    e-mail: wubblick@yahoo.com
  • КляйненЕнотен Senior Member
    офлайн
    КляйненЕнотен Senior Member

    29446

    21 год на сайте
    пользователь #17650

    Профиль
    Написать сообщение

    29446
    # 9 июня 2025 20:29
    Victorio:

    Современность цифровика заканчивается? А что начинается?

    а мне откуда знать, может оно заканчивается в 2000 году. а может и 2022.. :-?

    Victorio:

    что к чему? что-то ляпнул, вообще не разобрать. Ни смысла, ни грамотности. Если не откуда знать, зачем сюда что-то писать?

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

    определитесь, мы там, где победа или победа там, где мы!
  • Popesych Паяльник & Отвертка TEAM
    офлайн
    Popesych Паяльник & Отвертка TEAM

    23753

    23 года на сайте
    пользователь #3482

    Профиль
    Написать сообщение

    23753
    # 10 июня 2025 15:50
    Liv1:

    Оно у меня и не включалось.

    тогда откуда второе прерывание?

    Liv1:

    пустое чтение регистра DR.

    вот меня это меня на мысль о включённых прерываниях по чтению и переполнению и подтолкнуло, что второе прерывание срабатывает после наполнения входного буфера, или его переполнения, раз все будет хорошо, если входной буфер вычитывать и не давать переполняться.
    Да и не вижу я в процедуре прерывания обработку источника прерывания.
    ЗЫ в таки случаях вывожу на какой нить вывод(ы) контроллера биты с регистра состояния, что бы понимать что происходит.
    ЗЫЫ на прямую конфигурируешь регистры контроллера или через HAL дрова?

    Liv1:

    но все равно суммарное время вычислений не поменяется.

    уменьшиться на время передачи по СПИ. Может в твоем случае она, передача, существенно меньше чем вычисления, тогда да.

    Баляць мае крылы
  • Liv1 Senior Member
    офлайн
    Liv1 Senior Member

    7909

    10 лет на сайте
    пользователь #1728864

    Профиль
    Написать сообщение

    7909
    # 10 июня 2025 17:16 Редактировалось Liv1, 1 раз.
    Popesych:

    тогда откуда второе прерывание?

    Это и есть знаменитая багафича. Бит TXE сбрасывается при записи в регистр DR. Такая запись здесь делается в конце обработчика прерывания. Но SPI висит на шине APB1, которая в данном случае в 4 раза медленнее шины AHB. В результате выход из обработчика прерывания происходит раньше, чем реальная запись в DR, которая пробирается сквозь арбитры шин. Получается, что TXE еще не сброшен, прерывание возникает второй раз.

    Самое плохое, что непонятно, как с этим правильно бороться. Некоторые рекомендуют просто ставить действие, которое сбрасывает флаг прерывания, ближе к началу обработчика. Но не всегда это возможно (в моем случае данные сначала надо вычислить, иначе нечего записывать в DR). К тому же, нет гарантии, что глюк не проявится снова, когда, например, DMA займет шину периферии в неподходящий момент. Или в другом проекте вдруг будет выше делитель шины APB1 (для вылавливания данного глюка всегда полезно попробовать по максимуму замедлить APB). Наиболее правильное решение - перед выходом из прерывания проверять, сбросился ли флаг. Но для этого надо добавлять цикл с чтением и проверкой регистра SR, что лишние затраты времени. Помогает пустое чтение из регистра DR. Но это тоже лишние затраты времени (запись завершается раньше, а тут еще целое лишнее чтение). Непонятно, как сказать ядру, чтобы оно сделало запись в периферию с ожиданием окончания этого процесса.

    Popesych:

    вот меня это меня на мысль о включённых прерываниях по чтению и переполнению и подтолкнуло, что второе прерывание срабатывает после наполнения входного буфера

    Нет, входной буфер тут ни при чем. Чтение DR делается только для того, чтобы гарантированно закончилась запись, до этого момента чтение не выполнится.

    Popesych:

    Да и не вижу я в процедуре прерывания обработку источника прерывания.

    В смысле? Это прерывание по опустошению буферного регистра передачи. Я вычисляю следующие данные и записываю в этот регистр. Эта запись сбрасывает флаг прерывания. Какой еще обработки не хватает?

    Popesych:

    ЗЫ в таки случаях вывожу на какой нить вывод(ы) контроллера биты с регистра состояния, что бы понимать что происходит.

    Драматизм ситуации заключается в том, что если вставить чтение регистра состояния, то глюк уйдет сам собой. Ничего и не узнаем.

    Popesych:

    ЗЫЫ на прямую конфигурируешь регистры контроллера или через HAL дрова?

    Напрямую, никаких HAL.

    Popesych:

    уменьшиться на время передачи по СПИ. Может в твоем случае она, передача, существенно меньше чем вычисления, тогда да.

    Наоборот, у меня время передачи существенно больше, чем время вычисления. Но я не жду окончания передачи. Загрузил данные в DR и сразу вышел из прерывания. Следующее произойдет через некоторое время, опять быстренько загружу новые данные и выйду.

    e-mail: wubblick@yahoo.com
  • seriyvolk Senior Member
    офлайн
    seriyvolk Senior Member

    2574

    15 лет на сайте
    пользователь #298004

    Профиль
    Написать сообщение

    2574
    # 10 июня 2025 17:36
    Liv1:

    Некоторые рекомендуют просто ставить действие, которое сбрасывает флаг прерывания, ближе к началу обработчика. Но не всегда это возможно

    Это как "не всегда возможно"? Что, иногда нужно выходить из прерывания, не сбросив его флаг? По мне, сброс флагов - это первое, что стоит делать, попав в прерывание.

    Liv1:

    Чтение DR делается только для того, чтобы гарантированно закончилась запись, до этого момента чтение не выполнится.

    Ну вот и поставить это чтение в самый конец прерывания. Если всё гладко - много времени не отнимет. Если есть косяк - будет задержка, но с устранением косяка.

  • Liv1 Senior Member
    офлайн
    Liv1 Senior Member

    7909

    10 лет на сайте
    пользователь #1728864

    Профиль
    Написать сообщение

    7909
    # 10 июня 2025 18:02
    seriyvolk:

    Это как "не всегда возможно"?

    Ну и как мне сбросить прерывание по SPI TXE в начале обработчика?

    e-mail: wubblick@yahoo.com
  • Popesych Паяльник & Отвертка TEAM
    офлайн
    Popesych Паяльник & Отвертка TEAM

    23753

    23 года на сайте
    пользователь #3482

    Профиль
    Написать сообщение

    23753
    # 11 июня 2025 11:58
    Liv1:

    Самое плохое, что непонятно, как с этим правильно бороться.

    в твоем случае легко. Сначала делай запись в DR предыдущего расчетного значения, а потом считай новое значение. Пока считаешь новое все шины уже засинхриться.

    Добавлено спустя 1 минута 40 секунд

    Liv1:

    Драматизм ситуации заключается в том, что если вставить чтение регистра состояния, то глюк уйдет сам собой.

    если на входе в обработчик поставить чтение SR регистра то все починиться? Даже если в конце обработчика писать в DR и сразу выходить?
    Не понятно тогда

    Добавлено спустя 23 секунды

    Liv1:

    Напрямую, никаких HAL.

    :beer:

    Добавлено спустя 1 минута 19 секунд

    Liv1:

    Наоборот, у меня время передачи существенно больше, чем время вычисления. Но я не жду окончания передачи. Загрузил данные в DR и сразу вышел из прерывания. Следующее произойдет через некоторое время, опять быстренько загружу новые данные и выйду.

    все равно бы ДМА бы использовал. Загрузил буфер и сказал ДМА "отправляй" И сиди кури. И может глюка бы не было.

    Добавлено спустя 7 минут 1 секунда

    seriyvolk, в его случае SR реад онли.

    Баляць мае крылы
  • Liv1 Senior Member
    офлайн
    Liv1 Senior Member

    7909

    10 лет на сайте
    пользователь #1728864

    Профиль
    Написать сообщение

    7909
    # 11 июня 2025 14:02
    Popesych:

    в твоем случае легко. Сначала делай запись в DR предыдущего расчетного значения, а потом считай новое значение. Пока считаешь новое все шины уже засинхриться.

    Да, в каких-то случаях так можно. Но я привел упрощенный вариант ситуации, в реальности передаются 32 бита, когда передается второе (младшее) слово, то считать нечего, приходится делать пустое чтение DR.

    Popesych:

    если на входе в обработчик поставить чтение SR регистра то все починиться? Даже если в конце обработчика писать в DR и сразу выходить?

    А в чем смысл на входе обработчика читать SR? И так понятно, что TXE будет установлен. А вот если SR прочитать в конце (после записи в DR), то все починится.

    Похожая ситуация возникает при разрешении клока для периферии в RCC. Сразу после этой операции нельзя работать с периферией, надо подождать. Это есть в errata для F4:

    Только советы сомнительные - DSB ничего не знает о задержках записи для шин APB, а одного чтения бывает недостаточно (это было в STM Community).

    Liv1:

    все равно бы ДМА бы использовал. Загрузил буфер и сказал ДМА "отправляй" И сиди кури.

    Так буфер каждый раз вычислять надо. Где это делать? В прерывании Half transfer DMA? Тогда будет длинное прерывание, что плохо. В основной программе - как-то слабо предсказуемо, можно вовремя не успеть. А так вычисляю каждую точку по мере передачи их по SPI (точнее, I2S), по сравнению с DMA лишние расходы только на вход/выход в прерывание, что мало по сравнению с вычислением.

    e-mail: wubblick@yahoo.com
  • Popesych Паяльник & Отвертка TEAM
    офлайн
    Popesych Паяльник & Отвертка TEAM

    23753

    23 года на сайте
    пользователь #3482

    Профиль
    Написать сообщение

    23753
    # 11 июня 2025 15:46 Редактировалось Popesych, 1 раз.
    Liv1:

    А в чем смысл на входе обработчика читать SR? И так понятно, что TXE будет установлен.

    может с TXE что-то другое устанавливается.

    Liv1:

    Так буфер каждый раз вычислять надо. Где это делать?

    а, так у тя в реальном времени вычисляется? ну тогда ой. Хотя.... ДМА есть кольцевой режим.... по слову можно по кольцу слать.

    Добавлено спустя 2 минуты 47 секунд

    Liv1:

    В прерывании Half transfer DMA?

    ну да.... Ты же говоришь что у тя вычисляет на много быстрее чем отправляется слово.

    Баляць мае крылы
  • Liv1 Senior Member
    офлайн
    Liv1 Senior Member

    7909

    10 лет на сайте
    пользователь #1728864

    Профиль
    Написать сообщение

    7909
    # 11 июня 2025 16:11
    Popesych:

    может с TXE что-то другое устанавливается.

    Прерывание разрешено только по TXE, остальные биты неинтересны.

    Popesych:

    а, так у тя в реальном времени вычисляется? ну тогда ой.

    Да, у меня программный DDS для генерации синуса.

    Popesych:

    Хотя.... ДМА есть кольцевой режим.... по слову можно по кольцу слать.

    Никак не могу взять в толк, в чем здесь преимущество DMA? Сколько времени потратим в куче коротких прерываний, примерно столько же и в одном длинном.

    e-mail: wubblick@yahoo.com
  • Popesych Паяльник & Отвертка TEAM
    офлайн
    Popesych Паяльник & Отвертка TEAM

    23753

    23 года на сайте
    пользователь #3482

    Профиль
    Написать сообщение

    23753
    # 11 июня 2025 23:22
    Liv1:

    Да, у меня программный DDS для генерации синуса.

    сложный какой то синус с гармониками? или чистый синус с заданными периодом и амплитудой и выводим это в ЦАП, пока не поменяется один из параметров?

    Баляць мае крылы
  • Liv1 Senior Member
    офлайн
    Liv1 Senior Member

    7909

    10 лет на сайте
    пользователь #1728864

    Профиль
    Написать сообщение

    7909
    # 12 июня 2025 01:14
    Popesych:

    сложный какой то синус с гармониками? или чистый синус с заданными периодом и амплитудой и выводим это в ЦАП, пока не поменяется один из параметров?

    Чистый синус с заданной частотой и амплитудой.

    e-mail: wubblick@yahoo.com
  • Popesych Паяльник & Отвертка TEAM
    офлайн
    Popesych Паяльник & Отвертка TEAM

    23753

    23 года на сайте
    пользователь #3482

    Профиль
    Написать сообщение

    23753
    # 12 июня 2025 06:55 Редактировалось Popesych, 1 раз.

    Liv1, тогда чем не угодно сформировать в памяти один период и натравить на эту память кольцевой ДМА?
    И сиди кури.
    Контроллер по размеру памяти позволяет это?

    Баляць мае крылы
  • Liv1 Senior Member
    офлайн
    Liv1 Senior Member

    7909

    10 лет на сайте
    пользователь #1728864

    Профиль
    Написать сообщение

    7909
    # 12 июня 2025 09:44
    Popesych:

    Liv1, тогда чем не угодно сформировать в памяти один период и натравить на эту память кольцевой ДМА?

    Допустим, хочу генерировать частоту 17 кГц. Частота дискретизации 48 кГц. Какой должна быть таблица в памяти?

    e-mail: wubblick@yahoo.com