Телеграфный ключ с памятью. Проблема при записи/чтении массива

Вопросы от новичков
Ответить
adolf81
Рядовой
Сообщения: 61
Зарегистрирован: 26 сен 2016, 22:15
Откуда: Чудово

Телеграфный ключ с памятью. Проблема при записи/чтении массива

Сообщение adolf81 »

День добрый. Пытаюсь записать в массив последовательность точек и тире, при чтении массива выходит совсем не то что записалось. То добавляет , то пропускает символы
Проект прикрепляю, 7 плата
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Bentry
Рядовой
Сообщения: 43
Зарегистрирован: 20 сен 2017, 10:22

Телеграфный ключ с памятью. Проблема при записи/чтении массива

Сообщение Bentry »

В проект не вникал, но может как у меня было с номеронабирателем. Делал на массиве. Пропускал много импульсов.
Проблема решилась очень просто, убрал со входов защиту от дребезга
adolf81
Рядовой
Сообщения: 61
Зарегистрирован: 26 сен 2016, 22:15
Откуда: Чудово

Телеграфный ключ с памятью. Проблема при записи/чтении массива

Сообщение adolf81 »

Bentry писал(а): 14 апр 2021, 15:13 В проект не вникал, но может как у меня было с номеронабирателем. Делал на массиве. Пропускал много импульсов.
Проблема решилась очень просто, убрал со входов защиту от дребезга
Точно не в дребезге(но на всяк проверил :D ), запись идет с переменных, сформированных точках и тире
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Телеграфный ключ с памятью. Проблема при записи/чтении массива

Сообщение edyapd »

[ref]adolf81[/ref], опишите алгоритм того, как это должно работать. Попытался вникнуть в проект, но понял только, что у вас по первой кнопке должна быть запись. А дальше как-то тяжело.
adolf81
Рядовой
Сообщения: 61
Зарегистрирован: 26 сен 2016, 22:15
Откуда: Чудово

Телеграфный ключ с памятью. Проблема при записи/чтении массива

Сообщение adolf81 »

Чуть переработал, но проблема осталась
Не работает нормально только 7 и 8 платы.
7 плата , запись сигналов. При появлении сигнала запись в первую ячейку(REC MEM1) и приходе сигнала о начале набора(точка или тире , "выход сигнала"), устанавливается триггер записи, который сбросится при выключении сигнала REC mem1 . Далее при приходе сигнала "пульс"(выход генератора с частотой /2) в 0 ячейку массива запишется сигнал аналогичный "выходу сигнала" и при пропадании сигнала "пульс" счетчик увеличит свое значение на 1, при этом подменяя значение регистра массива на 1, при следующем цикле все повторится.
Чтение в 8 плате. При нажатие кнопки S2 более 1 sec и отсутствие сигнала о записи, начнется трансляция массива. По сигналу "пульс" меняем значение регистра массива и транслируем на выход. сброс трансляции по кратковременному нажатию кнопки S2
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Телеграфный ключ с памятью. Проблема при записи/чтении массива

Сообщение rw6cm »

[ref]adolf81[/ref],
Не понял как подключен сам ключ, и где на нано взялся шим 700 )))
Что касаемо проблемы, используются разные генераторы, которые между собой не синхронные, и сильно зависят от цикла.
Чтобы записать таким методом точную длительность точки и тире, надо пульс разбить еще как минимум на 10 частей.
но при этом в 10 раз увеличится объем памяти для той же записи.
Или связать все от одного генератора на прерываниях, и быстрей всего использовать другой метод записи.
В общем попробовал собрать по вашей методике , убрать из каждого цикла тяжелые алгоритмы, уменьшить тактовку.
На малых скоростях еще куда не шло, а ближе к 80 знакам начинает съедать точки.
Уменьшать еще тактовку не вижу смысла, памяти не хватит даже на позывной :D
Одним словом "отстой" )) проще собрать на пике.
Ключ Морзе с 1 записью.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
adolf81
Рядовой
Сообщения: 61
Зарегистрирован: 26 сен 2016, 22:15
Откуда: Чудово

Телеграфный ключ с памятью. Проблема при записи/чтении массива

Сообщение adolf81 »

Пасибки! Проверил ваш проект, с точками проблем нет, но на тире появляются иногда провалы :( Наверно откажусь в этом проекте от дуньки, тем более нашел готовый на ПИКе :D :D
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Телеграфный ключ с памятью. Проблема при записи/чтении массива

Сообщение edyapd »

Не совсем понял, как вы записываете точки и тире?
Почему не попробовать такой алгоритм:
1. Зададим значение Точки - 1, а Тире - 3.
2. Пауза между символами (буквы, цифры, знаки) - 131
3. Пауза между словами - 135
4. При появлении сигнала "Режим записи включён" ждём первой точки или тире и записываем это значение в массив.
5. Если в течении определённого времени нет точки или тире, то пишем в массив значение паузы между символами. (писать паузу между точкой и тире смысла нет и так понятно, что там должна быть пауза).

На запись у меня получилось нечто подобное. Единственное, пока не придумал, как ввести паузу между словами, но думаю, что это тоже можно сделать.
изображение_2021-04-16_204429.png
При чтении соответственно выбираем из массива и используем значение как коэффициент длительности.
При чтении сравниваем с 128 если меньше, то идём дальше, если больше, то переходим на другую ветвь.
Скажем читаем 1, значит это точка и её надо вывести с определённой длительностью.
Вторым шагом выводим с такой же длительностью паузу.
Читаем следующие значение с массива. К примеру 3. Значит длительность будет умноженное на 3.
И снова паузу.
К примеру прочитали значение 131 оно больше 128. Значит это пауза между символами. Отнимаем 128 получаем 3 - это у нас будет длительность паузы. Тоже самое с 135.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Телеграфный ключ с памятью. Проблема при записи/чтении массива

Сообщение rw6cm »

[ref]edyapd[/ref],
У каждого радиста свой почерк работы.
Весь цимус записи записать этот почерк.
Ваш метод ведет к стерилизации. В таком случае проще взять библиотеку знакогенератора,
и ввести сразу готовый текст для передачи.
Win10-64, FLProg (portable)
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Телеграфный ключ с памятью. Проблема при записи/чтении массива

Сообщение edyapd »

Тут всё зависит от того, что человек хочет получить на выходе. Возможно ему лень каждый раз отправлять одну и ту же информацию. А она к примеру сегодня одна, а завтра другая. Поэтому и хочется настучать её один раз, а потом отправлять автоматом. Возможно задача нужна для тренировки приёма на слух, когда забивается задание и гоняется с разной скоростью. В условии то ничего про это не сказано.
И судя потому, что автор нашёл готовое решение, он не единственный над этим задумывался.
adolf81
Рядовой
Сообщения: 61
Зарегистрирован: 26 сен 2016, 22:15
Откуда: Чудово

Телеграфный ключ с памятью. Проблема при записи/чтении массива

Сообщение adolf81 »

edyapd писал(а): 16 апр 2021, 16:51 Не совсем понял, как вы записываете точки и тире?
Почему не попробовать такой алгоритм:
1. Зададим значение Точки - 1, а Тире - 3.
2. Пауза между символами (буквы, цифры, знаки) - 131
3. Пауза между словами - 135
4. При появлении сигнала "Режим записи включён" ждём первой точки или тире и записываем это значение в массив.
5. Если в течении определённого времени нет точки или тире, то пишем в массив значение паузы между символами. (писать паузу между точкой и тире смысла нет и так понятно, что там должна быть пауза).

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

изображение_2021-04-16_204429.png

При чтении соответственно выбираем из массива и используем значение как коэффициент длительности.
При чтении сравниваем с 128 если меньше, то идём дальше, если больше, то переходим на другую ветвь.
Скажем читаем 1, значит это точка и её надо вывести с определённой длительностью.
Вторым шагом выводим с такой же длительностью паузу.
Читаем следующие значение с массива. К примеру 3. Значит длительность будет умноженное на 3.
И снова паузу.
К примеру прочитали значение 131 оно больше 128. Значит это пауза между символами. Отнимаем 128 получаем 3 - это у нас будет длительность паузы. Тоже самое с 135.
такой метод пробывал в самом начале, но массив в разы объемнее чем битовый. Памяти занимает намного больше
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Телеграфный ключ с памятью. Проблема при записи/чтении массива

Сообщение edyapd »

adolf81 писал(а): 19 апр 2021, 16:51 но массив в разы объемнее чем битовый
Тогда я точно ничего не понял. Могли бы вы просто расписать на словах, как вы пытаетесь записать. Просто разбираться в проектах бывает очень сложно.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Телеграфный ключ с памятью. Проблема при записи/чтении массива

Сообщение rw6cm »

[ref]edyapd[/ref],
Пример:
10сек отведено под запись. Разбиваем 10сек на 1000 частей = 10мс это должен быть один такт генератора.
Запускаем генератор и пишем в массив 1000 записей битового состояния выхода с автоматического ключа.
adolf81 писал(а): 16 апр 2021, 14:33 тем более нашел готовый на ПИКе
Кстати у нас по этой схеме трудится ключ в соревнованиях, уже несколько лет.
Win10-64, FLProg (portable)
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Телеграфный ключ с памятью. Проблема при записи/чтении массива

Сообщение edyapd »

[ref=#ff8000]rw6cm[/ref], эта часть понятна, но не могу представить битовый массив. Просто я привык, что информация хранится в байтах (если это 8 разрядное устройство) и в словах (если 16-ти).
И может я ещё не понимаю, как работает ключ? Что у него на выходе? Пытался слушать на одном из сайтов, думал, что точка и тире должны отличаться по длительности и не услышал этого. Уменьшить скорость там нельзя было.
Ответить

Вернуться в «Начинающим»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя