воскресенье, 25 апреля 2010 г.

Работа PSK31

Сегодня посчастливилось провести мои первые QSO, используя цифровой вид модуляции PSK, а точнее BPSK31. Провел в общей сложности около 15-ти QSO, в том числе и со странами Европы. Трансивер соединяется с компьютером посредством несложного интерфейса, на компьютере устанавливается программа (в нашем случае это - MixW) для работы с PSK-модуляцией, т. е. модуляция-демодуляция возложена на компьютер. Типовое QSO короткое и выглядит примерно следующим образом:


Сначала дается общий вызов оператором UA9XXX:
 CQ CQ CQ DE UA9XXX
 CQ CQ CQ DE UA9XXX
 PSE K K K


Я отвечаю:
 UA9XXX DE RZ9XXX
 UR RST 599 599
 MY QTH NOVOSIBIRSK
 MY NAME KAMIL
 HOW COPY?
 DE RZ9XXX


Мне в ответ примерное то же самое:
 RZ9XXX DE UA9XXX
 UR RST 599 599
 MY QTH ...
 MY NAME ...
 HOW COPY?
 DE UA9XXX


Далее завершаю связь:
 UA9XXX DE RZ9XXX
 ALL FINE DR ...
 PSE QSO VIA BURO
 73! BYE BYE
 DE RZ9XXX


В ответ что-то типа такого:
 RZ9XXX DE UA9XXX
 TNX FOR QSO!
 73!
 

Все стандартные заготовки вбиваются в программку заранее, остается только нажимать кнопки и иногда печатать. Но все равно, часа за два утомился достаточно. Говорят для первого раза нормально. До связи!

пятница, 23 апреля 2010 г.

На досуге

Сделал облако тегов более приятным. Смотреть здесь http://tods-blog.com.ua/blogging/tag-cloud-blogger Скоро займусь Poor Ham's DDS Synthesizer-ом.



понедельник, 19 апреля 2010 г.

ЖК-индикатор. Часть 3.

Наваяв схему изображенную выше, приступил к программированию. Для "занесения символов в ЖК" используется используются сигналы RS - register select, R/W - read/write (чтение - высокий уровень, запись - низкий), E - защелкивает данные в регистр. Для передачи данных может использоваться либо 8-ми, либо 4-хразрядная шина. Мой выбор - второй вариант, ибо тратится меньше выводов МК, легче разводить/паять. При этом неиспользуемые выводы контроллера ЖК никуда цеплять не надо. Передача данных происходит в два этапа - сначала передается старшая четверка бит, затем младшая четверка байта. В зависимости от состояния линии RS, принятый байт защелкивается (линию E утягиваем в ноль на время порядка 250нс - 1мкс, затем возвращаем обратно в единицу) либо в регистр инструкций IR (RS = 0), либо в регистр данных DR (RS = 1). Если происходит запись в регистр данных, то все простро: в DDRAM контроллера ЖК по адрему равному, записанному значению хранится символ, который выводится на экран. Радует, что адреса символов совпадают с их ASCII-кодами. Ежели пишем в IR, то данные расцениваются как интсрукция (см. следующую таблицу).

Для того чтобы проинициализировать контроллер ЖКИ проделываем следующую последовательность действий: Ждем 15мсек, выставляем линии R/W и RS в ноль, выставляем на линии DB4-DB7 значение 0x03 и щелкаем сигналом E, ждем 4.1мсек, повторяем действия, ждем 100мксек и опять повторяем, ждем 40мксек и контроллер готов к дальнейшей работе. После операции инициализации контроллер находится в режиме работы по 8-разрядной шине данных, нам надо переключить в 4-разрядный режим для этого выставляем на линиях DB4-DB7 значение 0x2 (смотрим 6 строчку в таблице: DL = 0 - 4-разрядный режим) и щелкаем сигналом E, при этом не забываем предварительно выставить R/W = 0 и RS = 0. После защелкивания данных надо подождать 40мксек, чтобы они "переварились". Теперь контроллер в нужном режиме, но так как сигналы DB3-DB0 не задействованы, то параметры развертки будут выставлены некорректно. Поэтому опять, теперь уже в 4-разрядном режиме, передаем контроллеру 0x28 (N = 1 - развертка двух строк, F = 0 - символы 5x7), не зыбываем подождать. Далее подробно расписывать не буду, ибо в документации все есть, а есть также ссылка из предыдущего сообщения. Скажу лишь, что передается 0x08 - выключение/0x0C - включение и 0x06 - режим сдвига курсора. Все это есть, также в исходниках, которые выложены. Далее можно писать на экранчик, для этого используется операция записи в DR, после которой также необходимо подождать 40мксек перед последующей операцией. Можно писать начиная не с нулевого положения, а с произволного. Для перед записью в DR необходимо записать адрес положения в IR (передается инструкция со старшим битом равным единице, а остальные 7 бит - адрес, см. последнюю строчку в таблице), после записи в IR надо подождать уже 200мксек. Единственное, что надо помнить - адреса второй строки начинаются с 0x40. В принципе это все. Можно сказать, что ЖКИ побежден!

суббота, 17 апреля 2010 г.

Новости эмбеддерской жизни

Плохая новость: сгорел генератор на 56.664МГц. Это печалит. Видать сам Бог велел делать синтезатор частоты. Изучаю основы PLL и DDS. Хочется чтобы было дешево, просто и качественно, вопреки известному правилу. Как получится на самом деле посмотрим. Хорошая новость: заборол ЖКИ. Скоро напишу о том как его бороть, ибо когда разработчики изобретали контроллер ЖК, они явно что-то употребляли и без поллитра здесь не разберешся, заодно накидаю библиотечку для работы с контроллером. Благо, нашел вот такую мегаполезную штуку для отладки ЖКИ http://www.geocities.com/dinceraydin/djlcdsim/djlcdsim.html Там же можно скачать. С ее помощью обнаружил у себя баг, который обычными методами может детектироваться очень-очень долго. Вот. Рекомендую.

понедельник, 12 апреля 2010 г.

Маленькие радости

За вчера-сегодня произошло несколько вещей, которые не могут не радовать. Во-первых, всех с праздником, с днем космонавтики! Слава тем, кто почти что 50 лет назад вывел человечество в космос! Ура! Во-вторых, штурмуем 20ку - не так давно обнаружил на древней ATIшной видеокарте кварцевый генератор на 56,664МГц, а это значит, что при делении сигнала с генератора на четыре, получим прием на частоте 14,166МГц. В-третьих, немножко заборол один из предполагаемых источников шумов в приемнике, путем добавления емкости (2.2мкФ, керамика) на питание фазовращателя. На картинке приведены выходные сигнал цифрового фазовращателя до и после, как говорится, результат налицо:


Как это скажется на приеме - пока не ясно, ибо еще не пробовал по причине того, что села батарейка, от которой питался мой SDR. Но не беда! Подарили мне источник питания от принтера. Как оказалось, вполне рабочий, это четыре. Единственное, пришлось подобрать и припаять нагрузку, ибо источник выполнен по схеме обратноходового преобразователя и без нагрузки работать не может. Без нагрузки он бодро щелкает, а с нагрузкой 200 Ом +5В, +12В и +/-15В. Радует.

четверг, 8 апреля 2010 г.

понедельник, 5 апреля 2010 г.

ЖК-индикатор. Часть 2.


В продолжение ЖК-индикатор. Часть 1.

Наконец-то выдалось время на спаять и затестить инвертор для индикатора. Правда пришлось немного видоизменить схему - добавить на входе инвертора буфер на биполярном транзисторе (был взят первый попавшийся под руку - КТ973). Спаянный инвертор выдает на выходе -1.6В при напряжении питания 3.3В, как и должно быть. Правда не порадовала нагрузочная способность - уже при нагрузке 510 Ом, выходное напряжение проседает до 0.9В, но тут, наверное. можно поиграться с частотой и величиной емкостей. Либо, не мороча голову, поставить готовый инвертор, например MAX660. Но, за MAX660 ехать не хочется, проще собрать из подручных материалов. Далее подал питание на платку ЖКИ. Для этого имеется 14-контакный шлейф. Как утверждает документация 1-й контакт соответствует GND, 2-й - питание логики, 3-й - питание драйвера кристаллов. Путем осмотра платы с контроллером и поиска земляных полигонов было оперделено, где находится 1й контакт. А далее все просто. После включения питания контроллер инициализируется в режиме развертки верхней строки и по идее верхняя строка должна быть видна (зависит от уровня напряжения питания кристаллов - чем выше напряжение, тем больше контраст), что и наблюдалось. В моем случае на питание драйвера ЖК подается 3.3 -  (-1.6) = 4.9В. При таком напряжении верхняя строка еле заметна, как и должно быть, но хотелось бы иметь запас по напряжению на все случаи жизни. Тогда можно было бы поставить переменник на выходе инвертора и иметь регулируемое напряжение питания кристаллов. Но для начала пойдет и так. Осталось написать программку для МК, чтобы окончательно оживить ЖКИ.

Тестируем Google Docs

Исходник бутлоадера для TMS320