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

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

Но в статье описано только структура папки tests, а наличие полного примера проекта пролило бы больше света на возможности разработанного автором метода подключения тестов. Ниже, я приведу структуру проекта, где такая система тестирования добавлена как опция.

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

memleax отлаживает и находит утечки памяти без перезагрузки сервиса или процесса и без перекомпилляции.

Установка:

wget http://download.opensuse.org/repositories/home:/bayrepo/CentOS_7/home:bayrepo.repo -O /etc/yum.repos.d/home:bayrepo.repo
yum install memleax -y

Детали описания: http://bayre...

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

Задача: сделать на Си связный отсортированный список с ограниченным размером или хэш-таблицу, необходимо, что весь список занимал не более 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 секунды. Подобные проблемы хорошо описаны в видеоуроке на сайте Амперки Только в видеоуроке упрощенный рассчет и разрядка не верная, т.к конденсатор при замыкании кнопки буде чень быстро разряжаться через сопротивление кнопки.

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