Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/50: Рейтинг темы: голосов - 50, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 331
1

Уменьшение разрядности ШИМ в AVR

07.06.2010, 22:21. Показов 9747. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Реально ли уменьшить разрядность ШИМ? Нужна частота порядка 250 Кгц........
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2010, 22:21
Ответы с готовыми решениями:

AVR ШИМ
Помогите пожалуйста организовать трехфазный ШИМ на AVR. У меня есть AT90PWM3B, как необходимо...

Шим на микроконтролере avr atmega16
на всех сайтах искал про шим у меня вопрос нужно реализовать шим на микроконтролере авр ...

AVR ATmega64 Режимы ШИМ
Задача: Мигать светодиодом. Вкл. состояние 200 мс, выкл. 700 мс. Для реализации использовать таймер...

ШИМ 192кгц на AVR - возможно?
Подскажите пожалуйста, а возможно ли реализовать ШИМ с частотой 192кГц на AVR?

13
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 727
07.06.2010, 22:35 2
Для Timer1 можно задавать разрядность ШИМа от 2 до 16 бит
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 156
07.06.2010, 22:43 3
Можно. Делаешь сброс счетчика не по переполнению, а по OCRA, а по OCRB инвертируешь выход.
При тактовой в 20МГц и частоте 250кГц будет всего 80 позиций регулировки. Т.е. получаешь диапазон
регулировки от 0 до 79. Только это возможно не на всех кристаллах и не не всех счетчиках.
В режимах генератора ищи те, в кторых TOP прописан не как 0xFF, а как OCRA.
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 331
08.06.2010, 00:37 4
Вот есть у меня 3 ШИМ канала и я хочу их по фазе на 90 градусов сдвинуть как эт сделать? чёт не пойму
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 156
08.06.2010, 04:49 5
При такой постановке вопроса... Х.З. А там вообще фаза есть?
0
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 33
08.06.2010, 08:29 6
какой проц?
в меге 128 в даташите на стр 135 табличка есть, оч. удобно подобрать режим
мне кажется удобнее для ограничения разрядности использовать не OCR , а ICR регистр
для каждого канала
0
0 / 0 / 0
Регистрация: 08.05.2010
Сообщений: 332
08.06.2010, 15:05 7
Цитата Сообщение от Okiofimykmo
Вот есть у меня 3 ШИМ канала и я хочу их по фазе на 90 градусов сдвинуть как эт сделать? чёт не пойму
А что сдвигать по фазе? Несущую, или модулирующую функцию?
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 331
08.06.2010, 22:46 8
Вот поставили задачу сварганить 3 канала ШИМ таким образом сдвинутые по фазе между собой
а вот как эт реализавать в непонятках


<Изображение удалено>
0
0 / 0 / 0
Регистрация: 08.05.2010
Сообщений: 332
09.06.2010, 01:01 9
Цитата Сообщение от Okiofimykmo
Вот поставили задачу сварганить 3 канала ШИМ таким образом сдвинутые по фазе между собой
а вот как эт реализавать в непонятках
Вложение:
DR.jpg
То есть Вам необходимо генерировать три последовательности импульсов фиксированной частоты и длительности с взаимным фиксированным временным сдвигом?
Обязательно ли применять генератор ШИМ?
Длительность импульсов будет изменяться, или нет?
Если длительность импульсов должна модулироваться по какому-то закону, как это должно отражаться на временном сдвиге? И одинакова-ли модуляция по разным каналам?
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 331
09.06.2010, 01:33 10
Самое главное чтобы сдвиг между фазами был ~0.5 мкс (но с возможностью регулировки желательно!)
частота фиксированная порядка 150 Кгц
Длительность самих импульсов меняться не должна только сдвиг!
Можно и без ШИМ так как скважность будет всегда одна и таже
0
0 / 0 / 0
Регистрация: 08.05.2010
Сообщений: 332
09.06.2010, 14:59 11
Цитата Сообщение от Okiofimykmo
Самое главное чтобы сдвиг между фазами был ~0.5 мкс (но с возможностью регулировки желательно!)
частота фиксированная порядка 150 Кгц
Длительность самих импульсов меняться не должна только сдвиг!
Можно и без ШИМ так как скважность будет всегда одна и таже
В таком случае, мне кажется, самое простое решение - табличный генератор.
Например, вы настраиваете таймер на генерацию запросов прерываний через 1/150000 (примерно 6,7 мкс). В подпрограмме обслуживания прерывания запускаете чтение таблицы из памяти программ и выводите в соответствующий порт содержимое очередных ячеек таблицы. (При реализации устройства на МК типа AVR)
Что-то вроде:
|Timer_overflow
Tabl*2 -> Z
30 -> Count - необходимое количество ячеек таблицы.
И далее сколько нужно раз (я предположил, что достаточно 30) Вы считываете байты из таблицы с помощью команды LPM (Z++) ->Rn и отправляете в нужный порт: Rn -> PortN.
Естественно, нужно выбрать максимально возможную тактовую частоту МК.
(Если нужно повысить временное разрешение, нужно отказаться от организации цикла и "влоб" считывать программно все ячейки таблицы до ячейки, содержащей все нули)
А таблица должна содержать единицы там где должны быть единица на выходе и нули там, где единицы быть не должны.
Например, если импульсы генерируются на трех младших битах порта, таблица будет что-то вроде:
00000001
00000001
00000001
00000001 - Допустим теперь должна появиться вторая фаза:
00000011
00000011 - Допустим теперь первая фаза должна пропасть:
00000010
00000010 - Допустим теперь должна появиться третья фаза:
00000110
00000110
00000110 - Теперь вторая фаза должна пропасть
00000100
00000100
00000100 Теперь и третья фаза должна пропасть
00000000 - Конец таблицы
Далее выход из подпрограммы обслуживания прерывания.
И так далее и тому подобное! :-)))
Длительность импульсов и сдвиг определяются содержимым таблицы. Так что могут произвольно меняться.
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 331
10.06.2010, 00:19 12
Спасибо! В общем приблизительно получилось то что хотел
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 331
10.06.2010, 18:52 13
Вот как бы терь перекрытия на лету изменять.......допустим с пульта?
0
0 / 0 / 0
Регистрация: 08.05.2010
Сообщений: 332
10.06.2010, 19:53 14
Цитата Сообщение от Okiofimykmo
Вот как бы терь перекрытия на лету изменять.......допустим с пульта?
Разместите таблицу в ОЗУ в виде двух страниц и разработайте какой-нибудь алгоритм подготовки содержимого таблицы (хоть вручную). А потом давайте команду смены страниц и т.д.
0
10.06.2010, 19:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2010, 19:53
Помогаю со студенческими работами здесь

ШИМ на ATMega64 со скважностью 3. В программе AVR Studio
Люди, помогите написать программу, сам в этом не сильно разбираюсь :( Задание: Выдать...

Как сделать нулевой ШИМ сигнал на avr
Здравствуйте! Написал программу, которая генерирует ШИМ в зависимости от напряжения, которое...

Как повлияет уменьшение разрядности мантиссы (вещественного типа данных) на величины машинных констант?
1)увеличится X∞ 2)увеличится Em(машинный эпсилон) 3)увеличится x0 4)уменьшится машинный эпсилон...

Простой частотомер-измеритель коэффициента заполнения и девиации коэффициента заполнения ШИМ на AVR
У кого есть схема и прошивка частотомера-измерителя коэффициента заполнения и девиации...

Dell Vostro 3560 (LA-8241P) - Не включался, после замены шим сдохла и шим и ещё что-то
Имеется бук бп в защиту не уходил, но ни на что не реагировал. После изучения схемы и проверки...

Плавное уменьшение img с уменьшение блока (адаптивно)
При уменьшении окна браузера, уменьшать пропорционально картинку в div'e или сам div и картинку в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru