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

День добрый. Пытаюсь записать в массив последовательность точек и тире, при чтении массива выходит совсем не то что записалось

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

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

#1

Сообщение adolf81 » 14.04.2021{, 14:05}

День добрый. Пытаюсь записать в массив последовательность точек и тире, при чтении массива выходит совсем не то что записалось. То добавляет , то пропускает символы
Проект прикрепляю, 7 плата
Вложения
ключик.flp
(653.56 КБ) 24 скачивания

Bentry
Рядовой
Сообщения: 43
Зарегистрирован: 20.09.2017{, 10:22}
Репутация: 7

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

#2

Сообщение Bentry » 14.04.2021{, 15:13}

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

adolf81
Рядовой
Сообщения: 61
Зарегистрирован: 26.09.2016{, 22:15}
Репутация: 1
Откуда: Чудово

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

#3

Сообщение adolf81 » 14.04.2021{, 15:28}

Bentry писал(а):
14.04.2021{, 15:13}
В проект не вникал, но может как у меня было с номеронабирателем. Делал на массиве. Пропускал много импульсов.
Проблема решилась очень просто, убрал со входов защиту от дребезга
Точно не в дребезге(но на всяк проверил :D ), запись идет с переменных, сформированных точках и тире

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

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

#4

Сообщение edyapd » 14.04.2021{, 18:32}

adolf81, опишите алгоритм того, как это должно работать. Попытался вникнуть в проект, но понял только, что у вас по первой кнопке должна быть запись. А дальше как-то тяжело.

adolf81
Рядовой
Сообщения: 61
Зарегистрирован: 26.09.2016{, 22:15}
Репутация: 1
Откуда: Чудово

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

#5

Сообщение adolf81 » 15.04.2021{, 09:04}

Чуть переработал, но проблема осталась
Не работает нормально только 7 и 8 платы.
7 плата , запись сигналов. При появлении сигнала запись в первую ячейку(REC MEM1) и приходе сигнала о начале набора(точка или тире , "выход сигнала"), устанавливается триггер записи, который сбросится при выключении сигнала REC mem1 . Далее при приходе сигнала "пульс"(выход генератора с частотой /2) в 0 ячейку массива запишется сигнал аналогичный "выходу сигнала" и при пропадании сигнала "пульс" счетчик увеличит свое значение на 1, при этом подменяя значение регистра массива на 1, при следующем цикле все повторится.
Чтение в 8 плате. При нажатие кнопки S2 более 1 sec и отсутствие сигнала о записи, начнется трансляция массива. По сигналу "пульс" меняем значение регистра массива и транслируем на выход. сброс трансляции по кратковременному нажатию кнопки S2
Вложения
ключикV2.flp
(706.7 КБ) 18 скачиваний

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

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

#6

Сообщение rw6cm » 16.04.2021{, 13:23}

adolf81,
Не понял как подключен сам ключ, и где на нано взялся шим 700 )))
Что касаемо проблемы, используются разные генераторы, которые между собой не синхронные, и сильно зависят от цикла.
Чтобы записать таким методом точную длительность точки и тире, надо пульс разбить еще как минимум на 10 частей.
но при этом в 10 раз увеличится объем памяти для той же записи.
Или связать все от одного генератора на прерываниях, и быстрей всего использовать другой метод записи.
В общем попробовал собрать по вашей методике , убрать из каждого цикла тяжелые алгоритмы, уменьшить тактовку.
На малых скоростях еще куда не шло, а ближе к 80 знакам начинает съедать точки.
Уменьшать еще тактовку не вижу смысла, памяти не хватит даже на позывной :D
Одним словом "отстой" )) проще собрать на пике.
Ключ Морзе с 1 записью.flp
(1.25 МБ) 13 скачиваний
Win10-64, FLProg (portable)

adolf81
Рядовой
Сообщения: 61
Зарегистрирован: 26.09.2016{, 22:15}
Репутация: 1
Откуда: Чудово

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

#7

Сообщение adolf81 » 16.04.2021{, 14:33}

Пасибки! Проверил ваш проект, с точками проблем нет, но на тире появляются иногда провалы :( Наверно откажусь в этом проекте от дуньки, тем более нашел готовый на ПИКе :D :D

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

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

#8

Сообщение edyapd » 16.04.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.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

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

#9

Сообщение rw6cm » 16.04.2021{, 18:09}

edyapd,
У каждого радиста свой почерк работы.
Весь цимус записи записать этот почерк.
Ваш метод ведет к стерилизации. В таком случае проще взять библиотеку знакогенератора,
и ввести сразу готовый текст для передачи.
Win10-64, FLProg (portable)

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

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

#10

Сообщение edyapd » 16.04.2021{, 18:25}

Тут всё зависит от того, что человек хочет получить на выходе. Возможно ему лень каждый раз отправлять одну и ту же информацию. А она к примеру сегодня одна, а завтра другая. Поэтому и хочется настучать её один раз, а потом отправлять автоматом. Возможно задача нужна для тренировки приёма на слух, когда забивается задание и гоняется с разной скоростью. В условии то ничего про это не сказано.
И судя потому, что автор нашёл готовое решение, он не единственный над этим задумывался.

adolf81
Рядовой
Сообщения: 61
Зарегистрирован: 26.09.2016{, 22:15}
Репутация: 1
Откуда: Чудово

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

#11

Сообщение adolf81 » 19.04.2021{, 16:51}

edyapd писал(а):
16.04.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.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

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

#12

Сообщение edyapd » 19.04.2021{, 16:57}

adolf81 писал(а):
19.04.2021{, 16:51}
но массив в разы объемнее чем битовый
Тогда я точно ничего не понял. Могли бы вы просто расписать на словах, как вы пытаетесь записать. Просто разбираться в проектах бывает очень сложно.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

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

#13

Сообщение rw6cm » 19.04.2021{, 17:14}

edyapd,
Пример:
10сек отведено под запись. Разбиваем 10сек на 1000 частей = 10мс это должен быть один такт генератора.
Запускаем генератор и пишем в массив 1000 записей битового состояния выхода с автоматического ключа.
adolf81 писал(а):
16.04.2021{, 14:33}
тем более нашел готовый на ПИКе
Кстати у нас по этой схеме трудится ключ в соревнованиях, уже несколько лет.
Win10-64, FLProg (portable)

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

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

#14

Сообщение edyapd » 19.04.2021{, 17:57}

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

Ответить

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