Сообщение от xoxa
|
Надо сгородить схему
|
Для этой задачи схема не потребуется. Только процессор, и простейшие RC фильтры, в количестве 10 штук. В остальном же все решение задачи чисто программное. И совсем несложное.
Фактически это будет многоканальный программный ШИМ.
Выделяем в памяти 11 однобайтовых регистров под счетчики. 10 счетчиков будут формировать длительность рабочего импульса по каждому выходу, а 11-й счетчик будет задавать период ШИМ.
Еще 10 байт - для хранения чисел, пропорциональных заданному выходному напряжению по каждому каналу.
Настраиваем какой-нибудь таймер на генерацию прерываний, с некоторым периодом, о котором позже.
В основной программе после начальной инициализации обнуляем счетчик периода ШИМ, устанавливаем значения регистров-задатчиков (кнопками, или из ЕЕПРОМ), после чего переписываем значения задатчиков в соответствующие счетчики ШИМ. Затем устанавливаем в единицу те выходы ШИМ, чьи счетчики имеют ненулевое значение. После этого разрешаем прерывания таймера.
Обработка прерывания от этого таймера:
1. декремент счетчика периода ШИМ.
2. если получился ноль - переход на 9.
3. если не ноль, поочередно обрабатываем каждый из остальных 10 счетчиков:
4. если счетчик равен нулю - установить ноль на этом выходе ШИМ (даже если он уже в нуле, это не помешает), и перейти к следующему счетчику
5. если не равен нулю - декремент
6. если после этого счетчик не равен нулю - перейти к следующему счетчику
7. если получился ноль - установить ноль на этом выходе, и перейти к следующему счетчику
8. обработан последний счетчик - выход из прерывания
9. переписываем значения задатчиков в соответствующие счетчики ШИМ
10. устанавливаем в единицу те выходы ШИМ, чьи счетчики имеют ненулевое значение.
11. Выходим из прерывания.
Таким образом длительность единицы на каждом выходе будет пропорциональна числовому значению начальной установки своего счетчика. Остается только интегрировать эти импульсы, и масштабировать результат, чтобы вписаться в диапазон 0...10 вольт.
Теперь по поводу периода прерываний. Его выбирают из такого расчета, чтобы 256 таких периодов соответствовали желаемому периоду ШИМ.
Вроде все самое главное описал.