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

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
sx386
Потрогал лапой паяльник
Сообщения: 394
Зарегистрирован: Сб апр 28, 2012 16:04:14

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

Сообщение 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
Критикуешь - предлагай. Предлагаешь - делай. Делаешь - отвечай.
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

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

Сообщение Engineer_Keen »

Взять кварц в 10 раз больше, иначе никак. Можно сделать программно-аппаратно, но за счет уменьшения разрядности.
Реклама
Аватара пользователя
sx386
Потрогал лапой паяльник
Сообщения: 394
Зарегистрирован: Сб апр 28, 2012 16:04:14

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

Сообщение sx386 »

Engineer_Keen писал(а):Можно сделать программно-аппаратно, но за счет уменьшения разрядности.
А как именно ?
Критикуешь - предлагай. Предлагаешь - делай. Делаешь - отвечай.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

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

Сообщение Engineer_Keen »

Задействовать режим CTC, тогда верхним пределом будет не 0xFFFF, а число в OCR1A, т.е. можно сделать в 2,4,8 и.т.д раз быстрее (на самом деле даже не обязательно в степень двойки, но так удобнее), в прерывании по совпадению с OCR1A ставить выход в 1. А регистр OCR1B использовать как величину ШИМ и в его прерывании обнулять выход.
Ну и еще в 16-й меге есть железные режимы FAST и PHASE CORRECT PWM с использованием 8,9 и 10 бит, но это намного быстрее чем в 10 раз.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

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

Сообщение Леонид Иванович »

sx386 писал(а):Как можно увеличить частоту импульсов в 10 раз ?
Если нужно сдвинуть спектр ШИМ-сигнала максимально вверх по частоте, но не хочется терять разрешение ШИМ, можно сделать программный "довесок" к ШИМ в виде сигма-дельта: http://radiokot.ru/forum/viewtopic.php? ... 7#p1344737
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»