ATMEGA8 режимы таймера CTC или PWM?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Грызет канифоль
Сообщения: 297
Зарегистрирован: Пт ноя 13, 2009 10:43:31

Сообщение tuco2009 »

Мяу, ТОВАРИЩИ! Надо сделать генератор-ШИМ на МК. Не могу что-то разобраться с таймером1 MEGA8. Режим СТС мне подходит, поскольку при нем обнуляется таймер при достижении значения в регистре OCR1B и начинает счет сначала; также прикотячил изменение лог. уровня на OCR1 выводе по достижении значения в OCR1A. НО как сделать,чтобы бит на ноге меги (OCR1) обнулялся при достижении значения OCR1B (обнуления счетчика)? Возможно и другое решение вопроса, только без прерываний или больших величин счетчика (например обнуление бита по достижения 0xff, как это реализовано в PWM).
Задача просто такая: надо чтобы частота на ноге была близкая к частоте кварца, например кварц 8 Мгц, а на ноге меандр 2 МГЦ, соответственно значения таймера при совпадении 2 - установить бит, при достижении 4 - удалить бит. Потом еще надо простейший ШИМ на 4 положения: например, на 1 - установить, на 4 удалить и т.д. Вот программный код и проект AVRStudio 4,14.

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

		ldi		FreqRegister,8
		ldi		FreqPause,3
		ldi		temp,6
		out		OCR1AL,FreqRegister	;Общий период импульсов
		out		OCR1BL,FreqPause		;Место спада (период/2)
		out		ICR1L,temp
		
		ldi	temp,0b00010000		;{Инит Таймера 1
								;Выход СОМ1Б
		out	TCCR1A,temp			;Он выдает разную частоту
		ldi	temp,0b00011001		;следования посылок импульсов и как ШИМ
		out	TCCR1B,temp			;СТС режим (WGM2,3)
								;Изменение сигнала по OCR1B,сброс таймера
								;по OCR1A		}
Вложения
Test.rar
Проект Студии
(5.09 КБ) 155 скачиваний
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18859
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

я так и не понял, в чем проблема: есть режим FastPWM и просто PWM (ну и PhaseCorrect PWM) у таймера №1 - выберите нужный и просто используйте его возможности, вот и все. только для ШИМ прерывания не требуются, все аппаратно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Открыл глаза
Сообщения: 48
Зарегистрирован: Пн фев 01, 2010 22:48:14

Сообщение Labus »

Еще есть мастер для CVAVR ICC WinAVR для интерактивной настройки таймеров и ШИМ :lol:
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

Labus писал(а):Еще есть мастер для CVAVR ICC WinAVR для интерактивной настройки таймеров и ШИМ :lol:
Человек пишет на асме.
Если хочешь использовать СТС, тогда OCR1A - будет определять частоту, а OCR1B - заполнение ШИМ, есно вывод OCR1B
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Грызет канифоль
Сообщения: 297
Зарегистрирован: Пт ноя 13, 2009 10:43:31

Сообщение tuco2009 »

В режимах PWM таймер досчитывает до конца 8, 10, 13 бит, а мне надо 3-4 бита.
В режиме СТС не могу понять как осуществляется ркгулировка ШИМ и частоты. В студии отлаживал: бит на выводе в первое совпадение (OCR1B) устанавливается, потом после сброса таймера по OCR1A и следующем совпадении OCR1B удаляется, не пойму как регулируется ШИМ, если сумма неизменна, иначе говоря частота меняется, а спад и нарастание не меняются...

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

	  _______________			____		____					____
;	  |	  			|			|							|	|
;	  |		  		|			|							|	|
;	  |		  		|			|							|	|
;	  |		  		|			|							|	|
;  	|		  		|			|							|	|
;_____|	  			|___________|	|_______|	___________________|	|
;OCR1B|OCR1A|OCR1B   |OCR1A|OCR1B
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Для начала, режим СТС не формирует ШИМ. Он формирует (максимум) меандр, путем переброса состояния вывода. Если нужно ШИМ на основе СТС, то тут придется задать, например, для OCRA установку в 1, а по совпадению OCRB (OCRB<OCRA) сбрасывать (программно) в обработке прерывания этот вывод в 0. (Безотносительно к конкретному таймеру)
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Реклама
Грызет канифоль
Сообщения: 297
Зарегистрирован: Пт ноя 13, 2009 10:43:31

Сообщение tuco2009 »

тогда грустно получается - режим PWM работает в режиме ШИМ с фиксированной частотой (имеется ввиду плавно не изменяется), а режим CTC только плавно меняет частоту...Так чтоли?
Грызет канифоль
Сообщения: 297
Зарегистрирован: Пт ноя 13, 2009 10:43:31

Сообщение tuco2009 »

ARV писал(а):я так и не понял, в чем проблема: есть режим FastPWM и просто PWM (ну и PhaseCorrect PWM) у таймера №1...
Пока что-то не нашел режим как регулировать и частоту и импульс сдвигать вправо-влево...
ARV писал(а):.. только для ШИМ прерывания не требуются, все аппаратно.
Вот так то как раз и надо, с прерываниями каждый сможет...
Грызет канифоль
Сообщения: 297
Зарегистрирован: Пт ноя 13, 2009 10:43:31

Сообщение tuco2009 »

GP1 писал(а): Если хочешь использовать СТС, тогда OCR1A - будет определять частоту, а OCR1B - заполнение ШИМ, есно вывод OCR1B
OCR1A+OCR1B = частота; импульс не двигается, если увеличивать один из регистров, просто удлинняется период и все, по достижении OCR1B на ноге напруга появляется далее считает до OCR1A и напруга не исчезает как, хотелось бы мне, а считает еще до OCR1B и только потом снимает с ноги лог 1...вот такая загогулина...
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18859
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

на сколько я помню, режим FastPWM можно настроить на "вершину" счета от 3-битов, т.е. желаемые 3-4 бита для счетчика делаются аппаратно и без проблем. изучайте документацию - проще ШИМа аппаратного может быть только молоток :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

Сообщение Барсик »

tuco2009 писал(а):В режимах PWM таймер досчитывает до конца 8, 10, 13 бит...
Ничего подобного. Есть режим "Fast PWM top=ICR1" Докуда считать - записать в регистр ICR1. А докуда "шимить" - в регистры OCR1A и OCR1B.
Грызет канифоль
Сообщения: 297
Зарегистрирован: Пт ноя 13, 2009 10:43:31

Сообщение tuco2009 »

Барсик писал(а): Ничего подобного. Есть режим "Fast PWM top=ICR1" Докуда считать - записать в регистр ICR1. А докуда "шимить" - в регистры OCR1A и OCR1B.
Неа, не работает, вот проект. Считает до конца 9 бит и 10 бит, может чего неправильно делаю, как по пуководству выставляю режим 14 (у меня считает не до ICR1, а до 9 бит) или 15 (10 бит) по табл 39. Фото ниже
Вложения
DocMega8.jpg
Фото страницы доков
(189.91 КБ) 745 скачиваний
Test.rar
Проект студии
(5.08 КБ) 234 скачивания
Грызет канифоль
Сообщения: 297
Зарегистрирован: Пт ноя 13, 2009 10:43:31

Сообщение tuco2009 »

ARV писал(а):на сколько я помню, режим FastPWM можно настроить на "вершину" счета от 3-битов, т.е. желаемые 3-4 бита для счетчика делаются аппаратно и без проблем. изучайте документацию - проще ШИМа аппаратного может быть только молоток :)))
Чет не нашел в доках режима на 3 бита , фото доков в предыдущем моем посте
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18859
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

студия лажает с FastPWM - почитайте в хелпе о том, что она умеет и чего не умеет.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Грызет канифоль
Сообщения: 297
Зарегистрирован: Пт ноя 13, 2009 10:43:31

Сообщение tuco2009 »

ЗАМУРРРРРРЧАТЕЛЬНО! работает! Спасибо ARV и всем кто помогал! Режим 8,9 по табл 39 документации (PWM, Phase and Frequency Correct). Шпротеус показывает правильно, а студия в этом режиме считает до конца!!! Скачаю новую студию 4,18 может она не будет так делать. Ну да ладно - самое главное - РАБОТАЕТ! Спасибо за участие в чужом горе!
Закрыто

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