Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Темните. И каков алгоритм? Неужто вычислять длительность между переходами всех каналов PWM и перегружать таймер? Что там будет за логика? А как без прерываний? Вот пример

Отправлено Леонид Иванович 20 августа 2008 г. 01:55
В ответ на: Это что, на каждую точку по прерыванию? А потом ещё на 8 каналов? Расточительно. По-моему достаточно 9 прерываний на ОДИН период шим. отправлено GM 20 августа 2008 г. 01:16

программного PWM, 8 каналов, 256 точек.
Частота PWM будет в 256 раз ниже частоты прерываний таймера.
Даже если писать на асме, прерывание вместе с накладными расходами занимает примерно 30 тактов, поэтому даже при 100%-загрузке процессора не позволит получить на тактовой 20 МГц частоту PWM более 2.6 кГц.


char a,b,c,d,e,f,g,h; //значения PWM
char pwm;

В прерывании таймера:

(a > pwm)? PortPWM_A_1 : PortPWM_A_0;
(b > pwm)? PortPWM_B_1 : PortPWM_B_0;
(c > pwm)? PortPWM_C_1 : PortPWM_C_0;
(d > pwm)? PortPWM_D_1 : PortPWM_D_0;
(e > pwm)? PortPWM_E_1 : PortPWM_E_0;
(f > pwm)? PortPWM_F_1 : PortPWM_F_0;
(g > pwm)? PortPWM_G_1 : PortPWM_G_0;
(h > pwm)? PortPWM_H_1 : PortPWM_H_0;
pwm++;




Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
умножьте 2 на три:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru