реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ATMEGA128 и ШИМ
Oleg_IT
сообщение Feb 16 2010, 19:32
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Ни как не могу заставить OC1A работать в режиме Fast PWM, меняется частота. На OC0 всё нормально. Чего-то я не пойму. Какие там биты, регистры ставить нужно?
Go to the top of the page
 
+Quote Post
Savrik
сообщение Feb 16 2010, 20:37
Сообщение #2


наблюдаю..
***

Группа: Свой
Сообщений: 291
Регистрация: 11-12-06
Из: Украина
Пользователь №: 23 369



Страница 135 даташита на ATMega128 (Rev. 2467S-07/09) http://www.atmel.com/dyn/resources/prod_do...nts/doc2467.pdf , регистр TCCR1A:
Цитата
Combined with the WGMn3:2 bits found in the TCCRnB Register, these bits control the counting
sequence of the counter, the source for maximum (TOP) counter value, and what type of waveform
generation to be used, see Table 61.....


Сообщение отредактировал Savrik - Feb 16 2010, 20:38
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Feb 17 2010, 18:59
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Прошёл все сочетания бит WGM13:0. Меняется только частота, ШИМ ни как!
Go to the top of the page
 
+Quote Post
SysRq
сообщение Feb 17 2010, 22:47
Сообщение #4


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Допустим, при COM1A1 = 1, COM1A0 = 1 получим режим: установка OC1A в 1 при совпадении TCNT1 с OCR1A, сброс OC1A в 0 при TCNT1 = 0. Значения для ШИМ писать в OCR1A по переполнению (флаг TOV1).
Счет может быть от 0 до, или: 0x00FF, 0x01FF, 0x03FF, ICR1, OCR1A, - выбирается значением WGM13..0.

PS: не забыть DDRB |= (1 << 5) в инициализации.
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Feb 18 2010, 18:41
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Цитата(Oleg_IT @ Feb 17 2010, 21:59) *
Прошёл все сочетания бит WGM13:0. Меняется только частота, ШИМ ни как!

Это похоже на режим CTC.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Feb 19 2010, 17:36
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Но обещано Fast PWM. Ладно, перешёл на другой таймер.

SysRq - сложно это. Я так понял в этом случае прерывания нужны, что бы "Значения для ШИМ писать в OCR1A по переполнению (флаг TOV1)." или в основном цикле проверять флаг. В любом случае сложно, легче таймер сменить.
Go to the top of the page
 
+Quote Post
Savrik
сообщение Feb 20 2010, 12:20
Сообщение #7


наблюдаю..
***

Группа: Свой
Сообщений: 291
Регистрация: 11-12-06
Из: Украина
Пользователь №: 23 369



Почему не получается? Дайте пример Вашего кода.
Вот что должно быть: смотрим таблицу 61, ищем режим Fast PWM, 10бит это режим№7. Записываем значения битов:
WGM13 = 0 ; WGM12 = 1 (обратите внимание, что эти биты находится в регистре TCCR1B); WGM11 = 1; WGM10 = 1. Далее, исходя из таблицы 59, выбираем режим (то, что будет на выходе ШИМов). Возьмем, к примеру, не инвертирующий выход, это COM1A1 = 1, COM1A0 = 0. Теперь выбираем частоту. Это биты CS12, CS11, CS10 регистра TCCR1B. Выберем частоту системного таймера, без деления CS12 = 0, CS11 = 0, CS10 = 1.
Теперь записываем значения в регистры
Код
TCCR1A = 0b10000011; //0x83;
TCCR1B = 0b00001001; //0x09

Записывая в OCR1AH и OCR1AL 0..1023(так как ШИМ 10-ти битный) определяют величину ШИМ:
Код
uint value = 512;
OCR1AH = (char)(value>>8);
OCR1AL = (char)value;

Все, должно работать. Если не можете разобраться в регистрах, советую CodeVisionAVR, там есть генератор начального кода, очень наглядно и поможет разобратся. Так же советую пройти сюда http://[banned]/. Все вычисления заняли 5 минут.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 18:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.02926 секунд с 7
ELECTRONIX ©2004-2016