Добавлю шпаргалку по CUnit+CMake.

Недавно попадалась мне статья по теме: "CUnit: Автоматическое тестирование с динамической загрузкой тестов". Из статьи было почерпнуто достаточно полезный код по подгрузке тестов, а также сборка таких тестов посредством CMake.

Но в статье описан...

Читать далее...

Задача: сделать на Си связный отсортированный список с ограниченным размером или хэш-таблицу, необходимо, что весь список занимал не более N байт в куче (стек не считается).

Реализация

Возможные варианты: 1) сделать счетчик сколько выделено и освобождено и при достижении значения не выделять больше, т.е написать враппер для malloc, calloc, realloc; 2) выделить массив нужного размера и все операции по размещению элементов делать в этом массиве, проверяя границы; 3) поискать готовое решение по реализации хэш, массивов или списков на ограниченном участке памяти.

Первый вариант неплох, второй неудобен и требует много кода и отладки, поробуем тертий.

Есть библиотека inarray-allocator(http://bayrepo.net/doku.php?id=ru:inarrayalloc), которая позволит реализовать такой функционал.

Читать далее...

Для управления выходным напряжением, мой блок питания использует LM317, которым в свою очередь управляет микроконтроллер. На ножку ADJ микросхемы необходимо подавать напряжение до 9В-10В, а микроконтроллер сам с таким не справится. Поэтому необходимо вводить преобразователь напряжения.

Экспериментально установил, что напряжение, которое может организовать контроллер с помощью ШИМ и RC цепочки колеблется в диапазоне 0 и 4.3 Вольта. Значит вот они - величины входного сигнала.

Опять же экспериментально установил, что при питании 10В, трудно будет добится в любой из схем всех 10В на выходе преобразователя, т.к на самом преобразователе тоже потеряется напряжение, то было выбрано значение 9В. Большинство транзисторов с переходом База-Эмитер или Эмитер-Коллектор в насыщении в 1 вольт влезают.

Я же буду использовать операционный усилитель в качестве преобразователя, причем LM358, который позволяет работать с однополярным питанием. Большинство примеров приводится для классического двухполярного питания. И происходит жесткий облом, при попытке использовать эти схемы и правила при однополярном питании.

Читать далее...

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

  1. дребезг при нажатии - когда нпаряжение на ножке контроллера меняется не один раз а много раз 0-5В-0-5В-0-5В... обусловлен дребез несовершенством механизма самой кнопки
  2. отсуствие инерционности, случайные нажатия и отпускания заставят контроллер выполнять какие-то действия, а хотелось бы инерционности. например дать возможность нажимать кнопку не более раз в 0.1 секунды. Подобные проблемы хорошо описаны в видеоуроке на сайте Амперки Только в видеоуроке упрощенный рассчет и разрядка не верная, т.к конденсатор при замыкании кнопки буде чень быстро разряжаться через сопротивление кнопки.

Читать далее...

Микросхема TL431 — это регулируемый стабилитрон. Используется в роли источника опорного напряжения в схемах различных блоков питания.

Весьма интересная и полезная микросхема, но не совсем очевидны для новичка принципы ее работы. Моделирование в LTSpice данной микросхемы достаточно далеко от реальной картины и слишком идеализированно. В первые используя ее для управления транзистором, я встретил некоторые побочные эффекты. Хочу их описать.

Спецификация: TL431

Достаточно подробная статья с описанием работы и примерами: примеры работы и схемы

Хочу разобрать и проверить на практике несколько схем из статьи выше. Поглядеть как в реальных условиях TL431 себя ведет.

Читать далее...