Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Три быстрых ШИМа на одном 16ти разрядном таймере (+)

Отправлено Двоешник (193.200.150.82) 31 августа 2012, г. 10:09


ATtiny10. Есть у нее "16-bit Timer/Counter0, True 16-bit Design, Including 16-bit PWM". Мне нужно получить три быстрых ШИМ канала на этом одном таймере для управления светодиодом. Больше в проце нет ничего для данных целей.
Хочу запрограммировать таймер в режим "Fast PWM", с вершиной счета определяемой регистром ICR0 (для гибкого выбора разрядности). Блок сравнения "А" программирую так чтоб он выставлял на пине OC0A единичку в начале счета и сбрасывал ее при совпадении счетного регистра с регистром сравнения OCR0A. То есть, Блок А будет работать как обычный ШИМ формирователь и при этом полностью аппаратно. Так я получу один канал ШИМ.

А вот блок сравнения "В", запрограммирую следующим образом:
Естественно "Fast PWM", с вершиной счета определяемой регистром ICR0. Далее разрешаем прерывания по достижению максимума, а также по совпадению с счетным регистром OCR0B.
Настройками отключаем выход блока сравнения от вывода процессора.
В памяти храним значения ШИМ оставшихся двух каналов (х1 и х2), отсортированные по значению, а также некую переменную указывающую какой канал имеет меньший/больший по заполнению ШИМ (x3).
В прерывании по достижению максимума пины двух каналов ШИМ выставляем в единицы.
Загружаем в регистр сравнения меньшее значение из пары хранящихся значений (х1, х2) и ждем прерывания.
В прерывании выясняем какой именно пин нужно сбросить (анализируя х3), сбрасываем пин в конкретном канале и перезаписываем регистр сравнения большим значением из пары х1, х2!!!
Снова ждем прерывания, сбрасываем пин в оставшемся канале.

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

---
Сформируется ли второе прерывание в блоке сравнения "В"?
Какие бы вы посоветовали параметры ШИМ для управления RGB светодиодом?





Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
сложите 2 и 3:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru