Страница 1 из 1

атмега8 ШИМ максимальная частота.

Добавлено: Чт апр 16, 2009 23:55:27
Rett
Хочу сделать небольшой преобразователь как генератор хочу взять атмегу8 хотел бы узнать максимальную частоту ШИМа. и если можно то и код, желательно на gcc.

Добавлено: Пт апр 17, 2009 00:05:48
__Alexander
Частота шима задается таймером, частота таймера задается внутренним генератором или внешним кварцем. Вот и весь ответ.

Добавлено: Пт апр 17, 2009 00:26:41
Rett
__Alexander писал(а):Частота шима задается таймером, частота таймера задается внутренним генератором или внешним кварцем. Вот и весь ответ.
хорошо, тогда сделать генератор на 100-200кГц на атмеге8 при 8МГц кварце будет без проблем.. правильно?
может есть какой-нибудь пример кода? а то смотрю в нете там только какие-то не-очень рабочие и до 58кГц

Добавлено: Пт апр 17, 2009 00:44:47
__Alexander
Непонятно только одно, если вам генератор нужен, то зачем ШИМ?

А пример кода вот:

ICR1 = 1000;
TCCR1A = 0xC2;
TCCR1B = 0x19;
TIMSK |= 0x04;

Этими регистрами задаете частоту и остальные параметры

OCR1A = 800;

Этим изменяете скважность.

А лучше в даташит.

Добавлено: Пт апр 17, 2009 07:50:33
Yellow Tiger
__Alexander писал(а):Непонятно только одно, если вам генератор нужен, то зачем ШИМ?
Вероятно, за тем и ШИМ, что нужен не генератор:
Rett писал(а):Хочу сделать небольшой преобразователь

Добавлено: Пт апр 17, 2009 14:11:25
Барсик
Если делать нормальный аппаратный ШИМ с регулировкой скважности от 1/255 до 255, то надо его делать на таймере 0. Максимальная частота при тактовой 8 МГц получится 8000/256 = 31 КГц. Если делать более "точный" ШИМ на таймере1, то частота будет ещё меньше...
Вот как я делал для ATtiny13:

Код: Выделить всё

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 9600,000 kHz
// Mode: Fast PWM top=FFh
// OC0A output: Non-Inverted PWM
// OC0B output: Disconnected
TCCR0A=0x83;
TCCR0B=0x01;