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

 
 
> 8 канальный шим на avr, Как пеализовать 8 канальный шим
at90
сообщение May 11 2005, 13:59
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 866
Регистрация: 31-03-05
Из: Краснодар
Пользователь №: 3 814



Люди как реализовать 8 канальный 8 битный программный шим для управления светодиодами на С. sad.gif


--------------------
<<Первая производная от чужой идеи - уже твоя идея.>>
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
okela
сообщение May 11 2005, 14:47
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 165
Регистрация: 11-01-05
Из: Украина, г. Одесса
Пользователь №: 1 896



Цитата(at90 @ May 11 2005, 16:59)
Люди как реализовать 8 канальный 8 битный программный шим для управления светодиодами на С. sad.gif
*


Вобщем-то без разницы на каком языке реализовать этот алгоритм.
Если в общих чертах то это в моём представлении выглядит примерно так.

Пишется процедура прерывания для таймера работающего в автомате, который работает с частотой достаточной для заданной точности (fшим*256).
Объявляются 8 переменных, которые будут определять скважность по каждому каналу ШИМ (например в %). И каждая из этих переменных привязывается к одному биту какого-то 8-битного порта (для 50% пол-периода -0, пол-периода -1).
По каждому прерыванию таймера делается обновление информации выводимой в порт по всем разрядам.
Go to the top of the page
 
+Quote Post
at90
сообщение May 11 2005, 15:24
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 866
Регистрация: 31-03-05
Из: Краснодар
Пользователь №: 3 814



Цитата(okela @ May 11 2005, 17:47)
Цитата(at90 @ May 11 2005, 16:59)
Люди как реализовать 8 канальный 8 битный программный шим для управления светодиодами на С. sad.gif
*


Вобщем-то без разницы на каком языке реализовать этот алгоритм.
Если в общих чертах то это в моём представлении выглядит примерно так.

Пишется процедура прерывания для таймера работающего в автомате, который работает с частотой достаточной для заданной точности (fшим*256).
Объявляются 8 переменных, которые будут определять скважность по каждому каналу ШИМ (например в %). И каждая из этих переменных привязывается к одному биту какого-то 8-битного порта (для 50% пол-периода -0, пол-периода -1).
По каждому прерыванию таймера делается обновление информации выводимой в порт по всем разрядам.
*


я так реализовал шим на 16 градаций
Сделал массив на 16 элементов
Каждый элемент массива выводил в порт за один тик тамера.
Изменяя биты изменял яркость.
Но на 256 делать массив на 256 -зто как то неразумно.
Слишком много уходит памяти


--------------------
<<Первая производная от чужой идеи - уже твоя идея.>>
Go to the top of the page
 
+Quote Post
TMX
сообщение May 12 2005, 14:31
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 19-01-05
Из: Москва
Пользователь №: 2 064



unsigned char PWM_cnt, PWM_x[8]; // лучше сделать регистровыми

interrupt timer_ISR // обработчик прерывания таймера
{
unsigned char mask, i;
if (++PWM_cnt == 0) // переполнение
PWM_PORT = 0;
for (i = 0, mask = 0x01; mask; i++, mask <<= 1)
if (++PWM_x[i] == 0)
PWM_PORT |= mask; // установка выходного бита
}
Go to the top of the page
 
+Quote Post
at90
сообщение May 12 2005, 14:38
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 866
Регистрация: 31-03-05
Из: Краснодар
Пользователь №: 3 814



Цитата(TMX @ May 12 2005, 17:31)
unsigned char PWM_cnt, PWM_x[8];      // лучше сделать регистровыми

interrupt timer_ISR                            // обработчик прерывания таймера
{
unsigned char mask, i;
  if (++PWM_cnt == 0)                      // переполнение
    PWM_PORT = 0;
  for (i = 0, mask = 0x01; mask; i++, mask <<= 1)
    if (++PWM_x[i] == 0)
      PWM_PORT |= mask;                  // установка выходного бита
}
*


А как мы задаём длительность каждого периода или у нас на выходе меандр?


--------------------
<<Первая производная от чужой идеи - уже твоя идея.>>
Go to the top of the page
 
+Quote Post
TMX
сообщение May 12 2005, 17:03
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 19-01-05
Из: Москва
Пользователь №: 2 064



Цитата(at90 @ May 12 2005, 17:38)
[А как мы задаём длительность каждого периода или  у нас на выходе меандр?
*

Скважность на каждом выходе порта PWM_PORT зависит от содержимого элемента PWM_x. Получается управление по фазе. Попробуйте в симуляторе посмотреть.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- at90   8 канальный шим на avr   May 11 2005, 13:59
|- - okela   Цитата(at90 @ May 11 2005, 18:24)я так реализ...   May 12 2005, 12:10
- - MicronSys   Написал на скорую руку ( VMLAB + WinAvr + Atmega8 ...   May 12 2005, 14:41
- - MicronSys   или так ( VMLAB 3.11 + WINAVR + ATMEGA8 ) #include...   May 12 2005, 14:50
|- - TMX   Цитата(MicronSys @ May 12 2005, 17:50) А Вы ...   May 12 2005, 17:10
- - MicronSys   { сount++; for(t=0;t<8;t++) if ...   May 13 2005, 06:11
|- - TMX   Цитата(MicronSys @ May 13 2005, 09:11)Этот ку...   May 13 2005, 07:17
- - at90   Перепробовал все куски кодов. Все работают нормаль...   May 18 2005, 03:50
- - sseett   Так и должно быть, ведь яркость свечения не линей...   May 18 2005, 04:07
|- - at90   Цитата(sseett @ May 18 2005, 07:07)Так и долж...   May 18 2005, 05:05
|- - at90   думаю надо составить талицу значений для разных гр...   May 18 2005, 05:08
- - at90   Интересно а как смешивают цвета шимом в светодиодн...   May 18 2005, 05:25
- - GeorgyBey   Цитата(at90 @ May 18 2005, 08:25)Интересно а ...   May 18 2005, 15:02
- - at90   Лучьше для шимов взять готовый драйвер! Есть D...   May 18 2005, 16:24
- - at90   А как реализовать драйвер на Плис. И какую нада Пл...   May 19 2005, 05:23


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

 


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


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