форум Радиолюбительского ДВ портала > Технический раздел
DDS синтезатор передатчика
UF3K_Vlad:
2 RN3AUS
Саш, сделал твой синтезатор - приятная штучка. Спасибо большое.
Есть один момент при формировании WSPR-15 (но думаю и в остальных модах будет так же) при изменении тона ненадолго пропадает сигнал. Усилителю мощности это просто "мозг выносит". ;)
Рутины записи частоты и фазы сейчас выглядят так:
;
; read in 4 characters from the serial link
;
read_4:
rcall get_char ; read and ignore bits 32..24
rcall get_char ; read bits 23..16
mov r26,r16
rcall get_char ; read bits 15..8
mov r25,r16
rcall get_char ; read bits 7..0
mov r24,r16
clr r17
out PORTB,r17
ret
; read 4 character from the serial link and add to phase accumulator
; ---- Первый байт игнорируется, второй - младший байт, третий - средний, четвертый - старший байт.
read_ph_4:
rcall get_char ; read and ignore bits 32..24
rcall get_char ; read bits 7 ..0
mov r20,r16
rcall get_char ; read bits 15..8
mov r21,r16
rcall get_char ; read bits 23..16
mov r22,r16
ret
Не слишком красиво. По идее нужно буферизировать. Я к сожалению не знаю ассемблера атмеловского и самого процессора, но если можно найти еще 3 регистра для буфера, то должно быть примерно так:
;
; r40,r41,r42 буферные регистры
;
;
; read in 4 characters from the serial link
;
read_4:
rcall get_char ; read and ignore bits 32..24
rcall get_char ; read bits 23..16
mov r42,r16 ;пишем в буфер
rcall get_char ; read bits 15..8
mov r41,r16 ;пишем в буфер
rcall get_char ; read bits 7..0
mov r40,r16 ;пишем в буфер
cli ;запрещаем прерывания
mov r24,r40 ;быстренько грузим куда надо, начиная с младших разрядов
mov r25,r41
mov r26,r42
sei ;разрешаем прерывания
clr r17
out PORTB,r17
ret
; и тоже самое для фазы
; read 4 character from the serial link and add to phase accumulator
; ---- Первый байт игнорируется, второй - младший байт, третий - средний, четвертый - старший байт.
read_ph_4:
rcall get_char ; read and ignore bits 32..24
rcall get_char ; read bits 7 ..0
mov r40,r16
rcall get_char ; read bits 15..8
mov r41,r16
rcall get_char ; read bits 23..16
mov r42,r16
cli ;запрещаем прерывания
mov r20,r40 ;быстренько грузим куда надо, начиная с младших разрядов
mov r21,r41
mov r22,r42
sei ;разрешаем прерывания
ret
Возможно и не поможет... Там надо еще смотреть как обрабатывается прерывание по UART, но на это мне уже интеллекта не хватит. ;)
rn3aus:
На подходе новая усовершенствованная прошивка и программа управления. Пока у меня есть возможность плотно ей заниматься, предлагаю высказать здесь пожелания и замечания.
Что будет в новой версии:
- возможность составить и записать в eeprom контроллера циклограмму маяка, включающую в себя wspr-15 (или 2), ОР (-1 ....-65), qrss/dfcw сообщение, а также bpsk-1...31. В одной циклограмме одновременно умещается wspr и две Ор и паузы между ними. Возможны и иные комбинации. При этом паузы автоматически подбираются таким образом, чтобы полный цикл работы маяка был кратен периоду передачи wspr. Так как в изделии нет часов точного времени, то достаточно будет лишь включить маяк в нужный момент времени (например в начале часа) и дальше цикл будет ходить сам. Компьютер, естественно, в этом режиме не нужен.
- в обычном режиме, с управляющим компьютером, изменено формирование сигнала вспр, чтобы уменьшить или совсем устранить паузы между посылками. Вроде бы получилось.
- введена защита от зависания компьютера. Если от компьютера нет никаких команд более чем 20 минут, синтезатор выключает РТТ. Передатчик не будет лучить в эфир. Тон при этом, если он был включен, не снимается - это если синтезатор используется для каких-то иных целей, как опорник например.
- на лицевой панели синтезатора вводится одна кнопка, нажатием на которую управляют вручную включением PTT и тона, а также запускают режим маяка; она же служит для разрешения записи в eeprom.
Это то что уже сделано. Какие еще будут пожелания? (jt9 постараюсь сделать, но пока не все детали его формирования успел изучить. Нет нормального описания процесса кодирования, в отличие от вспр.)
UF3K_Vlad:
Пожелания:
-при включении питания сигнал на выходе синтезатора должен отсутствовать (пару раз уже по невнимательности руку об радиатор драйвера обжег) до прихода команды из компьютера;
-очень сильные спуры (-30 -40 дб) по всему диапазону. Не знаю, можно ли побороть в такой конструкции, т.к. слишком маленький аккумулятор фазы и мало разрядов ЦАП. Т.е. как гетеродин приемника он не годится, да и на передачу при большой мощности немного страшновато.
-может быть подумать прикрутить AD9832 (AD9835)? Они дешевые. Но это уже другой синтез будет.
-может быть в скрипт расписания ввести не задержки между режимами, а время старта команды?
UPD: Хорошо бы в управляющей программе сделать ползунок (скрываемый по чек-боксу) для быстрой перестройки 0-300 кГц. Это может пригодиться для настройки антенн.
rn3aus:
Готова новая версия прошивки DDS и v7.0 управляющей программы (она совместима и со старой прошивкой DDS, но новые функции будут недоступны).
Для новой прошивки нужно минимально доработать схему, как показано на рисунке и описано в пояснении.
Удалось учесть многие из высказанных пожеланий, в том числе запуск команд по времени, частотный скроллер, режим ГКЧ, улучшенное формирование WSPR и многое другое...
rn3aus:
Упр программа
Навигация
Перейти к полной версии