Страница 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** - и вот тут странность. в этом режиме ни какой ШИМ не получится сделать! Для чего этот режим? и какое отношение он имеет к ШИМ ? :shock:

________________________

такая же ситуация обстоит с режимом PWM, Phase Correct ( ШИМ с точной фазой )
так же два варианта ( Mode 1 и Mode 5 )
с Mode 1 все понятно - тут счетчик считает от нуля до 255 :)
с Mode 5 - точно такой же вопрос как и в режиме FAST PWM - тут счетчик считает от нуля до OCR**
_________________________


сам вопрос я выделил жирным шрифтом :))
Заранее Всем благодарен за ответы :beer:

Re: разные режимы работы ШИМ в Tiny13

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

UPD. Тьфу, OCR2B а не OCRB, эти дурацкие названия :))). Соотв. выход ШИМ будет на ноге OC2B.

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Ср янв 30, 2013 12:19:07
Pika4u
Вот тут про ШИМ почитайте, все разжевано донельзя http://easyelectronics.ru/avr-uchebnyj- ... -shim.html

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Ср янв 30, 2013 12:20:02
blackx
:facepalm: ТС по этой статье и спрашивает.

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Ср янв 30, 2013 12:20:25
Pika4u
Оййй :))) :))) :facepalm: :facepalm:

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Ср янв 30, 2013 13:36:11
uwrtey
blackx, спасибо :beer:
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ой.
Ой, блин я не тот датащит указал :oops: этот хотел http://www.promelec.ru/pdf/Attiny13.pdf
и еще возмущаюсь что то... :oops:

Спасибо, blackx :beer:

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) ???

ну вот теперь я совсем запутался.... :o

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. :beer:
______________________

Ну в обще нужно два сигнала с частотой 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
Спойлера почему у тебя в записи

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

ldi   r16, low(Duration_A-1)
присутствует "-1" ? для чего это ?
____________

Спасибо! :beer: как это сделать я знаю. :)


Ты использовал ICR1
с ним все становится намного проще! :) я до сих пор про него не знал :oops: :)

я сначала задумывал на тини_13 сделать
а у него нет ни какого ICR1

вот и прицепился к OC1A в TOP

спасибо!

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Пн фев 18, 2013 23:09:39
uwrtey
Может, до кучи, подскажешь где я сделал ошибку в своем варианте ?
:roll:
что бы я освоил урок - так сказать....

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Вт фев 19, 2013 04:51:15
zero648
uwrtey писал(а):Может, до кучи, подскажешь где я сделал ошибку в своем варианте ?
:roll:
что бы я освоил урок - так сказать....
Хорошо, погляжу, а "-1" это потому, что контроллер поделит тики не на число, а на количество комбинаций числа, т.к. ноль для него тоже число, например 0-20000=20001 комбинаций.


Посмотрел, в протеусе работает так, первоначально на канале В присутствует сигнал 50Гц 1400 мкс, после первого нажатия кнопки сигнал становится 1600мкс, далее при нажатой кнопке сигнал 1400мкс, при отжатой 1600мкс.
Что-то не так?

Таймер настроен нормально, частота по каналу А, длительность по каналу В, на выходе канала А ничего не должно быть, все в порядке. На канале А мы увидеть сможем сигнал, если поставить режим выхода TOGGLE, но значение регистра OCR1A будет равнятся его полупериоду.

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Вт фев 19, 2013 10:23:59
uwrtey
Все правильно так и должно быть. Но на реальной схеме генерации нет. :(
Блин, до меня кажется дошло. Этот МК раньше стоял в другом устройстве! Надо же фьюзы поправить на дефолтные! :oops:
Он у меня от кварца пытается запустится... :oops:

Спасибо БОЛЬШУЩЕЕ zero648, Ты очень мне помог! :beer: