не получается написать программку начинающему

Обсуждаем контроллеры компании Atmel.
Ответить
grega1
Родился
Сообщения: 4
Зарегистрирован: Пн янв 27, 2014 16:58:43

не получается написать программку начинающему

Сообщение grega1 »

Нужно написать программку на Atmega48 в CodevisionAVR
Используя PORTD 0 1 2
С начало загорается на 0 канале диод потом постепенно переходи на 1 потом также 2 и обратно
(плавно переходя с одного на другой) без использования ШИМ и с использованием ШИМ. :cry:
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: не получается написать программку начинающему

Сообщение Alexeyslav »

Без использования ШИМ - НИКАК, выводы-то цифровые.
Если использовать аппаратный ШИМ, их выходы строго привязаны к конкретным выводам контроллера, на PORTD 0 1 2 таким образом отразить будет весьма гиморно и с некоторыми ограничениями. Остается только программный ШИМ - а тут уж кто во что горазд, крутимся в цикле от 0 до 255 и сравниваем с тремя переменными - если больше переменной цикла выключаем соответствующий порт, если меньше - включаем. и делов-то.

Попутно изменяем значение в этих трех переменных каждый N-й проход цикла, значение N зависит от требуемой скорости мигания и частоты программного ШИМ-а. Например если выйдет частота ШИМ 1кГц, то изменяя каждые 10 проходов получим скорость 100 едениц/сек
Аватара пользователя
Pika4u
Поставщик валерьянки для Кота
Сообщения: 2064
Зарегистрирован: Пт апр 24, 2009 11:39:16
Откуда: г.Оренбург

Re: не получается написать программку начинающему

Сообщение Pika4u »

Хм, а почему нельзя использовать полу-аппаратный? Берем таймер с регистром сравнения. По совпадению значения опускаем нужные выводы в 0, по переполнению-поднимаем в 1. :))
Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: не получается написать программку начинающему

Сообщение Аlex »

grega1 писал(а):Используя PORTD 0 1 2
С начало загорается на 0 канале диод потом постепенно переходи на 1 потом также 2 и обратно
(плавно переходя с одного на другой) без использования ШИМ и с использованием ШИМ. :cry:
А что конкретно не получается ?
Аватара пользователя
Stalker007
Говорящий с текстолитом
Сообщения: 1502
Зарегистрирован: Ср сен 08, 2010 20:33:39
Откуда: Воронеж

Re: не получается написать программку начинающему

Сообщение Stalker007 »

А если у меня при динамической индикации на 4-х разрядном семисегментнике программно регулируется яркость - это ШИМ или нет?
С шерстью на сайте постоянные проблемы. Обещали исправить, но никак. Вот работающая ссылка, если кому нужно. http://radiokot.ru/circuit/power/charger/40/
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: не получается написать программку начинающему

Сообщение Alexeyslav »

Яркость можно регулировать разными методами, например аналоговым регулируя ток через сегменты...

ШИМ


почему нельзя использовать полу-аппаратный? Берем таймер с регистром сравнения.

Можно, обычно так и делают... но во первых, регистра сравнения нужно ТРИ, а в таймерах их обычно только пара, и получается что надо играть постоянно в шашечки - по мере работы таймера постоянно переставлять в регистр сравнения следующее значение. И это все на фоне прерываний, а если значения отличаются всего на 1 единицу? пока обрабатываем предыдущий, таймер перескакивает через эту единицу и следующее совпадение будет только когда он пройдет еще один круг. Это еще не учитывая части алгоритма который будет решать кому первым идти на сравнение кому вторым и третьим... получится запутанно и медленно. Обычный полностью программный ШИМ на этом фоне только выиграет.
Ответить

Вернуться в «AVR»