Страница 1 из 1
не получается написать программку начинающему
Добавлено: Пн янв 27, 2014 17:01:18
grega1
Нужно написать программку на Atmega48 в CodevisionAVR
Используя PORTD 0 1 2
С начало загорается на 0 канале диод потом постепенно переходи на 1 потом также 2 и обратно
(плавно переходя с одного на другой) без использования ШИМ и с использованием ШИМ.

Re: не получается написать программку начинающему
Добавлено: Ср янв 29, 2014 18:31:22
Alexeyslav
Без использования ШИМ - НИКАК, выводы-то цифровые.
Если использовать аппаратный ШИМ, их выходы строго привязаны к конкретным выводам контроллера, на PORTD 0 1 2 таким образом отразить будет весьма гиморно и с некоторыми ограничениями. Остается только программный ШИМ - а тут уж кто во что горазд, крутимся в цикле от 0 до 255 и сравниваем с тремя переменными - если больше переменной цикла выключаем соответствующий порт, если меньше - включаем. и делов-то.
Попутно изменяем значение в этих трех переменных каждый N-й проход цикла, значение N зависит от требуемой скорости мигания и частоты программного ШИМ-а. Например если выйдет частота ШИМ 1кГц, то изменяя каждые 10 проходов получим скорость 100 едениц/сек
Re: не получается написать программку начинающему
Добавлено: Ср янв 29, 2014 18:47:00
Pika4u
Хм, а почему нельзя использовать полу-аппаратный? Берем таймер с регистром сравнения. По совпадению значения опускаем нужные выводы в 0, по переполнению-поднимаем в 1.

Re: не получается написать программку начинающему
Добавлено: Ср янв 29, 2014 19:20:08
Аlex
grega1 писал(а):Используя PORTD 0 1 2
С начало загорается на 0 канале диод потом постепенно переходи на 1 потом также 2 и обратно
(плавно переходя с одного на другой) без использования ШИМ и с использованием ШИМ.

А что конкретно не получается ?
Re: не получается написать программку начинающему
Добавлено: Ср янв 29, 2014 19:52:09
Stalker007
А если у меня при динамической индикации на 4-х разрядном семисегментнике программно регулируется яркость - это ШИМ или нет?
Re: не получается написать программку начинающему
Добавлено: Чт янв 30, 2014 00:21:03
Alexeyslav
Яркость можно регулировать разными методами, например аналоговым регулируя ток через сегменты...
ШИМ
почему нельзя использовать полу-аппаратный? Берем таймер с регистром сравнения.
Можно, обычно так и делают... но во первых, регистра сравнения нужно ТРИ, а в таймерах их обычно только пара, и получается что надо играть постоянно в шашечки - по мере работы таймера постоянно переставлять в регистр сравнения следующее значение. И это все на фоне прерываний, а если значения отличаются всего на 1 единицу? пока обрабатываем предыдущий, таймер перескакивает через эту единицу и следующее совпадение будет только когда он пройдет еще один круг. Это еще не учитывая части алгоритма который будет решать кому первым идти на сравнение кому вторым и третьим... получится запутанно и медленно. Обычный полностью программный ШИМ на этом фоне только выиграет.