среда, 22 декабря 2010 г.

вторник, 21 декабря 2010 г.

Нерабочее настроение

С начала этой недели у меня строго нерабочее настроение. То ли переработал, то ли что, но вот делами заниматься никак не хочется. На работе сплошная бумажная волокита, шабашка пока заторможена, скорее всего до новогодних праздников. Хочется чего-то свежего и нового, окунуться с головой в интересные проблемы, а не в эту бумажную дрянь. Вот захотелось сделать софтверную часть SDR-приемника, копаю на чем писать графическую морду, обработку. Вроде как QT ныне в моде. Вы скажете зачем это, я отвечу, что до сих пор не видел ни одного нормального кроссплатформенного приложения для этих целей, даже просто кроссплатформенного. + это безумно интересно - фурье, окна, свертки, вейвлеты и гильберты. Вот и маюсь чем угодно, только не работаю. ?%$#&@, хватит балду пинать, давай работай @#$%$!!! Вроде как платки, заказанные в expert-pcb, готовы и сегодня-завтра поедут ко мне, это радует. Скоро будут фотки платочек.

Хоть музычку включу.

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

Заказ печатных плат

Многие делают печатные платы дома - быстро и дешево, ЛУТом или фоторезистом. Я пробовал, даже получалось неплохо, но быстро надоело по многим причинам. Нашел вот такой интересный сайт. Автор сайта, Алексей Кузнецов, довольно за небольшие деньги изготовит и отправит печатную плату в любой уголок нашей страны, где есть почтовое отделение. Приблизительный расчет стоимости можно сделать там же, на сайте. С Алексеем можно общаться как по e-mail, так и по IM-клиентам (ICQ, Mail-Agent), а также по Skype. Способы оплаты тоже разлияные - через Сбербанк, либо WebMoney. Последнее очень удобно. Доставка осуществляется Почтой России, и как вы могли догадаться, тоже есть выбор метода доставки. Впрочем, обо всем можно прочитать на сайте и спросить у самого Алексея. Вчера запросил у него, как и что делать, какие файлы подготовить, сегодня отправил, жду ответа. Надеюсь все пройдет удачно, тогда я стану постоянным клиентом: для домашних поделок, когда время не жмет - самое то.

воскресенье, 12 декабря 2010 г.

Eagle - это круто!

Все больше и больше радует пакет Eagle. После трассировки платы одной левой сделал файлы сверловок и герберы. По сравнению с OrCAD - Eagle во многом удобнее, глюков меньше, а при этом стоимость - ниже. Качественный и недорогой немецкий продукт, недаром многие конторы покупают его. Почему, спросите, не KiCAD? Отвечаю. Хоть в нем нет ограничений на количество слоев, размеры платы и он бесплатен, но все же пока сыроват. Но потенциал хороший. А пока для дома хватает и Eagle.
Установил gerbv (sudo aptitude install gerbv) и получил картинку такую:

суббота, 11 декабря 2010 г.

Осваиваю Eagle



Решил для домашних поделок использовать САПР Eagle (www.cadsoft.de). Освоить его было легко, ибо за плечами 4 года рисования в OrCAD, а тут еще и DI HALT со своим сайтом (http://easyelectronics.ru, уроки Eagle 1, 2, 3) помог очень. В итоге набросал схемку USB-программатора для AVR, который взял также у DI HALT'а и развел печатнуб плату. Картинки прилагаю.

среда, 1 декабря 2010 г.

The Scale of the Universe

Офигенная флешка! Не мог пройти мимо. Линк.

вторник, 30 ноября 2010 г.

Демобоард за 119 деревянных

Вышел очередной номер журнала Vogue. Оказалось, если его раздраконить, то внутри обнаружится демобоард с TFT-экраном. И все это за 119р. Понятное дело, чОткие парни сразу смекнули что к чему и смели с прилавков все 7000 экземпляров с демобоардом. Так что, реклама, которая должна была литься с экрана демобоарда, встроенного в журнал, целевой аудитории не достигла. Жаль данные номера продавали только в Москве.

Хотел было журнал "Vogue" порадовать гламурных блондинок видеорекламой на страницах... Но тут налетели безумные ымбедеры и смели весь тираж. C утра ради интереса спросил в киоске в метро Купчино. Продавщица сразу сказала: «Молодой человек, там нет этой штуки»

В продолжение темы

ЭТУ нацию победить нельзя...


http://habrahabr.ru/blogs/hardware/108921/


http://electronix.ru/forum/index.php?showtopic=83583&st=0&start=0

Опять напек оладушек


Рецепт.

пятница, 26 ноября 2010 г.

Очередные новости

Неделька, а точнее ее середина выдались ничего себе так. Оказалось шеф, будучи в командировке за много тысяч км от нас, должен одному дяде корзину электроники. Все бы ничего, но выяснилось, что корзину отправляют через неделю, а она не проверена и не настроена. А неотправка могла грозить серъезными проблемами (корзина есть часть многомиллионного контракта). Так что начальство в срочном порядке поручило мне проделать всю работу по наладке. Сначала проверил питания, затем правильность управляющих сигналов. Далее приступил к проверке правильности функционирования: в корзину воткнул косу, на косу поочередно вешал испытуемые блоки. Все прошло гладко, и пришло время проверить все в сборе, казалось все должно быть хорошо, но тут начали твориться всякие чудеса: при одних условиях электроника, установленная внутрь корзины работает, при других - нет. Стоит выдернуть блоки на косу - все нормально. По началу подозрение пало на ЭМП внутри корзины, однако эксперименты с экранированием, заземлением и проч. не помогли. Далее возникла идея, что коса вносит дополнительные емоксти и индуктивности, чем помогает работе блоков. Так и оказалось: на выходе линейных стабилизаторов не были установлены емкости для обеспечения стабильности регулятора. После запайки емкостей все заработало как часы. Завтра всю электронику ожидает многочасовая прогонка. А теперь спаааааать.

PS. Обещали подогнать бинокуляры как на предыдущей картинке.

понедельник, 22 ноября 2010 г.

EPIC FAIL


Взято с сайта техаса (пруф). Как мы видим, проект называется sinwave и в окне сообщений красуется "SineWave example started". Однако на желтой картинке мы видим далеко не синус, и даже не косинус. А еще у них такой же малодюймовый монитор как и у меня на работе, еще и CRT, наверное. Прочитал сегодня "Записки инженера". Довольно интересно. На выходных почти отдыхал. Не в силах работать, суббота была потрачена на сон и просмотр фильмов, лежа на диване. Воскресенье было потрачено на дорисовку шабашки (см. пред. пост). Навел порядок на рабочем месте: выкинул хлам, упорядочил документацию, собрал железки в одном месте, детали в другом, инструмент - в третьем, протер пыль. Перевел чертежи, посчитал мощности нагрузок. написал письмо куда и кому надо. Надо доделывать схему-шабашку и приступать к трассировке платы. На работе надо заказать комплектацию и далее доразобраться с чертежами. Вроде все. А на плату не остается времени почти. а там не все очень хорошо - глючит АЦП жутко. Мда. надо бы прикупить очки для монтажа мелочи всякой, чтобы под ними потыкать ножки процессора и посмотреть где закоротка/разрыв/непропай.


воскресенье, 21 ноября 2010 г.

Жизнь прекрасна!

Из динамиков доносится Queen - Princes of the Universe. В эмалированной кружке горячий какао, за окном мягкий снежок и освежающая прохлада. В виртуальной машине открыт редактор схем - рисую интерфейс RS-485. Вот тут есть подробное описание чего да как со ссылками. тут можно прочитать как делают защиту для данного интерфейса.


Еще часик и схема превращается уже вот в такую:


Добавлены всякие подтяжки, защитные смещения, трансилы на линию и предохранители, осталось нарисовать часть, которая будет идти к процессору:




Ссылка

понедельник, 15 ноября 2010 г.

Победа

Удалось обнаружить причину неполадки в настраиваемом блоке: микроскопическое замыкание на плате. После устранения все работает как часики. Однако даже такая мелкая вещь может доставить изрядное количество головной боли. Сегодня устал (

воскресенье, 14 ноября 2010 г.

Дела насущные

Прошлую неделю потратил на борьбу с разного рода чудесами: прочитать можно тут и тут. При этом борьба продолжается. Занялся макетированием проблемного участка. Шабашу по вечерам на дому. Подписали под грант какой-то (попил детектед), подключили к контрактной работе - потихоньку вникаю. Преподаю студентам-оболтусам по три пары не неделе +подготовка. Хожу в КЮТ, провожу QSO (теперь я модный), уже телефоном. Все никак не дойдут руки до изготовления УМ на КВ, построения SDR и до починки инвертора ламп подсветки монитора. С другой стороны очень рад, что есть загрузка. Это лучше, чем просто так протирать штаны.

ЗЫ. Вспомнил тут еще, что надо готовиться к кандминимуму по специальности и писать статьи в журналы. А также уже как полгода надо сделать фотки для стенда кафедры, за что нам вставят.

пятница, 5 ноября 2010 г.

Оладушки-оладушки

Нажарил оладушек. Вкусно. Это подготовка к суровым трудовым будням-ням.

суббота, 23 октября 2010 г.

Картинка номер два

Теперь несущая подавлена как минимум на 40дБ, боковая на 30дБ. На всех диапазонах уровень побочных компонент (боковая полоса + гармоники однополосного сигнала) не превышает 30дБ. Уже неплохо, но хочется и боковую задавить до 40дБ, а для этого надо подстраивать фазы сигналов с хорошей точностью (лучше чем 1%). Думается этого можно будет достигнуть, ежели применить более хороший DDS, чем сейчас (6-разрядный 875кГц ШИМ).

суббота, 16 октября 2010 г.

Картинка номер раз

После летних отпусков и прочего пришла пора начать делать что-нибудь интересное. Поэтому картинка номер раз:


Здесь показан спектр однополосного сигнала с частотой 14070кГц, полученного путем смешения сигнала с частотой 14000кГц с сигналом с частотой 70кГц. По вертикали одно деление соответствует 10дБ, по горизонтали 100кГц. Сигнал сформирован при помощи микроконтроллера TMS320F28035 и коммутатора 74HC4053. Также используются буферы и фильтры. Выходное напряжение смесителя, нагруженного на 50Ом, составляет 1В, что соответствует мощности 20мВт. Видно, что несущая и нижняя боковая полоса подавлены чуть более чем на 20дБ, что не есть хорошо. Ведется дальнейшая работа в этом направлении.

пятница, 4 июня 2010 г.

К нам приехал, к нам приехал....

Дорогой SI570. Получил на днях. Том, спасибо!

суббота, 29 мая 2010 г.

Опа-опа-опа-па!

Дотянулись руки до платки-макета SDR-приемника. Грешил на генератор. Однако, генератор оказался ни причем - сдох цифровой фазовращатель на 74HC74. Видать не перенес высоких частот. Заменил на КР531ТМ2. Как утверждает документация - это быстродействующая ТТЛШ с временами задержек 3нс. Вроде работает, 14МГц выдает. Осталось затестить в работе. В то же время жду микросхемку синтезатора SI570. Заказал у Томаса KM5H. При этом уже подумываю над окончательной конструкцией приемника. Например, говорят, что плохо использовать триггеры в качестве фазовращателя, лучше сдвиговый регистр (искать схему ТПП "Пилигрим" - там посмотреть как сделан фазовращатель). Ежели делать, то, наверное, стоит делать сразу TRX, за основу взять конструкции YU1LM.

среда, 5 мая 2010 г.

О выборе синтезатора для SDR

Столкнулся с проблемой построения синтезатора для SDR-приемника. Как известно при разработке чего-либо имеется три критерия: дешевизна, качество и время разработки. Знающие дяди говорят, что одновременно можно удовлетворить только двум критериям. В чем я и сам убедился прорабатывая различные варианты построения синтезатора. Итак, что имеем:
  1. Синтез на одно-, двухконтурных ФАПЧ, с перестройкой опоры
  2. Синтез на софт-DDS в качестве опоры ФАПЧ
  3. Синтез на CY27EE16 и прочих
  4. Синтез на SI570
  5. Синтез на DDS от ADI

Первые два варианта хороши своей дешевизной. Однако, чтобы довести такие вещи до ума и получить приемлимые характеристики, требуется много времени и мозговых усилий. Оба ресурса у меня сейчас заняты. Третий вариант тоже недорогой, быстро покупается, но при этом характеристики такого синтеза  - увы и ах. Слишком велики шумы. Два последних варианта подкупаются быстротой и качеством, однако кусаются ценой. У SI570 еще и доставабельность плохая (но не тут-то было). Однако, как было упомянуто выше, мозговые и временные ресурсы ограничены, поэтому выбор пал на SI570. Ибо доставабельность доставабельностью, но корпус у нее для домашних поделий лучше, чем у ADIшных DDS-ов. По шумам оба варината примерно одинаковы, ну по крайней мере для меня (специалисты утверждают, что DDS-ы все таки лучше). Так что вот. Скоро попробую заказать и буду ждать чудо-микросхемки.

воскресенье, 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


вторник, 23 марта 2010 г.

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

Недавно в руки мне попался двухстрочный ЖК-индикатор PowerTip PC1602V. Начал с ним разбираться. Документации на именно этот индикатор не нашлось, но оказалось, что товарищи китайцы не стали мудрить с решением, поэтому выбрали стандартный контроллер HD44780, подробной информации по которому в интернете полным полно.
Пару слов о самом контроллере. Контроллер HD44780 фактически является промышленным стандартом и используется при производстве ЖК-индикаторов. Совместимые аналоги выпускаются многими фирмами. Контроллер HD44780 может управлять двумя строками по 40 символов, при матрице символа 5х7. HD44780 подключается посредством параллельной шины, которая тоже успела стать стандартной.
Данная параллельная шина имеет 14 линий, описание шины было найдено в даташите на похожий ЖК-индикатор PC1602D. Для начала необходимо просто подать на индикатор питание и попробовать оживить его. Если с питанием все понятно - производитель утверждает, что для питания логики достаточно 3.3В. То с питанием самих кристаллов сложнее: при комнатной температуре напряжение питания кристаллов должно составлять 4.1В для получения хорошего контраста. А это уже хуже, с учетом того, что под рукой у меня есть только микроконтроллер с 3.3В-уровнями.
Однако проблема решаема. По сути надо говорить об отрицательном напряжении питания кристаллов: оно отсчитывается от плюса питания. Поэтому если подать на вход питания кристаллов отрицательное напряжение, все должно получиться. Получать его можно разными путями, но когда лень идти в магазин за микросхемами, то можно обойтись простым инвертором на паре диодов и конденсаторов, схема которого приведена на рисунке:
На вход такой схемы подается меандр с амплитудой 3.3В, с частотой надо еще поэксперементировать. С выхода получает отрицаетльное напряжение. Работает все просто: емкость C1 "устраняет" постоянную составляющую входного сигнала, далее на отрицательной полуволне работает диод D2, тем самым заряжая выходную емкость отрицательным напряжением, на положительной - другой диод.
На этой картинке приведены результаты симуляции схемы, нагруженной на сопротивление 100Ом:

понедельник, 22 марта 2010 г.

Чемпионат РФ по радиоспорту

13-14 марта проходил чемпионат РФ по радиоспорту (телефония).
Происходит это следующим образом. Радиолюбители устанавливают связь, обмениваясь номерами. Потом отправляют все набранные связи с номерами в оргкомитет. Там по определенным правилам присваиваются баллы за связи, и затем распределяются места. Номер формируется хитро: первая цифра - код региона, далее следует номер связи. Например, для Новосибирской области код - 4. Например, 4125 означает, что человек из Новосибирска провел 125 связей. Обмен происходит быстро, буквально так:




-Радио Зоя Девятка Олег Дима Василий


-Олег Дима Василий, мой номер такой-то


-Номер такой-то подтверждаю мой номер такой-то, Роджер


-Роджер




Прихожу я в кют, а там дядька, Олегом звать, говорит мне: сегодня ты работать не будешь (а в прошлый раз обещали показать как проводить связи и дать поработать в эфире), через 5 минут чемпионат, я буду оператором. Ну, делать нечего, я согласился, тем более интересно послушать, как это происходит. Сели минут без пяти одиннадцать, аппарат включен, Олег разминается перед "боем" - дает общий вызов, отвечает какой-то мужик. Даже сидя рядом, у меня были классные ощущения, когда на вызов отвечает человек, находящийся за много километров от меня. Я прям заулыбался. В 11 начинается "бой". Сначала ничего не шло, прохождения не было. Потом как начнется. Олег связывается, делает записи в журнал. Моя задача была простая: записывать в отдельный листочек позывные, с которыми была проведена связь, чтобы повторно не вызывать их (повторные связи не засчитываются). Листочек тоже хитрый: разбит на столбики, которые пронумерованы последними буквами позывного, так проще искать была уже связь с этим человеком или нет. Правда пару раз я прокосячил, так как у Олега почерк неразборчивый, я плоховато вижу, плюс вторых наушников не было и я не мог на слух контролировать. Но ничего страшного, пару раз извинились. В итого к концу соревнования, к 3 часам, набрали всего 150 связей, с учетом Олеговских за предыдущий день. В час получается порядка 30 связей, то есть одна в две минуты. Хотя встречались радиолюбители, набравшие около 1000 связей за 4-5 часов работы.


воскресенье, 7 марта 2010 г.

КТ315 и паразитные емкости

Один из недостатков SDR-приемника, описываемого в предыдущей заметке - это то, то частота гетеродина должна быть выше в четыре!!! раза, чем частота диапазона. Ладно, если я слушаю 80-метровый диапазон (3.5 МГц). Для диапазона 20м частота гетеродина должна быть равна 56 МГц. Что плохо по нескольким причинам, одна из которых - отсутствие кварцевых резонаторов на такую частоту. Жизнь облегчается, если подавать на смеситель два противофазных сигнала от гетеродина, тогда достаточно иметь удвоенную частоту. Для этого можно преобразовать сам гетеродин, либо добавить фазовращатель дающий два сигнала, сдвинутые друг относительно друга на 180 градусов. Был выбран второй путь.
В итоге сваял вот такую простенькую схему:


Включаю, подаю на вход синус с частотой 30 МГц и... с обоих выходов снимаю синфазный сигнал, хотя теория гласит, что с коллектора мы должны снимать противофазный сигнал Симуляция в SPICE показала тот же самый результат. Подвох в больших емкостях база-коллектор и база-эмиттер и тут уже надо что-то придумывать. Так как на раздумье времени нет, пришлось делать генератор с двумя противофазными выходами. 

суббота, 13 февраля 2010 г.

Ничто не долговечно, только HAMRADIO вечно!

Как известно, эмбеддеры сыты не только Ымбеддидом. Так и я решил податься в HAM'ы, по нашему радиолюбители. Пока начал с прослушивания эфира в Клубе юных техников, а также со сборки приемника. Да не простого, а SDR. Кто думает, что SDR - это только sex, drugs und rock'n'roll (или препод по дифурам), то он глубоко ошибается. Это также и Software Defined Radio, по сути ППП - приемник прямого преобразования (кстати, в технику ПП большой вклад внес наш соотечественник, товарищ Поляков, так сказать отец и бог)

суббота, 30 января 2010 г.

Serial bootloader для TMS320F280x

Некоторое время назад была попытка начать блог. Но кроме выкладывания фотографий рабочего места и написания планов на будущее дело не пошло. Сподвигнутый на писательские подвиги такими героями, как Мегакорпорация (веселые ребята), DI_HALT (выше всяких похвал), решил, что стоит запробовать еще разок. Тем более повод выдался.
Имеется у меня плата, на борту которой супернанотехнологичный (и энергосберегающий!!) МК TMS320F2809 производства мегаконторы Texas Instruments. Возникла надобность грузить его ОЗУ через SCI, все бы хорошо, да вот утилиты, которые есть для этого все дико неудобные: одни монстрообразные до ужаса, другие не позволяют задать скорость COM-порта, через который идет загрузка. Пришлось писать самому - надо же как-то поднимать свой уровень программирования выше быдлокодерства.
Итак, для начала стоит почитать документ от техасцев, чтобы понять, как вогнать процессор в режим загрузки через SCI, какой формат данных, посылаемых при загрузке и т.п. Режим загрузки выбирается тремя пинами: GPIO34, GPIO29, GPIO18. Для загрузки через SCI надо притянуть GPIO34 к земле (лучше через резистор сопротивлением пару кОм), а осталные к питанию (тоже через резисторы, причем в схеме к отладочным платам нарисованы резисторы 100кОм, я мудрить не стал и поставил точно такие). При очередном ресете, процессор окажется в нужном нам режиме и будет ждать данных на проводе. Но перед тем, как начать обмен, необходимо сделать "baud lock": поначалу МК не знает на какой скорости будут передаваться данные, поэтому он должен ее определить. Для этого отправляем ему символ 'a', если все нормально, процессор вышлет в ответ этот же символ.
При этом надо учитывать, что ежели скорость задана выше 100 кбод, то МК не сможет определить бодрейт. Иногда приходится использовать более низкие скорости обмена - это зависит от частоты тактирования процессора. Далее процессор готов к приему данных. Каждый принятый байт отсылается обратно, что может быть полезно для контроля процесса загрузки.
Отдельное слово стоит сказать о формате данных для загрузки и о том, как эти данные получить. Как вы догадались, это все приведено в вышеуказанном документе. Вот кусок оттуда:
AA 08 ;Keyvalue
00 00 00 00 00 00 00 00 ;8 reserved words
00 00 00 00 00 00 00 00
3F 00 00 A0 ;Entrypoint 0x003FA000
02 00 ;Load 2 words - codestart section
00 00 00 00 ;Load block starting at 0x000000
7F 00 9A A0 ;Data block 0x007F, 0xA09A
16 00 ;Load 0x0016 words - ramfuncs section
00 00 02 00 ;Load block starting at 0x000002
22 76 1F 76 2A 00 00 1A 01 00 06 CC F0 ;Data = 0x7522, 0x761F etc...
FF 05 50 06 96 06 CC FF F0 A9 1A 00 05
06 96 04 1A FF 00 05 1A FF 00 1A 76 07
F6 00 77 06 00
55 01 ;Load 0x0155 words - .text section
3F 00 00 A0 ;Load block starting at 0x003FA000
AD 28 00 04 69 FF 1F 56 16 56 1A 56 40 ;Data = 0x28AD, 0x4000 etc...
29 1F 76 00 00 02 29 1B 76 22 76 A9 28
18 00 A8 28 00 00 01 09 1D 61 C0 76 18
00 04 29 0F 6F 00 9B A9 24 01 DF 04 6C
04 29 A8 24 01 DF A6 1E A1 F7 86 24 A7
06 .. ..
.. .. ..
.. .. ..
FC 63 E6 6F
19 00 ;Load 0x0019 words - .cinit section
00 00 18 00 ;Load block starting at 0x000018
FF FF 00 B0 3F 00 00 00 FE FF 02 B0 3F ;Data = 0xFFFF, 0xB000 etc...
00 00 00 00 00 FE FF 04 B0 3F 00 00 00
00 00 FE FF .. .. ..
.. .. ..
3F 00 00 00
02 00 ;Load 0x0002 words - myreset section
00 00 32 00 ;Load block starting at 0x000032
00 00 00 00 ;Data = 0x0000, 0x0000
00 00 ;Block size of 0 - end of data 

Для получения такого файлика из COFF имеется утилита в составе Code Generation Tools - hex2000. Про нее тоже написано в документе.
Изучив данный документ, я за вечер написал утилитку. Пока утилита находится в стадии альфа, но тем не менее работает. Вкратце, как оно работает. Для начала при помощи hex2000 получим hex-файл:
hex2000 -b -boot -sci8 -o filename.hex filename.out
-b - означает, что создается бинарный файл (пока только такие и может использовать утилитка)
-boot - значит готовим данные для загрузки
-sci8 - 8-битный формат данных для загрузки через SCI
-o - задаем имя hex-файла
Затем подаем питание на процессор, жмем ресет и пишем такое:
C2000Boot COM1 19200 filename.hex
В качестве параметров утилитка принимает имя последовательного порта, через который идет загрузка, скорость обмена и путь к hex-файлу. Далее все как описано выше - baud lock и загрузка. Можно производить загрузку и через виртуальный последовательный порт от FTDI. Вскоре выложу проект для VC++ 2005 и сам испоняемый файл.