Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Тема закрыта

ATmega16a ШИМ и частота

Чт июл 19, 2012 19:01:00

Значениями (0<<CS12)|(0<<CS11)|(1<<CS10) задаю минимально возможный делитель.
Как можно увеличить частоту импульсов в 10 раз ?

Код:
.macro eout

   ldi ram23, @1
   out @0,ram23

.endmacro


Код:
eout TCCR1B, 0x00;  //stop Timer

eout TCNT1H, 0xFC;  // 11111100 
eout TCNT1L, 0x01;  // 00000001 

/* значение в 16 битном регистре OCR1A определяет величину генерируемого ШИМ сигнала на ножке PD5

// Скважность 50%
eout OCR1AH , 0x01; 
eout OCR1AL , 0xff;

/* регистр OCR1A состоит из двух 8-ми битных регистров  OCR1AH и OCR1AL запись в них нужно проводить в указанной последовательности! */

eout OCR1BH , 0x03;
eout OCR1BL , 0xFF;

eout ICR1H , 0x03;
eout ICR1L , 0xFF;

eout TCCR1A , 0x83;  // 10000011 
eout TCCR1B , (1<<CTC1)|(0<<CS12)|(0<<CS11)|(1<<CS10);  // 00001001 - start Timer

Re: ATmega16a ШИМ и частота

Чт июл 19, 2012 20:29:19

Взять кварц в 10 раз больше, иначе никак. Можно сделать программно-аппаратно, но за счет уменьшения разрядности.

Re: ATmega16a ШИМ и частота

Чт июл 19, 2012 20:37:39

Engineer_Keen писал(а):Можно сделать программно-аппаратно, но за счет уменьшения разрядности.

А как именно ?

Re: ATmega16a ШИМ и частота

Чт июл 19, 2012 22:07:09

Задействовать режим CTC, тогда верхним пределом будет не 0xFFFF, а число в OCR1A, т.е. можно сделать в 2,4,8 и.т.д раз быстрее (на самом деле даже не обязательно в степень двойки, но так удобнее), в прерывании по совпадению с OCR1A ставить выход в 1. А регистр OCR1B использовать как величину ШИМ и в его прерывании обнулять выход.
Ну и еще в 16-й меге есть железные режимы FAST и PHASE CORRECT PWM с использованием 8,9 и 10 бит, но это намного быстрее чем в 10 раз.

Re: ATmega16a ШИМ и частота

Чт июл 19, 2012 22:14:26

sx386 писал(а):Как можно увеличить частоту импульсов в 10 раз ?


Если нужно сдвинуть спектр ШИМ-сигнала максимально вверх по частоте, но не хочется терять разрешение ШИМ, можно сделать программный "довесок" к ШИМ в виде сигма-дельта: viewtopic.php?p=1344737#p1344737
Тема закрыта