Atmega8 OCR1A и OCR1B 2 шим канала
Добавлено: Пт ноя 18, 2016 18:49:46
всем привет! Ознакомившись с ардуиной и немного попрактиковавшись плавно перешел игры с Атмега8 и Аттини13. Дается очень тяжело, но шаг за шагом разобрался с АЦП и прочими мелочами. Вот сейчас мучаю таймера. И есть моменты которые очень хотелось бы обсудить с более опытными людьми.
Можно ли реализовать 2 независимых ШИМа на таймере1. Что бы OCR1A и OCR1B выдавали 2 каждый свой независимый шим?
вот на данный момент настройки регистров, но когда я управляю каждыйм каналом то они как то непонятно зависимы друг от друга.
Можно ли реализовать 2 независимых ШИМа на таймере1. Что бы OCR1A и OCR1B выдавали 2 каждый свой независимый шим?
вот на данный момент настройки регистров, но когда я управляю каждыйм каналом то они как то непонятно зависимы друг от друга.
Код: Выделить всё
/*** Настройка Таймера для PWM ***/
TCCR1A |= (1 << COM1A1)|(0 << COM1A0) // Установим биты COM1A1-COM1A0:0b10, означает сброс вывода канала A при сравнении
| (1 << COM1B1)|(0 << COM1B0)
| (0 << WGM11)|(1 << WGM10); // Установим биты WGM13-10:0b1110, согласно таблице это
TCCR1B |= (0 << WGM13)|(1 << WGM12) // будет режим - FAST PWM, где верхний предел счета задается битом ICR1
|(0 << CS12)|(0 << CS11)|(1 << CS10); // Битами CS12-10:0b001 задаем источник тактового сигнала для таймера МК, включен без делителя
TCNT1 = 0x00; // начальная установка счетчика
ICR1 = 0xFF; // задаем период ШИМ, здесь у нас число 255,
OCR1A = 0x00; // начальный коэффициент заполнения ШИМ
OCR1B = 0x00; // начальный коэффициент заполнения ШИМ