И снова ШИМ, помогите новичку.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
ipf
Встал на лапы
Сообщения: 131
Зарегистрирован: Вт сен 20, 2011 18:41:41
Откуда: Вьетнам

И снова ШИМ, помогите новичку.

Сообщение ipf »

Значит проблема заключается в следующем, написал код под atmega16 на codevisionavr , смысле что поочередно загораются светодиоды , плавно и так-же плавно тухнут, используя программный шим,но код очень не красивый
В начале был такого рода
PORTC.0=1;
wait1();
PORTC.1=1;
wait1();
намного легче было реализовать программный ШИМ, чтобы когда загорались и тухли это происходило плавно, то есть для каждого порта при включении повышал , а при отключении понижал, правда код огромный но понятный, теперь оптимизировал и получил вот такой вариант
for (mask = 0x01; mask; mask <<= 1)
{
PORTC |= mask;
wait1();
}
wait1();
for (mask = 0xF7; mask; mask <<= 1)
{
PORTC &= mask;
wait1();
}
}
теперь не могу понять как сделать тут шим, код получился намного меньше и красивее но.. ) Пожалуйста помогите советом. Спасибо
Реклама
ipf
Встал на лапы
Сообщения: 131
Зарегистрирован: Вт сен 20, 2011 18:41:41
Откуда: Вьетнам

Re: И снова ШИМ, помогите новичку.

Сообщение ipf »

ну или подскажите другой вариант, смысл в том чтоб плавно загорался первый светодиод, на ним второй, но первый горел, затем трети, первый и второй горели .....
Реклама
ipf
Встал на лапы
Сообщения: 131
Зарегистрирован: Вт сен 20, 2011 18:41:41
Откуда: Вьетнам

Re: И снова ШИМ, помогите новичку.

Сообщение ipf »

Вопрос исчерпан, расскажу как сделал, может пригодится кому .

PORTC |= mask; заменил на led_on(mask);
Затем создал функцию led_on с ШИМ и все работает
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»