Микросекундная пауза в ШИМ на таймере T0.

Все о микроконтроллерах: AVR, PIC, STM8, STM32, Arduino, Altera, Xilinx, все что угодно. Этот раздел для всего что клацает байтиками.
Post Reply
AlFedorov
Posts: 31
Joined: 24 Dec 2013, 18:47

Микросекундная пауза в ШИМ на таймере T0.

Post by AlFedorov »

Здравствуйте, уважаемые форумчане! Помогите пожалуйста разобраться.

Запускаю микроконтроллер atmega8515 (в редакторе code vision avr) в режиме шим-модуляции.
Вывожу шим на ножку OC0/T0. Работаю на частоте 1 МГц.

Выставляю вручную число в регистре сравнения OCR0 и регулирую скважность шим-сигнала.
Программка простейшая:

#include <mega8515.h>

void main(void)
{
DDRB = 0b00000001; // Настраиваем 0-пин порта B на вывод сигнала (для ШИМа).

TCCR0 = 0b01111001; // TCCR0=0b01 11 1 001 - настраиваем таймер на режим Fast PWM.

while(1) // Бесконечный цикл.
{
OCR0 = 0; // Выставляем вручную значение в регистре сравнения. Чем ближе к 0, тем шире импульс и короче пауза.
}

}



При OCR0 = 0 скважность, по идее, должна отсутствовать, и должен идти сплошной сигнал (максимальная мощность).
Однако через каждые 254 микросекунды сплошной сигнал прерывается на 1 микросекунду (1 такт микроконтроллера).

Погонял программу в AVR Studio. Оказалось, при сбросе счетного регистра (который длится как раз 1 такт) порт почему-то отключается, и тут же включается снова.

Подскажите пожалуйста, отчего такое происходит? Может какие-то дополнительные настройки режима требуются?

Хочу использовать шим-модуляцию для управления киловаттными электродвигателями через мощные мосфет-транзисторы. Поэтому любые подобные провалы сигнала (на такой большой мощности и на такой высокой частоте) приведут к ненужному открыванию транзисторов и к дополнительному перегреву.

ImageШИМ в режиме сравнения.JPG
User avatar
BSVi
Адепт
Posts: 3577
Joined: 15 Mar 2011, 12:32
Location: Киев

Re: Микросекундная пауза в ШИМ на таймере T0.

Post by BSVi »

Так оно и будет. Где-то в эррате это написано и там предлагается решение - просто настраивать ножку как вывод и выдавать постоянно логическую 1.
AlFedorov
Posts: 31
Joined: 24 Dec 2013, 18:47

Re: Микросекундная пауза в ШИМ на таймере T0.

Post by AlFedorov »

Спасибо большущее, Сергей!
Решил проблему перенастройкой с режима Fast PWM на решим шима с коррекцией фазы Phase Correct PWM, вот так:
TCCR0 = 0b01110001;
У него проблем с выбросами нет.
Post Reply