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

 
 
> ШИМ на ATtiny25
vv_gulyaev
сообщение May 6 2009, 06:41
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 15-10-08
Из: Воронеж
Пользователь №: 40 984



Здравствуйте. Хочу реализовать ШИМ-контроллер на ATtiny25 в 8 выводном корпусе. Собираюсь использовать внутренний 8МГц RC-генератор. В связи с этим возникли вопросы: импульсы какой максимальной частоты можно будет получить на выходах и возможен ли сдвиг по фазе импульсов друг относительно друга.

Сообщение отредактировал vv_gulyaev - May 6 2009, 07:10
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Палыч
сообщение May 6 2009, 07:16
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(vv_gulyaev @ May 6 2009, 09:41) *
возникли вопросы импульсы какой максимальной частоты можно будет получить на выходах и возможен ли сдвиг по фазе импульсов друг относительно друга.
Формула частоты приведена в даташите. О максимальной частоте говорить трудно - можно и 8МГц, но шириной импульсов тогда невозможно будет управлять...
Сдвиг по фазе - это сдвиг при изменении ширины импульса? Если это критично, можно выбрать нужное условие изменения выхода ШИМ.

P.S. Про максимальную частоту в 8МГц - соврал, с tiny26 перепутал. В tiny25 максимальная частота будет 8/256=31,25 кГц.
Go to the top of the page
 
+Quote Post
vv_gulyaev
сообщение May 6 2009, 07:32
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 15-10-08
Из: Воронеж
Пользователь №: 40 984



Цитата(Палыч @ May 6 2009, 11:16) *
Формула частоты приведена в даташите.


Там написано, что в режиме Clear Timer on Compare Match (CTC) Mode f=FclkI_O/(2(1+OCRnx)). Я правильно понял, что управляя регистром OCRnx, можно регулировать выходную частоту.

Цитата(Палыч @ May 6 2009, 11:16) *
Сдвиг по фазе - это сдвиг при изменении ширины импульса?


Нужно, чтобы, на 4х выводах импульсы были сдвинуты по фазе друг относительно друга, т.е. передние фронты импульсов начинаются в разное время.
Go to the top of the page
 
+Quote Post
Палыч
сообщение May 6 2009, 08:15
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(vv_gulyaev @ May 6 2009, 10:32) *
Там написано, что в режиме Clear Timer on Compare Match (CTC) Mode f=FclkI_O/(2(1+OCRnx)). Я правильно понял, что управляя регистром OCRnx, можно регулировать выходную частоту.
Вам ведь не просто частота нужна, а ШИМ - т.е. другой режим таймера: один из PWM mode. В обоих этих режимах у t25 частота зависит от частоты генератора и установленного прескалера - и всё!
Цитата(vv_gulyaev @ May 6 2009, 10:32) *
Нужно, чтобы, на 4х выводах импульсы были сдвинуты по фазе друг относительно друга, т.е. передние фронты импульсов начинаются в разное время.
Это Вы - большой мечтатель! У t25 только один таймер и его выход можно получить на одной ноге. Не получится получить аппаратно четыре ШИМа. Только - программно! Сделать это можно, но точности по длительности будут, конечно, хуже, чем при аппаратной реализации...

Вы озвучте: какая частота следования импульсов Вам нужна; какие длительности импульсов (от... до...), сдвиги фаз между импульсами на разных ногах; требуемые точности всего этого... Попробуйте сформулировать стоящую перед Вами задачу.
Go to the top of the page
 
+Quote Post
vv_gulyaev
сообщение May 6 2009, 08:23
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 15-10-08
Из: Воронеж
Пользователь №: 40 984



Цитата(Палыч @ May 6 2009, 12:15) *
Попробуйте сформулировать стоящую перед Вами задачу.


Нужно получить 4 сигнала одинаковой частоты сдвинутые друг относительно друга на 1/4 периода. Частота примерно 100КГц. Также интересует какую минимальную длительность импульса можно получить программно.

Сообщение отредактировал vv_gulyaev - May 6 2009, 08:34
Go to the top of the page
 
+Quote Post
stells
сообщение May 6 2009, 08:42
Сообщение #6


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(vv_gulyaev @ May 6 2009, 12:23) *
Нужно получить 4 сигнала одинаковой частоты сдвинутые друг относительно друга на 1/4 периода. Частота примерно 100КГц. Также интересует какую минимальную длительность импульса можно получить программно.

с частотой 100кГц программно запросто все сгенерите, правда все зависит от общей загрузки МК. минимальная длительность импульса - 1 такт.
Go to the top of the page
 
+Quote Post
Палыч
сообщение May 6 2009, 08:55
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(stells @ May 6 2009, 11:42) *
с частотой 100кГц программно запросто все сгенерите, правда все зависит от общей загрузки МК. минимальная длительность импульса - 1 такт.
Товарищ, конечно, погорячился...
Длительности импульсов откуда берутся? Как определяется их ширина?
Думаю, что реально можно получить Ваши сигналы с частотой следования 1кГц (может быть 2кГц). При этом длительности импульсов можно задавать с точностью 0,01мс (или 0.005мс).
Go to the top of the page
 
+Quote Post
stells
сообщение May 6 2009, 09:04
Сообщение #8


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(Палыч @ May 6 2009, 12:55) *
Товарищ, конечно, погорячился...
Длительности импульсов откуда берутся? Как определяется их ширина?

не погорячился, хотя конечно времени на обработку не много. но если длительность берется из таблицы, а ширину получаем (допустим) из непрерывного АЦП, то почему Вы считаете, что за 10мкс нельзя сформировать программно 8 переключений портов?

Сообщение отредактировал stells - May 6 2009, 09:05
Go to the top of the page
 
+Quote Post
Палыч
сообщение May 6 2009, 09:20
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(stells @ May 6 2009, 12:04) *
но если... то почему Вы считаете, что за 10мкс нельзя сформировать программно 8 переключений портов?
Полностью условия задания мы с Вами не знаем... Конечно, если напрячься, то что-то сделать - можно. Но, не забывайте, что автор вопроса - начинающий (раз сюда запостил свой вопрос), и такую задачу он вряд ли вытянит...
Go to the top of the page
 
+Quote Post
stells
сообщение May 6 2009, 09:25
Сообщение #10


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(Палыч @ May 6 2009, 13:20) *
Полностью условия задания мы с Вами не знаем... Конечно, если напрячься, то что-то сделать - можно.

не знаем, согласен... но теоретически сделать 4-канальный ШИМ с низким разрешением можно... аккуратненько, на ассемблере
Go to the top of the page
 
+Quote Post
Палыч
сообщение May 6 2009, 09:30
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(stells @ May 6 2009, 12:25) *
с низким разрешением можно...
Термин "с низким разрешением" - это "точность плюс-минус лапоть"?
Go to the top of the page
 
+Quote Post
stells
сообщение May 6 2009, 09:40
Сообщение #12


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(Палыч @ May 6 2009, 13:30) *
Термин "с низким разрешением" - это "точность плюс-минус лапоть"?

80 команд на цикл - это теоретически 1,25%. реально конечно хуже получится
не о том спорим, нужно понимание, для чего это нужно
Go to the top of the page
 
+Quote Post
Палыч
сообщение May 6 2009, 10:02
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(stells @ May 6 2009, 12:40) *
80 команд на цикл - это теоретически 1,25%. реально конечно хуже получится
Вот именно - реально хуже получится. Имхо, при однократном задании длительности импульсов (т.е. задали длительность и не меняем) можно, наверное, получить временные интервалы с погрешностью менее 5%, если же длительности импульсов будут меняться на каждом периоде (даже если и "очень плавно"), то погрешности, наверное, будут под 50%.

Может быть, автору решить задачу иначе: МК генерит один сигнал ШИМ, а внешний сдвигающий регистр формирует недостающие три; тактирование сдвигающего регистра - от МК?
Go to the top of the page
 
+Quote Post
vv_gulyaev
сообщение May 6 2009, 10:45
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 15-10-08
Из: Воронеж
Пользователь №: 40 984



Цитата(Палыч @ May 6 2009, 14:02) *
Может быть, автору решить задачу иначе: МК генерит один сигнал ШИМ, а внешний сдвигающий регистр формирует недостающие три; тактирование сдвигающего регистра - от МК?


Спасибо, за советы. Наверное я остановлюсь на том, чтобы задать длительность жестко и выдавать импульсы с 4 выходов. На сколько я понял из обсуждения это получить реально.
Go to the top of the page
 
+Quote Post
Палыч
сообщение May 6 2009, 11:48
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(vv_gulyaev @ May 6 2009, 13:45) *
Наверное я остановлюсь на том, чтобы задать длительность жестко и выдавать импульсы с 4 выходов.
Если это - то, что Вам нужно (в чём я сомневаюсь), то реализовать можно. Писать программу нужно будет на ассемблере, на языке высокого уровня вряд ли получится что-то путное. Основной цикл программы будет довольно примитивный:
1.Вывод "значение 1" в порт В
2.Задержка 1
3.Вывод "значение 2" в порт В
4.Задержка 2
5.Вывод "значение 3" в порт В
6.Задержка 3
...........
15.Вывод "значение 8" в порт В
16.Задержка 8
17.Переход на п.1
Значения, выводимые в порт, и величины задержек будут зависить от длительности импульсов. Кроме того, общее время выполнения цикла должно быть 80 тактов для частоты 100кГц и частоты тактирования МК 8МГц. Можно значения, выводимые в порт, и величины задержек хранить в виде двух массивов, а программу упростить до:
1.Вывод "значение i" в порт В
2.Задержка i
3.Взять следующее i
4.Переход на п.1
Однако, такая программа хоть и станет "более настраиваемой", но точность выдержки задержек - резко упадёт. Если это не критично, то второй вариант мне кажется предпочтительней...
Go to the top of the page
 
+Quote Post
vv_gulyaev
сообщение May 8 2009, 08:34
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 15-10-08
Из: Воронеж
Пользователь №: 40 984



Еще возник вопрос по поводу программирования tiny25. Имеется программатор ByteBlasterII и программа Avreal Shell. В списке доступных микросхем нет tiny25, хотя в сети видел упоминания, что она должна поддерживаться этим программатором. В наличии микросхем пока нет, поэтому хотелось бы узнать возможно ли использовать BBII для программирования tiny25, или нужно покупать/паять AVRISP.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- vv_gulyaev   ШИМ на ATtiny25   May 6 2009, 06:41
||- - Палыч   Цитата(vv_gulyaev @ May 6 2009, 11:23) Ча...   May 6 2009, 08:36
||- - stells   Цитата(vv_gulyaev @ May 6 2009, 14:45) Сп...   May 6 2009, 10:57
||- - Microwatt   Цитата(vv_gulyaev @ May 6 2009, 13:45) Сп...   May 6 2009, 11:08
|||- - vv_gulyaev   Цитата(Microwatt @ May 6 2009, 15:08) На ...   May 6 2009, 11:22
||- - ReAl   Цитата(vv_gulyaev @ May 8 2009, 11:34) В ...   May 8 2009, 08:55
||- - vv_gulyaev   Цитата(ReAl @ May 8 2009, 12:55) просто a...   May 8 2009, 10:41
|- - stells   Цитата(Палыч @ May 6 2009, 12:15) Это Вы ...   May 6 2009, 08:35
- - stells   Цитата(vv_gulyaev @ May 6 2009, 10:41) во...   May 6 2009, 07:20
- - Microwatt   MK такого калибра для этого принципиально не годи...   May 6 2009, 09:06
- - stells   Цитата(Microwatt @ May 6 2009, 13:06) Мож...   May 6 2009, 09:19


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 12:54
Рейтинг@Mail.ru


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