ШИМ для avr

Обсуждаем контроллеры компании Atmel.
Ответить
ATH
Родился
Сообщения: 10
Зарегистрирован: Пн фев 04, 2013 13:42:48

Сообщение ATH »

Доброго времени суток. Пробовал сделать плавную регуляцию частоты на МК mega8 таймером T1. Включил режим СТС, но почему-то меняется только длительность сигнала, частота не меняется. Читал Белова, он с помощью записи различных значений в регистр сравнения меняет частоту, также почитал тут http://www.atmega8.ru/wiki/view/doc.24.html там пишут что "Если CTC1=1, то таймер возвращается в состояние 0x0000 по импульсу, следующему после совпадения счётчика и регистра сравнения OCR1A"- следовательно чем меньше значение в OCR1A, тем больше частота, или я что то не так понимаю?
#include <mega8.h
#include <delay.h>
char pwm=0;
voi
{
PORTB=0x30;
DDRB=0x2;

PORTC=0x00;
DDRC=0x00;

PORTD=0x00;
DDRD=0x00;

TCCR1A=0x83;
TCCR1B=0xC;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
TIMSK=0x00;

while (1)
{
if(PINB.4==0)
{
while(PINB.4==0){delay_ms(10);}
pwm=pwm+1;
if(pwm>1000){pwm=1000;};
}
if(PINB.5==0)
{
while(PINB.5==0){delay_ms(10);}
pwm=pwm-1;
if(pwm<2){pwm=1;};

}
OCR1A=pwm;
}


}
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2981
Зарегистрирован: Ср сен 28, 2011 22:18:14
Откуда: Москва

Сообщение les1982 »

Частота ШИМ Фиксированная
Меняется только скважность
Люди могут жить без мозгов.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

В CTC как раз частота меняется, но выбран ли этот режим не понятно, т.к. вместо имен битов тут "магические числа", а лезть в даташит за битами регистра влом...
Ответить

Вернуться в «AVR»