Atmega88 - 10 Pwm

16-12-2014, 03:28 От: admin Посмотрели: 441
Доброго времени суток, Уважаемые!



Имею задачу сделать 10 ШИМ со следующими характеристиками:

— Кол-во шагов 1000

— Минимальная длинна импульса 10us

— Максимальная длинна импульса 1000us

— Тактовая чистота 100Hz



Решать задачу я принялся через 8-ми битный таймер.

Вот пример кода

// Atmega88PU

#include <avr/io.h>
#define F_CPU 8000000
#include <avr/interrupt.h>
#include <util/delay.h>

void configure_pwm() {
TIMSK0 |= (1 << TOIE0); // Enable overflow interrupt
TCCR0A |= (1<<WGM00) | (1<<WGM01);
TCCR0B |= (1<<CS00); // divide by as is
sei();
}

int main(void) {
configure_pwm();
for (;;) {
continue;
}
}

volatile uint8_t pwm_speed[4] = {0};
volatile uint8_t pwm_pin[4] = {PORTC4, PORTD2, PORTD4, PORTD6};
volatile uint8_t * pwm_port[] = {&PORTC, &PORTD, &PORTD, &PORTD};
volatile uint8_t counter = 0x0;

ISR(TIMER0_OVF_vect)
{
if (counter == 0xFF) {
counter = 0x0;
for (int i=0;i<=4;i++) {
if (pwm_speed[i] != 0x00) {
*pwm_port[i] |= (1 << pwm_pin[i]);
}
}
return;
}
for (int i=0;i<=4;i++) {
if (pwm_speed[i] == counter) {
*pwm_port[i] |= (0 << pwm_pin[i]);
}
}
counter++;
}



Ввиду того что новичок в С и в AVR то имею ряд вопросов:

1) Правильно ли я делаю?

2) Не будет ли отжирать 99.9% процесорного времени данная конструкция ?

3) Как делать правильно?
Раздел: AVR

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться, либо войти на сайт под своим именем.

Обсудить на форуме


На момент добавления Atmega88 - 10 Pwm все ссылки были рабочие.
Все публикации статей, книг и журналов, представлены на этом сайте, исключительно для ознакомления,
авторские права на эти публикации принадлежат авторам статей, книг и издательствам журналов!
Подробно тут | Жалоба
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Популярные новости
Календарь новостей
«    Апрель 2024    »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930