Полевые транзисторы делятся на полевые МОП-транзисторы (MOSFET) и полевые транзисторы с управляющим PN-переходом (JFET). Первые нам хорошо знакомы. Смотри шпаргалку по MOSFET’ам и примеры их использования далее по ссылкам. А вот JFET мы до сих пор не применяли. Давайте же это исправим.

Одна из вещей, которая мне не нравится в HBR/CW — это слабоватые ФНЧ. В изначальном варианте они справлялись со своей задачей нормально, однако ситуация усугубилась после добавления индикатора КСВ. В худшем случае, на диапазоне 15 метров, гармоники стали идти с уровнем -35 dBc. Пусть сейчас у меня и нет антенны на 15 метров, но ФНЧ подлежат замене.

Как мы недавно выяснили, в PostgreSQL есть исключения. Но использовать исключения в языке С, где нет ни автоматического управления памятью, ни умных указателей, не кажется хорошей идеей. Так вот, оказывается, что вместо умных указателей PostgreSQL предлагает совершенно другой механизм — контексты памяти (memory contexts). Давайте же разберемся, что это такое, и чем помогает в работе с исключениями.

В ходе использования HBR/CW был выявлен дефект. Оказалось, что трансивер имеет достаточно высокий уровень собственного шума. Это стало особенно заметно, когда вместо наушников 80 Ом я попробовал наушники 32 Ом. Шум низкочастотный, поэтому не оказывает влияния на разборчивость слабых сигналов. Однако он создает ощутимую и совершенно ненужную нагрузку на уши.

Хотелось бы продолжить рассказ о расширениях PostgreSQL и поговорить о логировании и исключениях. Рассматривать их нужно вместе, поскольку в PostgreSQL это связанные механизмы. Хотя ранее мы уже и использовали макрос elog(), тема была затронута лишь поверхностно.

Важная штука, которой не хватает в HBR/CW — это индикатор КСВ. Если антенну оборвет ветром, или переключатель антенного коммутатора окажется в неверном положении, трансивер никак не сообщит об этом. Было решено исправить данную ситуацию.

Есть такие LED-дисплеи из восьми семисегментных индикаторов. Индикаторами управляет MAX7219 (даташит [PDF]) или его клон, а общение между чипом и МК осуществляется по SPI. Питается модуль напряжением 5 В. Вот стало интересно, можно ли подружить такой дисплей с STM32, а также что полезного удастся на него вывести.

В рамках статьи Учимся писать расширения на языке C для PostgreSQL мы познакомились со структурой расширений для постгреса, узнали, как писать для них тесты, и даже затронули вопрос обновления расширений и использования интерфейса SPI. Но заметка вышла из серии «с места в карьер», без глубокого погружения в детали. А между тем, погружаться есть во что. Хотелось бы заполнить кое-какие пробелы, и начать, пожалуй, следует с Datum и вызова сторонних функций.

Опыт использования трансивера HBR показал, что работать в SSB с мощностью 5 Вт мне не особо интересно. Поэтому было решено сделать модификацию HBR, оптимизированную под работу в телеграфе. Трансивер получил имя HBR/CW.

Из предыдущей заметки о модулях ядра Linux мы узнали, что такое контекст прерывания, и что в нем нельзя делать блокирующие вызовы. Но что, если я хочу повесить прерывание на нажатие кнопки, а в обработчике делать что-то блокирующее? Давайте разберемся.