Последние сообщения

Страницы: 1 2 [3] 4 5 ... 10
21
Технический раздел / Re: DDS синтезатор передатчика
« Последний ответ от rn3aus 14 Апрель 2019, 16:43:29 »
2) Включение/Отключение передатчика. Если имеется в виду сигнал 0/1 на какой-то ноге МК, то это легко осуществить.
Это сигнал 0-1 на ноге PD6.
(Я исхожу из того, чтобы МК с новой прошивкой просто вставить в панельку имеющегося готового синтезатора)

3) Сделать можно, но надо ли? За одну секунду любая когерентность нарушится, даже если синтезатор выдаёт абсолютное значение частоты, т
Нужно. Все эти погрешности на приеме у приличных людей близки к нулю. Важно для приема OPERA/opds. Там желательна когерентность всех посылок, передаваемых на одной частоте. Некогерентный сигнал тоже принимается, но с проигрышем в помехоустойчивости.

4) Инверсия фазы. Имеется в виду установка фазы сигнала относительно предыдущего значения?
Да, ОФТ. Точность достаточна, конечно.

Будет время, опишите поподробнее протокол управления Вашим синтезатором, посмотрю, что смогу сделать.
22
Технический раздел / Re: DDS синтезатор передатчика
« Последний ответ от GM 14 Апрель 2019, 16:29:24 »
Прерывание RX_COMPLETE_INT возникает, как я понимаю, по приходу первого байта
Ну, я же вам нарисовал один из возможных сценариев. Оно и потом возникает при приеме каждого следующего байта (так называемы pending), и откладывается на некоторое время, когда прерывания будут разрешены, ну а когда подошла инструкция RETI, оно, это прерывание, тут как тут.

Нельзя ли Вашу прошивку доработать так, чтобы она умела необходимый минимум:
- установка частоты (это есть)
- вкл-откл РТТ
- вкл-откл тона. (Для чего нужно: ведь можно прекращать формирование сигнала просто записав нулевую частоту? Нужно для обеспечения когерентности сигнала. То есть когда выход выключен, аккумулятор фазы продолжает считать и в момент включения выхода сигнал продолжится с нужной фазой, обеспечивая  когерентное накопление на приеме.)
- инверсия фазы.

Если это получится, можно было бы подправить и мою программу управления DDS_ctrl и иметь все богатство разнообразных режимов на Вашем качественном DDS.
1) Да, установка частоты реализована. Код частоты любой от 0х00000000 до 0x7FFFFFFF. Возможно стоит ограничить диапазон кодов в диапазоне частот 135-138 кГц или что-то около того. Как бы допзащита от ошибочно переданных байт.

2) Включение/Отключение передатчика. Если имеется в виду сигнал 0/1 на какой-то ноге МК, то это легко осуществить. В принципе можно выдавать до 8 сигналов, если ног проца хватит :-).

3) Сделать можно, но надо ли? За одну секунду любая когерентность нарушится, даже если синтезатор выдаёт абсолютное значение частоты, то присутствуют погрешности первого гетеродина приёмника, а то и второго, генератора звуковой карты, так что когерентность становится проблематичной. Вообще, я думал, что в цифре у вас имеется квадратурный приёмник и подстройка частоты осуществляется каждый раз при приеме новой посылки. Хотя нет, у вас просто БПФ на весь ДВ диапазон.

4) Инверсия фазы. Имеется в виду установка фазы сигнала относительно предыдущего значения? Мы с вами как-то касались этого вопроса, так что такая установка фазы реализована, просто не хотел пугать народ всякими наворотами. Фаза устанавливается с дискретом 360/65536=0.005493 град, естественно, без прерывания генерации синуса. Надеюсь, этого достаточно?

Да, уже говорил, повторюсь. Наличие фильтра НЧ или ПП на выходе синтезатора крайне желательно. Я сейчас подключил ДДС на основе  AD9851 к микроконтроллеру, сижу, играюсь. Плату ДДС купил по интернету, ну и в качестве МК взял плату ардуино-уно, а энкодер - от какой-то бытовой техники. Не айс, зато ничего не надо делать, в смысле паять, пиши себе программу. А, нет, паять пришлось 12 проводков - от ардуины к синтезатору и 4 провода к энкодеру. Ну так вот, фильтр на плате синтезатора не гуд, частота до 55 МГц ещё ничего, а потом начинается джиттер, уровень сигнала резко падает. Хотя должен признать, опорник 30 МГц хорош, выбег частоты 5-6 Гц, а потом стоит, как у волка на морозе..хвост.
23
Прием на длинных волнах / Re: Сегодня в эфире
« Последний ответ от R7NT 14 Апрель 2019, 16:13:05 »
Apr 13-14  Best QRB/reports WSPR15 / WSPR2 / OP32 / OPds :

20:48    136 R7NT de PA0RDT Op32 2574 km -35 dB F:5% in Middelburg, Netherlands 1541,9 Hz with 200w + E.sLoop (6)
2019-04-14 00:48     R7NT     0.137540     -25     0     KN97lf     200     PI4THT     JO32kf     2351     296 (1)
2019-04-13 20:00     R7NT     0.137602     -28     0     KN97lf     200     DK7FC/15     JN49ik     2234     288 (6)
00:48    136 R7NT de SM2DJK Op32 2178 km -32 dB F:4% in Umea 1541,1 Hz with 200w + E.sLoop (5)
2019-04-14 02:48:05 R7NT    2060km 137541.056Hz  39mHz -35.9dBOp  43% 20.2dB DF6NM (10)
2019-04-14 00:00     R7NT     0.137602     -26     0     KN97lf     200     DL0AO/15     JN59vk     2012     287 (3)
2019-04-13 17:48     R7NT     0.137540     -25     0     KN97lf     0.001     DL0AO/2     JN59vk     2012     287 (14)
2019-04-14 02:48:10 R7NT    2012km 137541.053Hz 117mHz -36.0dBOp  86% 20.1dB DL0A0 (8 )
02:48    136 R7NT de SV8CS-1 Op32 1818 km -29 dB F:23% in Zante  Isl. 2nd QTH 1540,8 Hz with 200w + E.sLoop (8 )
2019-04-13 23:00     R7NT     0.137602     -32     0     KN97lf     200     SV8RV     KM07ks     1811     241 (4)
2019-04-13 23:00     R7NT     0.137602     -33     0     KN97lf     200     SV8RV-1     KM07ks     1811     241 (5)
2019-04-14 01:48:04 R7NT    1811km 137540.891Hz  72mHz -36.2dBOp  65% 18.9dB SV8RV (5)
02:48    136 R7NT de SV8RV Op32 1809 km -35 dB F:3% in Zakynthos(Zante) isl. GREECE 1541,0 Hz with 200w + E.sLoop (7)
2019-04-14 00:48     R7NT     0.137540     -19     0     KN97lf     200     OE3EMC     JN78jo     1800     284 (12)
2019-04-13 20:00     R7NT     0.137602     -27     0     KN97lf     200     SP5XSB     KO02ld     1401     300 (7)
20:48    136 R7NT de SP5XSB Op32 1400 km -29 dB F:3% in Raszyn nr Warsaw (8 )
2019-04-13 23:48:05 R7NT    1152km 137541.079Hz   3mHz -44.2dBOp 100% 15.0dB EW6X (3)
23:48    136 R7NT de EW6X Op32 -39 dB F:39% in KO45kl (1151 km) Polotsk + miniwhip 137541.1 Hz (1)
2019-04-13 17:48:06 R7NT    1045km 137541.070Hz  45mHz -31.2dBOp 100% 21.9dB YO/4X1RF (11)
2019-04-14 03:48:06 R7NT     943km 137540.962Hz 126mHz -34.5dBOp 100% 19.5dB RN3AUS (3)
15:47    136 R7NT de RN3AUS Op32 -35 dB F:47% in KO85FN (943 km) 137539.7 Hz (3)
2019-04-13 22:00     R7NT     0.137602     -32     0     KN97lf     200     R3D-262     KO94ks     839     360 (2)
01:48    136 R7NT de RX3DHR Op32 838 km -34 dB F:2% in <>   . 1540,8 Hz with 200w + E.sLoop (6)

WSPR15 : TX-1 RX-5
WSPR2 : TX-1 RX-3
OP32 : TX-1  RX-8 OPds RX-6
(n) - общее кол-во спотов от корреспондента - показан самый лучший - при одинаковых уровнях, выбран самый первый по времени
24
Технический раздел / Re: DDS синтезатор передатчика
« Последний ответ от rn3aus 14 Апрель 2019, 14:28:36 »
Несколько комментариев. Позволю себе немного позащищать изделие :-)
(Нас читают те любители, которые ищут вариант сделать себе синтезатор и выйти в эфир. Не хотелось бы в них посеять сомнение в том, что наш синтезатор нормально работает. Он нормально работает, и им много лет пользуюсь и я, и другие любители. Его можно улучшить,  что будет сделано в следующей версии.)

[Все не так страшно как кажется, я думаю Вы согласитесь со мной. Если ошибаюсь - поправьте.
1) Вызов TIM0_COMPB, о котором идет речь, нужен для перевода синтезатора в режим AutoBeacon, чтобы он начал это делать немедленно по получению команды G от компьютера. Больше компьютер до завершения работы маяка никаких команд слать не будет, поэтому в данном случае вполне допустимо разрешить прерывание чуть-чуть раньше, так как никаким вложенным прерываниям возникнуть неоткуда - СОМ-порт пуст, таймер сброшен, кнопку жать незачем.
2) Прерывание RX_COMPLETE_INT возникает, как я понимаю, по приходу первого байта. МК смотрит, какая это команда и если она из нескольких байт, то дожидается прихода всех остальных. В это время прерывания запрещены. Так что синхронизация не теряется. Если же приходит неожиданный байт, он, как нераспознанный, просто вызовет ответ контроллера и будет проигнорирован.
Да и откуда взяться лишним байтам? Если только какие-то мощные наводки на кабель. Но в этой ситуации никакой синтезатор, ни мой, ни Ваш нормально работать не будет - у Вас частота начнет сама собой выбираться неизвестно какая.
3) Паузы сигнала во время обработки команд есть. Этот недостаток давно известен и в основном успешно преодолен введением быстрых однобайтных команд без квитанции. При этом "гибнет" 6 отсчетов сигнала на одну команду. Этот недостаток надеюсь изжить в следующей версии, кое-какие мысли есть.
Впрочем, это тоже лирика.]

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

Нельзя ли Вашу прошивку доработать так, чтобы она умела необходимый минимум:
- установка частоты (это есть)
- вкл-откл РТТ
- вкл-откл тона. (Для чего нужно: ведь можно прекращать формирование сигнала просто записав нулевую частоту? Нужно для обеспечения когерентности сигнала. То есть когда выход выключен, аккумулятор фазы продолжает считать и в момент включения выхода сигнал продолжится с нужной фазой, обеспечивая  когерентное накопление на приеме.)
- инверсия фазы.

Если это получится, можно было бы подправить и мою программу управления DDS_ctrl и иметь все богатство разнообразных режимов на Вашем качественном DDS.

25
Технический раздел / Re: DDS синтезатор передатчика
« Последний ответ от GM 14 Апрель 2019, 00:59:29 »
Александр, дорогой уважаемый! Ну, такой я, критикан доморощенный. Мне дай волю, я всех закритикую, начиная с себя :-).

Замечаний много, но я себя сдерживаю, а то вы будете меня бояться пуще огня :-). Поэтому я понемножку, чтобы сильно вас не расстраивать.

Инструкция RETI среди прочего, как то, восстановление адреса основной программы из стека и инкремент стека, ещё устанавливает бит I=1, т.е., в некотором роде эквивалентна инструкции SEI (тоже устанавливает бит I=1 SREG). Ну вот, и в подпрограмме RX_COMPLETE_INT у вас есть вызов rcall  TIM0_COMPB, который заканчивается RETI (т.е., в данном случае SEI), разрешая таким образом все глобальные прерывания. Я всю вашу программу не анализировал, но этого примера достаточно, чтобы так не делать.

Ещё такой нюанс. Возникло прерывание RX_COMPLETE_INT и вы получаете первый байт по прерыванию, а остальные - по готовности. Теперь представьте себе, что внутри ПП прерывания разрешены прерывания, и опять возникнет прерывание RX_COMPLETE_INT. Какие ваши действия и как вы потом засинхронизируетесь с последующими посылками?

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

[А вообще, призываю вас испытать мою программу для синтезатора. Там не нужен ВЕСЬ ваш список команд (кроме маяка и еепрома), достаточно передачи одного пакета из 4-х байт. При приеме пакета генерация синуса не прерывается, пакет исполняется через 2 мкс после получения последнего байта, не надо высчитывать такты проца. Частота выборок 2 Мвыб/с, т.о., цифровой шум снижен примерно на 3 дБ, "зеркалка" отъехала на 2000-137=1863 кГц. По приему пакета всегда высылается квитанция. Ладно, это всё лирика.]
26
Технический раздел / Re: DDS синтезатор передатчика
« Последний ответ от rn3aus 14 Апрель 2019, 00:16:18 »
Если у Вас есть и другие замечания к тексту программы и хотели бы еще что-то посоветовать - пожалуйста, сделайте это, лучше сразу по всем пунктам.
27
Технический раздел / Re: DDS синтезатор передатчика
« Последний ответ от GM 13 Апрель 2019, 23:59:12 »
Ну, вы же поставили, неявно впрочем...
28
Технический раздел / Re: DDS синтезатор передатчика
« Последний ответ от rn3aus 13 Апрель 2019, 23:26:12 »
А что случится, если в какой-то вашей подпрограмме, скажем в RX_COMPLETE_INT, где-нибудь поставить команду (инструкцию) SEI?
А зачем бы ее там ставить? Разрешать прерывания в обработчике прерывания?
29
Технический раздел / Re: DDS синтезатор передатчика
« Последний ответ от GM 13 Апрель 2019, 21:41:14 »
А что случится, если в какой-то вашей подпрограмме, скажем в RX_COMPLETE_INT, где-нибудь поставить команду (инструкцию) SEI?

Вход в прерывание возможен только в течение одной команды главного цикла
Не одной команды, а двух: rjmp И cli. [поправил: cli, конечно, а не sei]
30
Технический раздел / Re: DDS синтезатор передатчика
« Последний ответ от rn3aus 13 Апрель 2019, 21:02:59 »
Спасибо, GM! Ценное замечание, теперь буду знать.

Вероятно, отсутствие сохранения SREG не влияло на нормальную работу синтезатора по той причине, что основная программа, ее главный цикл, очень простой и ничего кроме выдачи очередного отсчета в порт не делает. Вход в прерывание возможен только в течение одной команды главного цикла - rjmp LOOP1 (возврат в начало цикла), когда отсчет сформирован и уже выдан. В худшем случае, видимо, может пострадать только один отсчет.

Тем не менее, когда соберусь выпустить новую версию прошивки, обработчики прерываний будут скорректированы.
Страницы: 1 2 [3] 4 5 ... 10