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

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

Добавлено: Чт июл 19, 2012 19:01:00
sx386
Значениями (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
Engineer_Keen
Взять кварц в 10 раз больше, иначе никак. Можно сделать программно-аппаратно, но за счет уменьшения разрядности.

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

Добавлено: Чт июл 19, 2012 20:37:39
sx386
Engineer_Keen писал(а):Можно сделать программно-аппаратно, но за счет уменьшения разрядности.
А как именно ?

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

Добавлено: Чт июл 19, 2012 22:07:09
Engineer_Keen
Задействовать режим 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 раз ?
Если нужно сдвинуть спектр ШИМ-сигнала максимально вверх по частоте, но не хочется терять разрешение ШИМ, можно сделать программный "довесок" к ШИМ в виде сигма-дельта: http://radiokot.ru/forum/viewtopic.php? ... 7#p1344737