Элементная база:
Резисторы:
Обозн. |
Наименование |
Количество |
R1 |
С2-29В-0,125Вт-10кОм0,1% |
1 |
R2 |
С2-29В-0,125Вт-10кОм0,1% |
1 |
Конденсаторы:
Обозн. |
Наименование |
Количество |
C1 |
К50-35 100 мкФ x10В (20%) |
1 |
C2 |
К10-17А-М47 20пФ x50В, (10%) |
1 |
C3 |
К10-17А-М47 20пФ x 50В, (10%) |
1 |
C4 |
К50-35 10 мкФ x10В (20%) |
1 |
С5 |
К53-1А-0.1 мкФ x10В (20%) |
1 |
С6 |
К53-1А-0.1 мкФ x10В (20%) |
1 |
С7 |
К50-35 100 мкФ x10В (20%) |
1 |
Кварцевый генератор:
Обозн. |
Наименование |
Примечание |
Количество |
Z1 |
C-MAC IQXO-22C BU |
4 МГц; 5В; TTL/КМОП |
1 |
Индуктивности:
Обозн. |
Наименование |
Количество |
L1 |
EC24-100K, 10 мкГн, 10% |
1 |
Микроконтроллеры:
Обозн. |
Наименование |
Примечание |
Количество |
DD1 |
AT90S2313 |
maxрабочее напряжение 6.6В; пост. ток через вывод порта 40 мА; пост. ток между VCC и GND 200 мА |
1 |
Мультиплексоры:
Обозн. |
Наименование |
Количество |
MS |
MC74HC4051A |
1 |
Принципиальная схема
Рис. 3. Принципиальная схема преобразователя
Программное обеспечение
Программное обеспечение для устройства написанное и отлажено среде AVRStudio.
Рис. 4. Блок-схема программного обеспечения
Пояснения к работе программного обеспечения
В программе обрабатывается только одно прерывание - прерывание по совпадению таймера/счетчика 1
Обработка сброса:
Устанавливаем необходимые регистры:
-указатель стека
-инициализируем порты B и D
-очищаем все необходимые временные регистры
-разрешаем прерывание по совпадению таймера/счетчика 1
-считываем данные с порта B
-записываем эти данные в регистр сравнения таймера/счетчика 1
-регистр управления таймером/счетчиком 1 A (устанавливаем режим работы таймера - 8-ми разрядный ШИМ)
-регистр управления таймером/счетчиком 1 B (настраиваем коэффициент деления системной частоты)
-устанавливаем сигнал на выходе PD6 порта D
Ждем прерывание (выполняется программа).
Программа представляет собой простой бесконечный цикл.
Выполняем прерывание.
Обработка прерывания по совпадению таймера/счетчика 1:
-устанавливаем или сбрасываем (в зависимости от ситуации) сигнал на выходе PD6
-вычитаем из временного регистра, в котором содержится период ШИМ-сигнала, длительность прошедшего ШИМ-импульса (значение, снятое с порта B)
-получившееся значение записываем в регистр совпадения таймера/счетчика 1
-сбрасываем таймер/счетчик 1
-возвращаемся в программу
При новом совпадении регистра значения с регистром совпадения таймера/счетчика 1 программа вновь уходит на прерывание.