Страница 1 из 2
разные режимы работы ШИМ в Tiny13
Добавлено: Ср янв 30, 2013 12:04:15
uwrtey
речь пойдет об микроконтроллере Tiny13
вот датащит
http://www.promelec.ru/pdf/ATTINY2313.pdf исправлено (спасибо blackx за замечание )
http://www.promelec.ru/pdf/Attiny13.pdf
начал изучать разные режимы работы ШИМ. Почитал вот
вот эту статью.
И казалось бы, что я уже все понял, но открыв датащит на этот МК у меня появились некоторые сомнения и вопросы.
открываем датащит на странице 75 и смотрим таблицу №40
Спойлер

возьмем к примеру режим Fast PWM (быстрый ШИМ)
этого режима бывает два варианта (Mode 3 и Mode 7)
в варианте Mode 3 счетчик считает от нуля до 255 - с этим режимом все понятно и вопросов не возникает!
а вот в варианте Mode 7 - счетчик считает от нуля до OCR** - и вот тут странность. в этом режиме ни какой ШИМ не получится сделать! Для чего этот режим? и какое отношение он имеет к ШИМ ?
________________________
такая же ситуация обстоит с режимом PWM, Phase Correct ( ШИМ с точной фазой )
так же два варианта ( Mode 1 и Mode 5 )
с Mode 1 все понятно - тут счетчик считает от нуля до 255
с Mode 5 - точно такой же вопрос как и в режиме FAST PWM - тут счетчик считает от нуля до OCR**
_________________________
сам вопрос я выделил жирным шрифтом
Заранее Всем благодарен за ответы

Re: разные режимы работы ШИМ в Tiny13
Добавлено: Ср янв 30, 2013 12:18:50
blackx
uwrtey писал(а):речь пойдет об микроконтроллере Tiny13
Правильный datasheet
http://www.atmel.com/Images/doc2535.pdf
uwrtey писал(а):
а вот в варианте Mode 7 - счетчик считает от нуля до OCR** - и вот тут странность. в этом режиме ни какой ШИМ не получится сделать! Для чего этот режим? и какое отношение он имеет к ШИМ ?
В этом режиме OCRA устанавливает частоту ШИМ генерации, а через OCRB можно выставить скважность (OCRB < OCRA).
UPD. Тьфу, OCR2B а не OCRB, эти дурацкие названия

. Соотв. выход ШИМ будет на ноге OC2B.
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Ср янв 30, 2013 12:19:07
Pika4u
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Ср янв 30, 2013 12:20:02
blackx

ТС по этой статье и спрашивает.
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Ср янв 30, 2013 12:20:25
Pika4u
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Ср янв 30, 2013 13:36:11
uwrtey
blackx, спасибо
blackx писал(а):
В этом режиме OCRA устанавливает частоту ШИМ генерации, а через OCRB можно выставить скважность (OCRB < OCRA).
UPD. Тьфу, OCR2B а не OCRB, эти дурацкие названия

. Соотв. выход ШИМ будет на ноге OC2B.
это как? где можно поподробней почитать ? ( с Английским у меня плохо, переводчики переводят теряя логический смысл, поэтому чтение датащита занимает очень много дней)
П.С. а чем плох датащит который я указал ?
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Ср янв 30, 2013 14:14:50
blackx
Насчет поподробнее почитать не знаю, в даташите раздел 11.7.3. Но там особо много не расписано. Вообще это не очень документировано, встречал уже когда-то такой вопрос.
Если быть точнее, OCR0A выставляет верхнюю границу счета таймера - как в режиме CNC. Таким образом, управляя частотой. А OCR0B теперь выставляет скважность. Когда таймер начинает счет с 0, на ноге OC0B (PB1) появляется лог "1". Вывод OC0A в этом режиме недоступен для ШИМ вообще. Как только таймер досчитает до OCR0B, на PB1 устанавливается "0", таймер считает дальше. А вот когда доходит уже до верхнего порога - OCR0A - тогда на PB1 опять выставляется "1", таймер сбрасывается и все начинается сначала.
uwrtey писал(а):
П.С. а чем плох датащит который я указал ?
ATtiny13 и ATtiny2313 - разные микроконтроллеры. По периферии они друг от друга не очень сильно отличаются, но лучше пользоваться правильным даташитом от 13ой.
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Ср янв 30, 2013 14:40:28
uwrtey
blackx писал(а):ATtiny13 и ATtiny2313 - разные микроконтроллеры. По периферии они друг от друга не очень сильно отличаются, но лучше пользоваться правильным даташитом от 13ой.
Ой, блин я не тот датащит указал

этот хотел
http://www.promelec.ru/pdf/Attiny13.pdf
и еще возмущаюсь что то...
Спасибо,
blackx 
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Ср янв 30, 2013 17:37:07
uwrtey
blackx писал(а):UPD. Тьфу, OCR2B а не OCRB, эти дурацкие названия

. Соотв. выход ШИМ будет на ноге OC2B.
OCR2B нету в тини 13, ты хотел сказать OCR0B, а ШИМ будет на OC0B ( шестой вывод микросхемы )
я тоже путаюсь в этих названиях, и те кто составляет datasheet'ы то же ошибаются...

Re: разные режимы работы ШИМ в Tiny13
Добавлено: Ср янв 30, 2013 18:29:08
uwrtey
ну вот теперь еще один вопрос появился
а если к примеру я выбрал Fast PWM (mode 7) в котором счетчик считает до OCRA ( wgm02=1)
теперь нужно настроить поведение вывода OC**
для этого смотрим таблицу Table 11-3. (
датащита )
в таблице написано, что ШИМ будет именно на
OC0A
00 - OC0A отключено
01 - OC0A переключается по совпадению
10 - прямой ШИМ на OC0A
11 - обратный ШИМ на OC0A
тут что то не понятно....
если Ты говоришь, что генерация будет на OC0B, то почему они не пишут что OC0A в этом режиме будет НЕДОСТУПЕН ?
тут видимо нужно выбирать 01 ( OC0A переключается по совпадению ) и далее настраивать OC0B ?
а что будет если я выберу 10 - (прямой ШИМ на OC0A) или 11 - (обратный ШИМ на OC0A) ???
ну вот теперь я совсем запутался....

Re: разные режимы работы ШИМ в Tiny13
Добавлено: Ср янв 30, 2013 18:38:02
zero648
uwrtey, Я, когда начинал разбираться с таймерами делал так: в компиляторе создавал простенькую программку для конкретного контроллера, а именно, инициализировал какой нибудь режим таймера, в протеусе подключаю осцил к выходу OCn соответствующего таймера того же контроллера и смотрим что происходит на выходе контроллера, меняя те или иные параметры в инициализации таймера. Так быстее доходит, чем теория, на много. Какой режим и как работает, сразу понятно, что мне нужно для реализации той или иной задачи.
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Ср янв 30, 2013 19:44:09
uwrtey
пойдет - как вариант.
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Пн фев 18, 2013 19:09:07
uwrtey
Протеус - это все таки виртуальная среда.
Лучше реальной схемы нет ни чего.
Как раз необходимо сделать некое устройство, которое генерировало бы импульсы с частотой 50Гц и разной длительностью.
например 1400 мкс и 1600 мкс
Выбрал МК ATtiny2313
Написал код. Но что то сделал не так
Генерации нет! ни на одном из выводов OC1A OC1B
при включении оба эти вывода выдают лог_1 до тех пор пока не выключу....
Что же не так ?
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Пн фев 18, 2013 20:29:27
zero648
Как раз необходимо сделать некое устройство, которое генерировало бы импульсы с частотой 50Гц и разной длительностью.
например 1400 мкс и 1600 мкс
Нужны два сигнала с частотой 50ГЦ и разной длительностью 1400 и 1600 мкс на разных каналах, они должны появляться при нажатой кнопке, так?
Правильно понимаю?
P.S. Генерация данных сигналов без обработки нажатия кнопки
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Пн фев 18, 2013 22:01:17
uwrtey
Спасибо большое,
zero648.
______________________
Ну в обще нужно два сигнала с частотой 50 Гц и длительностью импульса 1400 мкс
При нажатой кнопке длительность должна изменится на 1600 мкс на обеих ножках. Частота при этом изменится не должна!
______________________
Но это для меня пока сложно! я только начал изучать программирование МК и вот дошел до ШИМ
В своем проекте я решил сделать только
один канал с ШИМ,
при включении устройства на ножке OC1B должна появиться генерация импульсов с частотой 50Гц
и длительностью импульса 1400 мкс. При нажатии на кнопку длительность должна изменится на 1600 мкс.
второй контакт - OC1A - я вывел для того, что бы посмотреть что на нем будет.
В датащите очень мало информации о ШИМ с регулируемой частотой.
blackx подсказал мне о режиме ШИМ с изменяемой частотой.
blackx писал(а):
В этом режиме OCRA устанавливает частоту ШИМ генерации, а через OCRB можно выставить скважность (OCRB < OCRA).
UPD. Тьфу, OCR2B а не OCRB, эти дурацкие названия

. Соотв. выход ШИМ будет на ноге OC2B.
Если быть точнее, OCR0A выставляет верхнюю границу счета таймера - как в режиме CNC. Таким образом, управляя частотой. А OCR0B теперь выставляет скважность. Когда таймер начинает счет с 0, на ноге OC0B (PB1) появляется лог "1". Вывод OC0A в этом режиме недоступен для ШИМ вообще. Как только таймер досчитает до OCR0B, на PB1 устанавливается "0", таймер считает дальше. А вот когда доходит уже до верхнего порога - OCR0A - тогда на PB1 опять выставляется "1", таймер сбрасывается и все начинается
Вот собственно из того что отложилось в моем сознании я и написал код - только он не заработал...
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Пн фев 18, 2013 22:33:37
zero648
Тогда нужно просто определить новую переменную с нужной длительностью сигнала в мксек и выполнить вот такую цепочку кода для канала А:
например задаем переменную VAR:
.equ VAR = 1600 ; задается в микросекундах для моего примера
и выполняем следующее:
ldi r16, low(VAR-1)
ldi r17,high(VAR-1)
out OCR1AH, r17
out OCR1AL, r16
Аналогично для канала В. При этом частота сигнала остается постоянной для обоих каналов
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Пн фев 18, 2013 23:04:54
uwrtey
Спойлер
а почему у тебя в записи
присутствует "-1" ? для чего это ?
____________
Спасибо!

как это сделать я знаю.
Ты использовал ICR1
с ним все становится намного проще!

я до сих пор про него не знал
я сначала задумывал на тини_13 сделать
а у него нет ни какого ICR1
вот и прицепился к OC1A в TOP
спасибо!
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Пн фев 18, 2013 23:09:39
uwrtey
Может, до кучи, подскажешь где я сделал ошибку в своем варианте ?

что бы я освоил урок - так сказать....
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Вт фев 19, 2013 04:51:15
zero648
uwrtey писал(а):Может, до кучи, подскажешь где я сделал ошибку в своем варианте ?

что бы я освоил урок - так сказать....
Хорошо, погляжу, а "-1" это потому, что контроллер поделит тики не на число, а на количество комбинаций числа, т.к. ноль для него тоже число, например 0-20000=20001 комбинаций.
Посмотрел, в протеусе работает так, первоначально на канале В присутствует сигнал 50Гц 1400 мкс, после первого нажатия кнопки сигнал становится 1600мкс, далее при нажатой кнопке сигнал 1400мкс, при отжатой 1600мкс.
Что-то не так?
Таймер настроен нормально, частота по каналу А, длительность по каналу В, на выходе канала А ничего не должно быть, все в порядке. На канале А мы увидеть сможем сигнал, если поставить режим выхода TOGGLE, но значение регистра OCR1A будет равнятся его полупериоду.
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Вт фев 19, 2013 10:23:59
uwrtey
Все правильно так и должно быть. Но на реальной схеме генерации нет.
Блин, до меня кажется дошло. Этот МК раньше стоял в другом устройстве! Надо же фьюзы поправить на дефолтные!
Он у меня от кварца пытается запустится...
Спасибо БОЛЬШУЩЕЕ
zero648, Ты очень мне помог!
