Программируемый логический элемент - РАДИОСХЕМЫ

     интересные РАДИОСХЕМЫ самодельные


» ПОИСК СХЕМ



» РАДИОБЛОГИ
Миниатюрный щуп-вольтметр
Программатор ARM Cortex USB и Flash Magic
Светодиодный свет для растений
УФ светодиоды диапазона UV-C для дезинфекции
Драйвер ШИМ с нулевым потреблением тока в режиме ожидания
Программируемый логический элемент
Дистанционный переключатель из модуля радиоуправления игрушками
Усилитель для петличного конденсаторного микрофона

Программируемый логический элемент

Всем привет! Недавно встретилась интересная идея под МК PIC12F675, который мог бы работать как один логический элемент с двумя входами. Логическая функция определяется аналоговым напряжением, подаваемым на вывод GPIO4 при первом сбросе устройства, после этого выборка не выполняется повторно, поэтому логику нельзя изменить на лету. Три старших разряда аналого-цифрового преобразования дают восемь различных уровней напряжения, которые соответствуют определенным логическим функциям. Реализовано шесть функций; это XOR (исключающее ИЛИ), AND (И), NOT (НЕ) и их инвертированные эквиваленты. 

Чтобы доказать эту концепцию, вот D-триггер, который собран из пяти логических элементов 12F675, работающих как вентили NAND. Шестой сконфигурирован для работы в режиме прямоугольной волны, чтобы обеспечить вход синхронизации триггера для тестирования. Кнопка обеспечивает ввод данных.

Генератор прямоугольного сигнала

Имея 8 аналоговых уровней напряжения и всего шесть логических функций, остались две неиспользуемые функции, поэтому они были использованы для создания генератора прямоугольных импульсов. Есть два режима: быстрый и медленный, выбираемые напряжением на контакте смены функции. После выбора программа считывает данные на входах A и B и устанавливает частоту на выходном контакте в соответствии с таблицей ниже. Она считывается каждый цикл, поэтому частоту можно регулировать во время работы.

  •  A B Частота
  •  0 0 1 кГц, 2,5 Гц
  •  0 1 100 Гц, 1 Гц (1 с)
  •  1 0 50 Гц, 0,5 Гц (2 с)
  •  1 1 25 Гц, 0,25 Гц (4 с)

Выбор логической функции

Когда устройство впервые включается, оно считывает логический уровень на GPIO5. Если на входе низкий уровень, аналоговое напряжение на GPIO4 определяется и логическая функция определяется, как описано выше. Выбранная функция затем сохраняется в EEPROM. Если вход GPIO5 высокий при включении устройства, ранее сохраненная функция считывается из EEPROM и используется в работе. В этом случае аналоговое напряжение на GPIO4 игнорируется. Это позволяет один раз выбрать и сохранить функцию, которую будет выполнять PIC, чтобы ее можно было использовать повторно, не устанавливая ее каждый раз при включении.

Номер Функция Установка
0 AND GP4-Vss
1 OR Vdd-10K-GP4-2.2K-Vss
2 XOR Vdd-10K-GP4-4.7K-Vss
3 Square Wave fast Vdd-10K-GP4-8.2-Vss
4 NAND Vdd-6.8-GP4-10K-Vss
5 NOR Vdd-4.7K-GP4-10K-Vss
6 XNOR Vdd-2.2K-GP4-10K-Vss
7 Square Wave slow Vdd-10K-GP4

На входах контактов GPIO0, 1 и 5 включена функция слабого внутреннего подтягивания, поэтому внешние подтягивающие резисторы не требуются.

Выбор функции во время программирования

Если устройство поддерживает запись в EEPROM во время программирования, можете настроить функцию, когда код будет запрограммирован в PIC. Это избавляет от необходимости программировать функцию с аналоговым напряжением при первом использовании. Для этого необходимо установить первые три ячейки памяти в EEPROM следующим образом:

  • Адрес 00      функция от 0x00 до 0x07 (таблица выше)
  • Адрес 01      0x81 - байт проверки
  • Адрес 02      0x69 - байт проверки

Если байты проверки неверны, EEPROM будет инициализирован, а функция установлена на 0. Этот код написан для работы на 12F675. Приведенный файл HEX собран для 12F675 и был протестирован с ним. Он должен работать и на 12F683. Этот код не будет работать с 12F629, потому что у того нет функции АЦП. 

Код для эмуляции каждой логической функции занимает от 6 до 9 командных циклов для выполнения. Это делает эффективную задержку распространения между изменением входного сигнала и выходным откликом около 6-9 микросекунд с использованием внутреннего генератора 4 МГц. Хотя это очень медленно по сравнению, например, с логикой TTL, для низкоскоростных цепей пойдёт. Теоретически он должен работать примерно до 100 кГц.

Помимо логической функции, генератор прямоугольных сигналов очень удобен при экспериментировании со схемами на макетной плате. Если покопаетесь в исходном коде, то сможете настроить частоты в соответствии со своими потребностями.

Если нужно несколько логических элементов одного и того же типа, понадобится только одна резисторная цепь для установки уровня напряжения, и затем она может быть подана на несколько PIC параллельно, поскольку входное сопротивление аналого-цифрового преобразователя довольно велико.

Еще один момент: PIC не любят когда их входные данные остаются плавающими, поэтому управляйте ими или привязывайте. Код не допускает слабого внутреннего подтягивания входов, поэтому это важно. Исходный код доступен здесь.



Gromov - 01.07.2021 - Прочитали: 1044

ПАРАЛЛЕЛЬНОЕ СОЕДИНЕНИЕ СТАБИЛИЗАТОРОВ

В нескольких схемах рассмотрим, можно ли параллельно включать стабилизаторы напряжения, микросхемы типа LM317 и аналогичные.


ДОПОЛНЕННАЯ РЕАЛЬНОСТЬ РАДИОЛЮБИТЕЛЯ

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


КОИЛГАН НА БАТАРЕЙКАХ

Схема простого устройства для демонстрации эффекта электромагнитного ускорения металлического снаряда в пушке Гаусса.




Ваши комментарии к материалу
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]


» РАДИОЭЛЕМЕНТЫ


© 2010-2021 "Радиосхемы". Все права защищены  Почта  PDA   Группа вконтакте   Канал ютуб   Группа в фэйсбук