реклама на сайте
подробности

 
 
> Нужна помощь с написанием программы, ATmega16 ШИМ и т.д.
Begginer
сообщение Nov 4 2006, 23:39
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 4-11-06
Пользователь №: 21 982



Дорброго времени суток!
Потребовалась помощь в написании программы для Меги. Задача состоит вот в чем.
Есть три светодиода, разного цвета. Подключаются они к МК. На вход МК подаю байт цвета для оного светодиода, потом второго, и третего. В итоге, МК у меня выдает импульсы на выходе ШИМа для каждого светодиода и я получаю разные цвета, в зависимости от входных трех байт. Так вот нужно написать прогу для всего этого. Хочу расчитывать на вас, в частности, подскажите, каким образом сделать 3 шима? Буду очень признателен.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Begginer
сообщение Nov 5 2006, 18:26
Сообщение #2





Группа: Новичок
Сообщений: 6
Регистрация: 4-11-06
Пользователь №: 21 982



Я не говорю за меня. Как сделать ШИМ одноканальный то понятно, а вот как трех? Сделать ешще два выхода и по аналогии считать для них длительность??
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 6 2006, 01:05
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Begginer @ Nov 5 2006, 21:26) *
Я не говорю за меня. Как сделать ШИМ одноканальный то понятно, а вот как трех? Сделать ешще два выхода и по аналогии считать для них длительность??

Программно, без использования PWM.

простейший пример:
Код
unsigned char R = 255;
unsigned char G = 70;
unsigned char B = 50;

#define R_Led (PB0)
#define G_Led (PB1)
#define B_Led (PB2)

main()
{
    unsigned char cnt = 0;
    unsigned char PortBuf;
    DDRB = 0xFF;
    for(;;)
    {
        PortBuf = 0;
        if (R >= cnt)
           PortBuf |= (1 << R_Led);
        if (G >= cnt)
           PortBuf |= (1 << G_Led);
        if (B >= cnt)
           PortBuf |= (1 << B_Led);
        PORTB = PortBuf;
        cnt++;
    }
}


сделайте то же самое, только код перенесите в обработчик прерывания по переполнению например таймера 0.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 02:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01366 секунд с 7
ELECTRONIX ©2004-2016