POEMA'NU - 6С52Н ММ-фонокорректор с двумя переключаемыми входами

Список разделов РАДИОТЕХНИЧЕСКИЙ ФОРУМ Аналоговая аудиотехника Фонокорректоры

Модераторы: Алаев Ян, poty, Роман Мирошниченко

#621 Алаев Ян » 7 марта 2017, 19:07

Роман Мирошниченко писал(а):Я думаю, это уже факт - со старой прошивкой все работает.
Отлично! Давайте попробуем проверить версию "прошивка встала криво", загрузите последнюю версию и давайте попробуем установить факт повторения глюка.

Добавлено спустя 39 секунд:
Роман Мирошниченко писал(а):Заметил - с этой прошивкой "щекание" другое. "Щелчек" в колонках заметно отстает от механического "щелчка" селектора входов.
Есть такое дело. Там есть специальная небольшая задержка.
Стремление к совершенству рождает шедевры! http://www.alaev.org
Алаев Ян
Основатель Форума
Аватара
Возраст: 34
Откуда: Саратов
Репутация: 63 (+63/−0)
Лояльность: 175 (+176/−1)
Сообщения: 2266
Темы: 1
С нами: 4 года 4 месяца

#622 Роман Мирошниченко » 7 марта 2017, 20:33

Хорошо, как только появится возможность, я переустановлю прошивку.

Добавлено спустя 31 минуту 44 секунды:
Прошивку загрузил. Контроллер отморгал, как ты и показывал.

Это получилось не с первого раза. Я ждал частого двоичного и не отпускал "кнопку". Но, он лишь три раза одинарно моргнул и все. В результате появилась надпись красным в программе. Я так понял, какая-то ошибка. Второй раз я отпустил кнопку после одиночного моргания и началось частое двоичное перемаргивание. Все прошло успешно.

Собираю корректор. Возможно уже сегодня испытаю (через наушники).

Добавлено спустя 16 минут 41 секунду:
Начал испытания - пока переключается. Но, задержка между поворотом ручки и "щелчком" в наушниках фактически отсутсвует. Попробую проверить через колонки. Это ведь не громко.

Добавлено спустя 2 минуты 33 секунды:
Так и есть, пауза очень незначительная.
Роман Мирошниченко
Заслуженный Ветеран
Заслуженный Ветеран
Аватара
Возраст: 50
Откуда: Саратов
Репутация: 46 (+46/−0)
Лояльность: 152 (+152/−0)
Сообщения: 3724
С нами: 4 года 3 месяца

#623 Алаев Ян » 7 марта 2017, 22:26

Роман Мирошниченко писал(а):Это получилось не с первого раза. Я ждал частого двоичного и не отпускал "кнопку". Но, он лишь три раза одинарно моргнул и все. В результате появилась надпись красным в программе. Я так понял, какая-то ошибка. Второй раз я отпустил кнопку после одиночного моргания и началось частое двоичное перемаргивание. Все прошло успешно.
Вы нажимаете "Загрузить" при нажатой кнопке. Сначала будет надпись в нижнем левом углу - "Компилируем", потом "Загружаем", как только увидите надпись "Загружаем" - кнопку нужно отпустить.
Стремление к совершенству рождает шедевры! http://www.alaev.org
Алаев Ян
Основатель Форума
Аватара
Возраст: 34
Откуда: Саратов
Репутация: 63 (+63/−0)
Лояльность: 175 (+176/−1)
Сообщения: 2266
Темы: 1
С нами: 4 года 4 месяца

#624 Роман Мирошниченко » 7 марта 2017, 22:31

Блин, я этот урок не запомнил... Или забыл.
Но, по идее все работает. Это точно та самая обновленная прошивка (по щелчкам чую) и вот уже второй час я жду глюк.
Роман Мирошниченко
Заслуженный Ветеран
Заслуженный Ветеран
Аватара
Возраст: 50
Откуда: Саратов
Репутация: 46 (+46/−0)
Лояльность: 152 (+152/−0)
Сообщения: 3724
С нами: 4 года 3 месяца

#625 Алаев Ян » 7 марта 2017, 23:07

Если вход переключается почти мгновенно после поворота ручки - то это последняя прошивка.
Стремление к совершенству рождает шедевры! http://www.alaev.org
Алаев Ян
Основатель Форума
Аватара
Возраст: 34
Откуда: Саратов
Репутация: 63 (+63/−0)
Лояльность: 175 (+176/−1)
Сообщения: 2266
Темы: 1
С нами: 4 года 4 месяца

#626 Роман Мирошниченко » 7 марта 2017, 23:10

Спать хочу... но и эксперимент жалко прерывать. :zombie:

Добавлено спустя 32 минуты 58 секунд:
Все, больше не переключается... :cry:
Теперь ясно - виновата прошивка.
Роман Мирошниченко
Заслуженный Ветеран
Заслуженный Ветеран
Аватара
Возраст: 50
Откуда: Саратов
Репутация: 46 (+46/−0)
Лояльность: 152 (+152/−0)
Сообщения: 3724
С нами: 4 года 3 месяца

#627 Алаев Ян » 8 марта 2017, 0:25

Это хороший результат. Было бы хуже, если бы пришлось лезть в железо. Поправим.
Стремление к совершенству рождает шедевры! http://www.alaev.org
Алаев Ян
Основатель Форума
Аватара
Возраст: 34
Откуда: Саратов
Репутация: 63 (+63/−0)
Лояльность: 175 (+176/−1)
Сообщения: 2266
Темы: 1
С нами: 4 года 4 месяца

#628 Роман Мирошниченко » 8 марта 2017, 8:34

Да, это меньшее из зол.
Плюс, работающая прошивка у нас все-таки есть.
Вопрос - мне ее ставить обратно или следующая будет в скором времени?
Вообще-то, перепрошивка не сложная процедура.
Роман Мирошниченко
Заслуженный Ветеран
Заслуженный Ветеран
Аватара
Возраст: 50
Откуда: Саратов
Репутация: 46 (+46/−0)
Лояльность: 152 (+152/−0)
Сообщения: 3724
С нами: 4 года 3 месяца

#629 Алаев Ян » 9 марта 2017, 13:29

Вы можете поставить пока первый вариант, чтобы Вас не раздражал этот баг. Я постараюсь в скором времени родить альтернативную версию прошивки.
Стремление к совершенству рождает шедевры! http://www.alaev.org
Алаев Ян
Основатель Форума
Аватара
Возраст: 34
Откуда: Саратов
Репутация: 63 (+63/−0)
Лояльность: 175 (+176/−1)
Сообщения: 2266
Темы: 1
С нами: 4 года 4 месяца

#630 Роман Мирошниченко » 9 марта 2017, 13:30

Я так и сделал уже. :smile:
Роман Мирошниченко
Заслуженный Ветеран
Заслуженный Ветеран
Аватара
Возраст: 50
Откуда: Саратов
Репутация: 46 (+46/−0)
Лояльность: 152 (+152/−0)
Сообщения: 3724
С нами: 4 года 3 месяца

#631 poty » 11 марта 2017, 20:47

Безусловным плюсом контроллера в данном случае является то, что всю систему управления можно гибко менять. Даже перевести на дистанционное управление.
Владислав
poty
Автор темы, Профи
Профи
Аватара
Возраст: 52
Откуда: Россия, Москва
Репутация: 76 (+76/−0)
Лояльность: 42 (+43/−1)
Сообщения: 3183
С нами: 4 года 4 месяца

#632 Алаев Ян » 13 марта 2017, 1:47

2.46... поздно уже... :sad: :sad: :sad:
Глюк в прошивке нашел, завтра внимательно проверю ее и отдам на тестирование.
Стремление к совершенству рождает шедевры! http://www.alaev.org
Алаев Ян
Основатель Форума
Аватара
Возраст: 34
Откуда: Саратов
Репутация: 63 (+63/−0)
Лояльность: 175 (+176/−1)
Сообщения: 2266
Темы: 1
С нами: 4 года 4 месяца

#633 Роман Мирошниченко » 13 марта 2017, 5:38

:clap: :clap: :clap:
Роман Мирошниченко
Заслуженный Ветеран
Заслуженный Ветеран
Аватара
Возраст: 50
Откуда: Саратов
Репутация: 46 (+46/−0)
Лояльность: 152 (+152/−0)
Сообщения: 3724
С нами: 4 года 3 месяца

#634 Алаев Ян » 13 марта 2017, 8:16

Я некоторое время потратил на попытки разобраться в природе глюка, но каждый раз макет работал совершенно одинаково и глюк не проявлялся ни с какой стороны. Я оставлял работающий макет на несколько дней - тот же результат. Вчера я "плюнул" на это дело и решил просто перекроить программу под те изменения которые мы обсуждали. Сделал индикацию включения выбранного входа - первый вход моргаем один раз, второй вход - моргаем два раза. Ранее я писал, что есть разница, между переключением входов из спящего режима и переключением входов при включении устройства (это разные участки кода прошивки). Так вот я внес изменения только в переключении входов из спящего режима и решил проверить макет. Моему удивлению не было предела, когда я нажал кнопку "включение" и моргающий код отработал и там. Это означало, что при внешнем прерывании по питанию - сработало прерывание и по входам. Такого быть не должно. Здесь было за что зацепиться и я начал копать и разбираться в этом. Сначала подумал, что я неверно что-то сконфигурировал. Оставил только одно прерывание по входу - проверил, все работает. Потом то же самое сделал с прерыванием по питанию - тоже работал. Потом начал думать, что у них есть какое-то взаимовлияние. Написал дополнительный код, который бы показывал, что мы попадаем в оба прерывания при срабатывании одного из них, проверил в разных комбинациях - опять ничего, прерывания работают независимо и не мешают друг другу. Попутно на форумах читал различную информацию по схожим вопросам и проблемам и уже подумывал, что стоило на выводы внешнего прерывания повесить какой-нибудь логический элемент, чтобы исключить дребезг контактов от переключателя, который может вызывать множественные прерывания при переключении и сводить контроллер с ума. Но каждый раз, когда я загружал прошивку версии 1.3 - при срабатывании прерывания по питанию - возникало прерывание и по входу. Я модифицировал код прошивки и искал то место, где могло происходить подобное. Включал и выключал различные разрешения на выполнение прерываний прямо в процессе выполнения кода. В конечном итоге помогла пауза после пробуждения, возможно, что-то еще я там вставил, сегодня еще раз внимательно проверю код. Но в общем виде логика такая - мы засыпаем, по факту пробуждения просыпаемся и попадаем на паузу, ничего не делаем некоторое время и только потом думаем, а что же нас разбудило. Вчера код работал без этой ошибки, надеюсь, что там больше нет подводных камней и сюрпризов больше не будет.
Стремление к совершенству рождает шедевры! http://www.alaev.org
Алаев Ян
Основатель Форума
Аватара
Возраст: 34
Откуда: Саратов
Репутация: 63 (+63/−0)
Лояльность: 175 (+176/−1)
Сообщения: 2266
Темы: 1
С нами: 4 года 4 месяца

#635 Роман Мирошниченко » 13 марта 2017, 8:59

Понятно теперь почему ночь не спал.
Роман Мирошниченко
Заслуженный Ветеран
Заслуженный Ветеран
Аватара
Возраст: 50
Откуда: Саратов
Репутация: 46 (+46/−0)
Лояльность: 152 (+152/−0)
Сообщения: 3724
С нами: 4 года 3 месяца

#636 Алаев Ян » 13 марта 2017, 10:31

Конечно, я хотя бы увидел, что код выполняется неправильно! Это все благодаря тому, что Владислав предложил сделать индикацию. Если бы ее не было, то я бы не увидел, что процесс включения проходит как-то иначе. А тут я зацепку получил и пошел ее "долбить".
Стремление к совершенству рождает шедевры! http://www.alaev.org
Алаев Ян
Основатель Форума
Аватара
Возраст: 34
Откуда: Саратов
Репутация: 63 (+63/−0)
Лояльность: 175 (+176/−1)
Сообщения: 2266
Темы: 1
С нами: 4 года 4 месяца

#637 poty » 13 марта 2017, 13:15

Мне так и неясно, как введение паузы могло выправить ситуацию? Я, кстати, не понял и про структуру программы, но это, возможно, из-за того, что Ян не хочет её раскрывать, поэтому этот вопрос не первоочередной.
Владислав
poty
Автор темы, Профи
Профи
Аватара
Возраст: 52
Откуда: Россия, Москва
Репутация: 76 (+76/−0)
Лояльность: 42 (+43/−1)
Сообщения: 3183
С нами: 4 года 4 месяца

#638 Алаев Ян » 13 марта 2017, 14:54

Владислав, я не могу с уверенностью сказать, что проблема была решена только с помощью паузы. Когда я начал кроить код, то я много чего там успел наворотить, я делал и задержки, включал/выключал различные разрешения на прерывания. Читал разные форумы и проверял те советы, которые там давались. Вчера было уже очень поздно, но я специально сделал разную реакцию на прерывания по входу и на прерывания по питанию и вижу, что они либо возникают (оба и по отдельности, либо нет). В интернете очень много статей, где описываются ложные срабатывания прерываний. Например, вот ссылка http://arduino.ru/forum/apparatnye-voprosy/takhom ... ak-i-ne-reshena#comment-159012
Прерывание по выводу int0 имеет больший приоритет, чем по выводу int1, возможно, с этим связано, что int0 никогда не вызывает случайного срабатывания int1, а вот int1 иногда прихватывает с собой и int0. С точки зрения схемотехники мне не нравится, конечно же, решение, когда кнопка в чистом виде заведена на внешнее прерывание. Нужно было поставить RC цепочку и логический элемент, чтобы убрать дребезг. Представляете, что происходит там? Мы щелкнули, сработало прерывание, начал выполняться код, но за счет дребезга контактов мы опять залетаем в прерывание и рвем начавшийся код и так, возможно, несколько раз. Введенная задержка, возможно, помогает убрать этот мусор в себе. Т.е. пока серия заходов в прерывания пытается портить код, то портит она тот участок, когда контроллер ничего не делает, а тупо считает время. Т.е. он после пробуждения начал отсчет времени и в этот отсчет вклинивается десяток ложных срабатываний. Потом задержка заканчивается и контроллер приступает к уже нормальному выполнению кода. Я так себе это представляю. Вчера не было времени, сегодня я проверю внимательно код и посмотрю какой величины задержка нужна для стабильной работы. По поводу публикации прошивки - я ее не скрываю, могу выслать Вам или кому-то при необходимости, но выкладывать на Форуме пока не хочу.

Добавлено спустя 5 минут 53 секунды:
У меня есть еще один козырь в рукаве, при необходимости. Можно сделать совсем иначе. Можно пробуждаться по любому прерыванию. И не сопоставлять действие с прерыванием. А просто просыпаться. Тогда нам будет не важно от кого мы проснулись. И даже если сработало два сразу, то мы все равно проснулись. А дальше мы используем код первой версии прошивки. Где идет опрос кнопки не по прерыванию, а по таймеру. Все сделали, что хотели - опять уходим в сон. В этом случае нам будет абсолютно все равно по какому из сигналов мы проснемся.
Стремление к совершенству рождает шедевры! http://www.alaev.org
Алаев Ян
Основатель Форума
Аватара
Возраст: 34
Откуда: Саратов
Репутация: 63 (+63/−0)
Лояльность: 175 (+176/−1)
Сообщения: 2266
Темы: 1
С нами: 4 года 4 месяца

#639 poty » 13 марта 2017, 15:20

Ссылку почитаю, просто сейчас нет времени...
Алаев Ян писал(а):С точки зрения схемотехники мне не нравится, конечно же, решение, когда кнопка в чистом виде заведена на внешнее прерывание. Нужно было поставить RC цепочку и логический элемент, чтобы убрать дребезг. Представляете, что происходит там? Мы щелкнули, сработало прерывание, начал выполняться код, но за счет дребезга контактов мы опять залетаем в прерывание и рвем начавшийся код и так, возможно, несколько раз. Введенная задержка, возможно, помогает убрать этот мусор в себе. Т.е. пока серия заходов в прерывания пытается портить код, то портит она тот участок, когда контроллер ничего не делает, а тупо считает время. Т.е. он после пробуждения начал отсчет времени и в этот отсчет вклинивается десяток ложных срабатываний. Потом задержка заканчивается и контроллер приступает к уже нормальному выполнению кода. Я так себе это представляю.
Не претендуя на истину в последней инстанции. При входе в прерывание вводится команда запрета всех прерываний на время выполнения кода самого прерывания. Перед выходом, соответственно, ставится команда разрешения прерываний. Насколько я помню, есть какой-то фьюз, который управляет тем, сохраняется ли в очереди несработавшее из-за такого запрета прерывание или нет. Поэтому, никакого разрыва выполнения кода быть не может. Теоретически может быть другой вариант, когда очередь прерываний переполняется (из-за дребезга) и последним в очереди остаётся прерывание возврата к старому входу. Но это не объясняет сработку двух прерываний подряд! А в таблице прерываний нет ошибки?
Алаев Ян писал(а):Можно пробуждаться по любому прерыванию. И не сопоставлять действие с прерыванием. А просто просыпаться. Тогда нам будет не важно от кого мы проснулись. И даже если сработало два сразу, то мы все равно проснулись. А дальше мы используем код первой версии прошивки. Где идет опрос кнопки не по прерыванию, а по таймеру. Все сделали, что хотели - опять уходим в сон. В этом случае нам будет абсолютно все равно по какому из сигналов мы проснемся.
Так я именно это и предлагал (правда, каюсь, уже после того, как ошибка проявилась). Я ещё на 8086 наелся этих прерываний, всегда оставлял опрос портов на "обычный код".
Владислав
poty
Автор темы, Профи
Профи
Аватара
Возраст: 52
Откуда: Россия, Москва
Репутация: 76 (+76/−0)
Лояльность: 42 (+43/−1)
Сообщения: 3183
С нами: 4 года 4 месяца

#640 Алаев Ян » 13 марта 2017, 15:32

poty писал(а):А в таблице прерываний нет ошибки?
Я все уже перепроверил. Я постараюсь сегодня Роману выслать новую прошивку на тестирование, будем исходить из практического использования, так как я могу 30 раз на макете проверить и не увидеть того, что Роман отловит во время эксплуатации.
Стремление к совершенству рождает шедевры! http://www.alaev.org
Алаев Ян
Основатель Форума
Аватара
Возраст: 34
Откуда: Саратов
Репутация: 63 (+63/−0)
Лояльность: 175 (+176/−1)
Сообщения: 2266
Темы: 1
С нами: 4 года 4 месяца

Пред.След.

Вернуться в Фонокорректоры



Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость

cron