Радиолюбительский Маяк на arduino nano

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

нууу, у мня идей больше неть.  бери, значить, другой код маяка. 

Не!!! "Русские не сдаются"!!!
Я тут явную связь выявил, стоит открыть-закрыть монитор порта и скетч начинает работать правильно...
 

уменьшил скорость порта до 9600, пытаю, пока работает как надо, теперь надо строку вводимую в мониторе порта сохранить в еепром и забирать оттуда, если было сохранение, попробую сам прикрутить

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Нуууу... моё скудоумие дальше не простираеца

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:
Нуууу... моё скудоумие дальше не простираеца

не прибедняйся, ты это написал )))
 

нет, всё таки пропускает, просто сейчас вылетают пробелы...
значит непонятно...
Тут без ЕвгенийП не обойтись, у него глаз намётан )))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

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

так он рабочий, если регулировку скорости в loop переносишь...мы же хотели по фэншую

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Я б забил. Не работает - фтопку. Наливать незашто. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Тебе нада нанять прафессионалоф, наерна. Как бы я не тщился, выше ровных извилин не прыгну. :-)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

Тебе нада нанять прафессионалоф, наерна. Как бы я не тщился, выше ровных извилин не прыгну. :-)

это не то изделие, где требуется наёмная рабочая сила )))
максимум - налить...

...не могу понять... и это мотивирует )))

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

нууу, у мня идей больше неть.  бери, значить, другой код маяка. 

вот эту строчку проверь внимательно, нет ли ашыбок

006 #pragma GCC otimize ("-Os") //где х - 0, 1, 2, 3, fast, g, s - уровень оптимизации

ты и default потерял в 219 строчке.  

конец перепишы вот так

01case msg_ReadSensor: {
02    uint8_t newdottime = 100 - 5*(analogRead(mySpeedPin)>>6); // тут все твои чтения и вычисления
03    if (newdottime != DOT_TIME) {   // меняем ТОЛЬКО если значения РЕАЛЬНО ИЗМЕНИЛИСЬ
04        DOT_TIME = newdottime;
05        DASH_TIME = 3 * DOT_TIME;
06        Serial.print("Скорость = ");
07        Serial.println(newdottime);
08    }
09    break;
10}
11default:
12 Serial.print("Unknown message code: 0x"); Serial.println(msg.Message, HEX);
13 break;
14}

 

строчку кстати исправил - #pragma GCC optimize ("-Os") //где х - 0, 1, 2, 3, fast, g, s - уровень оптимизации

Да, цикл loop выполняется за время от 18 миллисекунд при настройке сериала на скорость 9600 до 1 миллисекунды и менее при повышении скорости порта, попробую в таймере уменьшить время опроса датчика  до к примеру 13 миллисекнд, по результатам отпишусь...
Всё таки хотелось бы выяснить в чем проблема, что на четвётом таймере библиотека или скетч заглючили, по сути у тебя получилась некая версия RTOS на таймерах и, это интересно

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

в моих подделках, до 9 таймеров вместе не глючили, хоть и пересекались.  Или я просто не замечал.... 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

в моих подделках, до 9 таймеров вместе не глючили, хоть и пересекались.  Или я просто не замечал.... 

ну так то были поделки, а здесь только с виду простейшая задача

при опросе аналогового датчика каждые 13 миллисекунд еще хуже

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

короче, забей.   Я- всё, забил. Хватить. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

короче, забей.   Я- всё, забил. Хватить. 

не маяком единым...мне нравица сама идея библиотеки...

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

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

Как правильно говорит моя жена, дети у меня красивые, а то что я делаю руками - никуда не годицца. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

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

Как правильно говорит моя жена, дети у меня красивые, а то что я делаю руками - никуда не годицца. 

)))
 

кстати, посмотрел freeRTOS они приоретизацию задач делают, может и с твоими таймерами надо так?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Каоче, вот мои последние предположения.  Таймер генерирует прерывания железно, они всегда приходят и всегда выполняются.  Проблема может быть в том, что не успевает вовремя отрабатывать отклик на сапщения в очереди.  Значить, надо попробовать сбрасывать флаги и делать всю нужную фигню не в очереди сообщений, не там где обрабатывается msg_TimerEnd, а перенести это в функции прерываний от таймера, в void tmr...();  

Если и эта не поможет, тада я пас. 

01void tmrTXTimer(void) {     // здесь кончился таймер передачи бита/паузы
02 
03    TXBusy = false;         // можно передавать следующий
04 
05    if (TXState == enumTXState::Bit) { // если передавали бит, передадим 1 паузу
06        TXOnOff(false);                 // выключим ключ
07        TXCurrentMask >>= 1;
08        if (TXCurrentMask>0) sendPause(); else sendPause(3); // а если знак кончился, то 3 паузы
09    }
10    TimerList.Stop(hTXTimer); // остановим этот таймер
11}
12 
13void tmrSerialTimer(void) {  // строку приняли до конца
14    TXStopped = false;      // можно стартовать передаччик, есличо
15    TimerList.Stop(hSerialTimer); // таймер больше не нужен
16}

а ветку в switch в loop, где обрабатывается msg_TimerEnd удалить совсем

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

и у всех глобальных bool флагов поставить volatile.  Ну и не только у них, а у всего, что меняется в функциях tmr...(). TXState там,  TXCurrentMask и тыды.

Я свой стэнд уже разобрал, поэтому пробовать тебе самаму придёца. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

и у всех глобальных bool флагов поставить volatile.  Ну и не только у них, а у всего, что меняется в функциях tmr...(). TXState там,  TXCurrentMask и тыды.

Я свой стэнд уже разобрал, поэтому пробовать тебе самаму придёца. 

Хорошо! Попробую осмыслить, что ты сказал )))

Green
Offline
Зарегистрирован: 01.10.2015

А тут без 100 грамм никак... 
Помнится как то со знакомым ехали на машине, ну и разговаривали ес-но. Когда знакомый вышел, мне водитель спрашивает, слушай, о чём вы всё это время говорили? Я нифига не понял...) При том что он тоже вроде как р/любитель был.)

Это просто вспомнилось, не применительно к данному случаю.)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Green пишет:

А тут без 100 грамм никак... 
Помнится как то со знакомым ехали на машине, ну и разговаривали ес-но. Когда знакомый вышел, мне водитель спрашивает, слушай, о чём вы всё это время говорили? Я нифига не понял...) При том что он тоже вроде как р/любитель был.)

Это просто вспомнилось, не применительно к данному случаю.)

100 грамм, тут этим наврядли обойтись

lean_74
Offline
Зарегистрирован: 22.12.2015

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

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

lean_74 пишет:

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

На бочку я ссылку давал, она на Амперке до сих пор валяеца. 

да и туть https://github.com/DetSimen/Useful ее всегда можно скачать

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Да, удалять нельзя, тем более если опрос датчика скорости делать неправильно, а именно в цикле loop всё работает как часы )))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ua6em пишет:

 в цикле loop всё работает как часы )))

это ты просто чота не заметил

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

ua6em пишет:

 в цикле loop всё работает как часы )))

это ты просто чота не заметил

у меня абсолютный слух, тем более морзянку принимаю в фоновом режиме, обязательно бы услышал

Green
Offline
Зарегистрирован: 01.10.2015

Вспоминаю скоростной приём. Там заказываешь 5 скоростей, результат по лучшей принятой. Так вот, на первых скоростях думаешь о чём попало, принимая в фоновом режиме, и только на последующих уже начинаешь напрягаться.)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Потестировал этот скетч (вроде как абсолютно идеологически неправильный)
во всех диапазонах скоростей работает как швейцарские часы )))
 

 

strarbit
Offline
Зарегистрирован: 12.06.2016

Dear Gentlemen, I'm sure you'll like this site https://morsecode.scphillips.com/translator.html

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

strarbit пишет:

Dear Gentlemen, I'm sure you'll like this site https://morsecode.scphillips.com/translator.html

TKS & 88 )))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Значить, так.  Найди у себя файл Messages.h.  Унутре него найди функцию DeleteFirst. В этой функции удали 2 строчки в начале 

uint8_t  sreg  = SREG;

cli();

и одну строчку в конце. 

SREG = sreg;

и пропробуй так запустить.  Мне кажеца тут прерывания от таймера пропадають. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

Значить, так.  Найди у себя файл Messages.h.  Унутре него найди функцию DeleteFirst. В этой функции удали 2 строчки в начале 

uint8_t  sreg  = SREG;

cli();

и одну строчку в конце. 

SREG = sreg;

и пропробуй так запустить.  Мне кажеца тут прерывания от таймера пропадають. 

"яйца не подействовали"

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

тогда точно фпамойку. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

тогда точно фпамойку. 

что так сразу... три таймера отрабатывают штатно, спотыкается на 4-ом...
если бы кто-нить из Гуру посмотрел твой код, мне точно не по зубам )))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ua6em пишет:

если бы кто-нить из Гуру посмотрел твой код, мне точно не по зубам )))

мне тоже. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

мошт, я его скопипастил где...

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Green пишет:

Нет, для своего позывного нужно же иметь разрешение с соответствующей категорией и пр. А так получается что вместо тебя работает робот и возможна ситуация когда твоих экземпляров класса может быть несколько.) С одинаковыми позывными! Что как то странненько.)

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

Green
Offline
Зарегистрирован: 01.10.2015

Это ж как резиновая. Эх, ушла романтика.(

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Green пишет:

Это ж как резиновая. Эх, ушла романтика.(

точнее уходит...

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ua6em пишет:

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

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

ua6em пишет:

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

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

тут еще после сочинской олимпиады, за три месяца более 20тыщ связей, особо не хоцца, форум как альтернатива )))

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

дед я тут подумал если чтение потенциометра закладываю не по таймеру а в лупе и всё как часы работает, а через таймер твой глючит, может что-то в таймингах по чтению аналоговых портов дело?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Мне нада тексты найти, тогда я посмотрю.  Проблема была в чём?  Символы пропускаеть? 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

Мне нада тексты найти, тогда я посмотрю.  Проблема была в чём?  Символы пропускаеть? 

да, пропускает символы, но если опрос датчика скорости (потенциометр) переношу в loop,  всё пучком, а если под это дело заводить еще один таймер - идут пропуски, вот и подумалось, что сама процедура чтения аналогового пина причастна

nico365
Offline
Зарегистрирован: 20.02.2020

А схемку можно?

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

nico365 пишет:

А схемку можно?

а схему даже не рисовал, только в планах на SI5351, у неё три выхода по частотам. один (144) только усилить, другие (430, 1200) через умножители, как бы всё описано неоднократно, частоты могут быть разные, несвязанные, я с ними даже не определялся, концепт так сказать

RA8JA
Offline
Зарегистрирован: 01.10.2020

Добрый день. А есть вариант скетча для простого манипулятора с сухим контактом на выходе. Который манипулирует в  CW по постоянному току передатчик радиомаяка?  

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

RA8JA пишет:

Добрый день. А есть вариант скетча для простого манипулятора с сухим контактом на выходе. Который манипулирует в  CW по постоянному току передатчик радиомаяка?  

да без проблем, какой скетч правим?

RA8JA
Offline
Зарегистрирован: 01.10.2020

Да нет никакого. Только начал этой темой заниматься. Сделал манипулятор на 12F683, по готовой схеме и с готовым ПО. Но в нём на выходе тональный сигнал, а нужен сухой контакт (отдельная тема)... Выписал платку nano  ардуино, для экспериментов. Вот и спрашиваю, вдруг есть уже сущ. варианты ПО, с вариантом по сухому контакту... 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

да не вопрос, добавишь транзистор и герконовое реле на 5 вольт и будет тебе сухой контакт

RA8JA
Offline
Зарегистрирован: 01.10.2020

Тоже хорошая идея. Буду пробовать... Надеюсь, что "вибрировать" геркон не будет с частотой 600 Гц...