Под воздействием статьей с хабрахабр, а так же отличной книги "Электроника - теория и практика", я решил так же сделать разбор цепи и сохранить у себя.
Эти все результаты можно получить с помощью любой программы моделирования электрических схем, статья просто образовательного характера, а та...
Добавлю шпаргалку по CUnit+CMake.
Недавно попадалась мне статья по теме: "CUnit: Автоматическое тестирование с динамической загрузкой тестов". Из статьи было почерпнуто достаточно полезный код по подгрузке тестов, а также сборка таких тестов посредством CMake.
Но в статье описано только структура папки tests, а наличие полного примера проекта пролило бы больше света на возможности разработанного автором метода подключения тестов. Ниже, я приведу структуру проекта, где такая система тестирования добавлена как опция.
Задача: сделать на Си связный отсортированный список с ограниченным размером или хэш-таблицу, необходимо, что весь список занимал не более N байт в куче (стек не считается).
Реализация
Возможные варианты: 1) сделать счетчик сколько выделено и освобождено и при достижении значения не выделять больше, т.е написать враппер для malloc, calloc, realloc; 2) выделить массив нужного размера и все операции по размещению элементов делать в этом массиве, проверяя границы; 3) поискать готовое решение по реализации хэш, массивов или списков на ограниченном участке памяти.
Первый вариант неплох, второй неудобен и требует много кода и отладки, поробуем тертий.
Есть библиотека inarray-allocator(http://docs.putey.net/ru/inarrayalloc), которая позволит реализовать такой функционал.
Для управления выходным напряжением, мой блок питания использует LM317, которым в свою очередь управляет микроконтроллер. На ножку ADJ микросхемы необходимо подавать напряжение до 9В-10В, а микроконтроллер сам с таким не справится. Поэтому необходимо вводить преобразователь напряжения.
Экспериментально установил, что напряжение, которое может организовать контроллер с помощью ШИМ и RC цепочки колеблется в диапазоне 0 и 4.3 Вольта. Значит вот они - величины входного сигнала.
Опять же экспериментально установил, что при питании 10В, трудно будет добится в любой из схем всех 10В на выходе преобразователя, т.к на самом преобразователе тоже потеряется напряжение, то было выбрано значение 9В. Большинство транзисторов с переходом База-Эмитер или Эмитер-Коллектор в насыщении в 1 вольт влезают.
Я же буду использовать операционный усилитель в качестве преобразователя, причем LM358, который позволяет работать с однополярным питанием. Большинство примеров приводится для классического двухполярного питания. И происходит жесткий облом, при попытке использовать эти схемы и правила при однополярном питании.
Для блока питания необходимо будет сделать панель управления состоящую из блока кнопок. Если просто подвести через кнопку питание через сопротивление, то получим:
- дребезг при нажатии - когда нпаряжение на ножке контроллера меняется не один раз а много раз 0-5В-0-5В-0-5В... обусловлен дребез несовершенством механизма самой кнопки
- отсуствие инерционности, случайные нажатия и отпускания заставят контроллер выполнять какие-то действия, а хотелось бы инерционности. например дать возможность нажимать кнопку не более раз в 0.1 секунды. Подобные проблемы хорошо описаны в видеоуроке на сайте Амперки Только в видеоуроке упрощенный рассчет и разрядка не верная, т.к конденсатор при замыкании кнопки буде чень быстро разряжаться через сопротивление кнопки.