Журнал РАДИОЛОЦМАН, октябрь 2011
Dev Gualtieri
Создавая схемы на микроконтроллерах с малым числом выводов, каждый, наверняка, сталкивался с ситуацией, когда не хватает всего одного - двух входов. Решить эту проблему можно, используя тот факт, что у большинства таких микроконтроллеров несколько цифровых выводов одновременно являются входами малоразрядного аналого-цифрового преобразователя.
Наличие аналоговых входов дает возможность простого решения, позволяющего увеличить количество логических состояний, которые микроконтроллер способен считать со своих входных выводов, в особенности, для относительно статичных источников сигналов, таких как переключатели и джамперы, используемые для конфигурирования схемы. Для этого просто надо, вместо двоичной логики, использовать троичную.
В двухуровневой (бинарной) логике для распознавания восьми состояний от [000]2 до [111]2 (0…(23–1)) необходимо задействовать три вывода микроконтроллера. Троичная логика позволяет, используя всего два вывода, различать девять состояний от [00]3 до [22]3 (0…(32–1)).
В изображенной на Рисунке 1 схеме троичная логика реализована с использованием двух из имеющихся четырех аналоговых входов микроконтроллера PIC12F675. Однополюсные на два направления (SPDT) переключатели, в зависимости от положения центрального контакта, подают на входы напряжения 0, 2.5 или 5 В.
Рисунок 1. | Использование аналого-цифрового преобразователя микроконтроллера для ввода сигналов троичной логики позволяет с помощью двух выводов различать девять различных состояний. |
Программа микроконтроллера, считывая эти напряжения, интерпретирует их как троичные «0», «1» или «2». Комбинация всех значений двух входов дает девять различных состояний (см. Таблицу 1).
Этот прием можно, также, использовать, задействовав лишь один вывод для ввода трех состояний, например, для управления мотором командами «Вперед» – «Стоп» – «Назад». Аналогично, три вывода микроконтроллера позволят иметь 27 входных состояний, в то время, как в двоичной логике для 16 состояний потребовались бы 4 вывода.
Используя троичную логику, можно увеличить количество различаемых микроконтроллером состояний входов, сократив количество необходимых выводов.
Таблица 1. Состояния сигналов троичной логики
S1
|
0
|
1
|
2
|
0
|
1
|
2
|
0
|
1
|
2
|
S2
|
0
|
0
|
0
|
1
|
1
|
1
|
2
|
2
|
2
|
Состояние
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|