Например TDA7294

Форум РадиоКот • Просмотр темы - PIC18F47j53 Аппаратный ШИМ
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 24, 2024 03:42:09

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: PIC18F47j53 Аппаратный ШИМ
СообщениеДобавлено: Пн апр 09, 2018 15:51:56 
Встал на лапы

Зарегистрирован: Ср ноя 05, 2014 19:04:31
Сообщений: 114
Рейтинг сообщения: 0
Доброго времени суток. Не могу до конца разобраться как запустить аппаратный ШИМ на 100кГц с регулировкой Duty от 0 до 256. Использую компилятор microC

Мой код:
Код:
 TRISC=0;
 CCP8CON=0b00001100; //CPP8 ШИМ
 // выбираю таймеры 2 и 4
 CCPTMRS2.C8TSEL0 = 1;
 CCPTMRS2.C8TSEL1 = 0;
 T4CON=0b00000100; Старт таймера 4
 PR4=118;   //период таймера 4 устанавливает 100кГц



Код:
//Установка Duty цикла
void PWM_Dutys(char Duty)
{
    CCPR8L = Duty;
    CCPR8H = 0;
}


Проблема в том что Duty регулируется от 0 до 127.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC18F47j53 Аппаратный ШИМ
СообщениеДобавлено: Вт апр 10, 2018 03:01:53 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
DarkWolf писал(а):
Проблема в том что Duty регулируется от 0 до 127.
Дак у Вас период всего 118 (119 тактов), что Вы хотели ... ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC18F47j53 Аппаратный ШИМ
СообщениеДобавлено: Вт апр 10, 2018 07:17:38 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21837
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Не совсем так.
В регистре CCPxCON биты DCxB управляют МЛАДШИМИ двумя разрядами дьюти цикла. То есть автор может получить разрешение в 4 раза выше значения PRx.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: PIC18F47j53 Аппаратный ШИМ
СообщениеДобавлено: Вт апр 10, 2018 08:02:51 
Встал на лапы

Зарегистрирован: Ср ноя 05, 2014 19:04:31
Сообщений: 114
Рейтинг сообщения: 0
DarkWolf писал(а):
Проблема в том что Duty регулируется от 0 до 127.
Дак у Вас период всего 118 (119 тактов), что Вы хотели ... ?

Да, 118 это число тактов при котором частота ШИМ равна 100 kHz. А теперь еще нужно и скважность менять от 0 до 255. Вот тут и чего то не доганяю

Добавлено after 5 minutes 16 seconds:
Не совсем так.
В регистре CCPxCON биты DCxB управляют МЛАДШИМИ двумя разрядами дьюти цикла. То есть автор может получить разрешение в 4 раза выше значения PRx.


Не уверен что это поможет.. да, используя биты DCxB можно получить значение Duty до 1024, но он же все равно работает до 127.

В даташите написано, что ШИМ использует два таймера. Я так понимаю один для генерации частоты, второй для вариации скважности сигнала. Но вот как ими пользоваться понять пока что не могу.


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: PIC18F47j53 Аппаратный ШИМ
СообщениеДобавлено: Вт апр 10, 2018 12:00:55 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21837
Откуда: Московская область, Фрязино
Рейтинг сообщения: 1
да, используя биты DCxB можно получить значение Duty до 1024, но он же все равно работает до 127.

С какого перепуга?
Общий дьюти разделяется маской на две части. Старшие 8 разрядов уходят в CCPxR, а младшие 2 в DCxB.
Вот и все.
Только в старших разрядах диапазон будет ограничен 0...118. Итого общий диапазон составит 0...472
Все это стандартная и древняя фича Микрочипа в младших ПИКах. Способ получить высокое разрешение ШИМа за счет частоты осциллятора, которая в 4 раза выше системной частоты.

А теперь еще нужно и скважность менять от 0 до 255. Вот тут и чего то не доганяю

Есть таймер, который считает от 0 до значения PRx. Цифровой компаратор содержит значение равное состоянию таймера в конце дьюти. Сиречь если в него записать значение большее, чем записано в PRx, мы вообще не получим ШИМа, точнее, дьюти будет равен 100%. Итого, дискретность регулирования через CCPxR составляет 1 единица от 0 до 118. Но каждый дискрет может быть разбит на 4 дискрета с помощью значения в двух битах DCxB.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: PIC18F47j53 Аппаратный ШИМ
СообщениеДобавлено: Вт апр 10, 2018 13:09:52 
Встал на лапы

Зарегистрирован: Ср ноя 05, 2014 19:04:31
Сообщений: 114
Рейтинг сообщения: 0
А теперь еще нужно и скважность менять от 0 до 255. Вот тут и чего то не доганяю

Есть таймер, который считает от 0 до значения PRx. Цифровой компаратор содержит значение равное состоянию таймера в конце дьюти. Сиречь если в него записать значение большее, чем записано в PRx, мы вообще не получим ШИМа, точнее, дьюти будет равен 100%. Итого, дискретность регулирования через CCPxR составляет 1 единица от 0 до 118. Но каждый дискрет может быть разбит на 4 дискрета с помощью значения в двух битах DCxB.[/uquote]


т.е. при PR4 = 118 Максимальная Duty = 472. Это 100%. А как сделать что бы 255 было 100% при частоте сигнала 100kHz ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC18F47j53 Аппаратный ШИМ
СообщениеДобавлено: Вт апр 10, 2018 13:14:30 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21837
Откуда: Московская область, Фрязино
Рейтинг сообщения: 1
Никак. При PR4=118 это невозможно. Возможно интерполировать через таблицу значений, где входной интервал 0...255 будет ПЕРЕСЧИТАН в те значения, которые будут максимально близки требуемым.
Иной вариант - изменить частоту тактирования МК так, чтобы создать ДВОИЧНУЮ кратность (кратность степени двойки: 2, 4, 8, 16 и т.д.) 100 кГц системной частоте контроллера. Ближайшее значение - 100 кГц*64=6,4 МГц. Можно 12,8 МГц. Можно 25,6 МГц. Все.


Последний раз редактировалось КРАМ Вт апр 10, 2018 13:40:21, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC18F47j53 Аппаратный ШИМ
СообщениеДобавлено: Вт апр 10, 2018 13:22:54 
Встал на лапы

Зарегистрирован: Ср ноя 05, 2014 19:04:31
Сообщений: 114
Рейтинг сообщения: 0
Большое спасибо за помощь. Решил сделать в таком виде:
Код:
void PWM_Dutys(char Duty)
{
    Duty = Duty/2;           // максимальное значение 255/2 = 127
    CCPR8L = Duty;
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC18F47j53 Аппаратный ШИМ
СообщениеДобавлено: Вт апр 10, 2018 13:24:48 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21837
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
И так не выйдет. Реальные изменения будут только в диапазоне 0...118, а в диапазоне 119...127 реальный ШИМ меняться не будет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC18F47j53 Аппаратный ШИМ
СообщениеДобавлено: Вт апр 10, 2018 13:27:46 
Встал на лапы

Зарегистрирован: Ср ноя 05, 2014 19:04:31
Сообщений: 114
Рейтинг сообщения: 0
И так не выйдет. Реальные изменения будут только в диапазоне 0...118, а в диапазоне 119...127 реальный ШИМ меняться не будет.

Да, это я понял. 100% точность не требуется. Так что думаю такое решение подойдет. Еще раз спасибо! Вы очень помогли разобраться в этом вопросе.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC18F47j53 Аппаратный ШИМ
СообщениеДобавлено: Ср апр 11, 2018 08:37:29 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Не совсем так.
В регистре CCPxCON биты DCxB управляют МЛАДШИМИ двумя разрядами дьюти цикла. То есть автор может получить разрешение в 4 раза выше значения PRx.

Так то оно так. Я исходил из того, что человек в CCPRL пытается записать число, больше значения PRx, что априори не поддаётся никакой логике.
Про младшие биты не стал поднимать вопрос.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC18F47j53 Аппаратный ШИМ
СообщениеДобавлено: Пт июн 29, 2018 14:10:45 
Мудрый кот
Аватар пользователя

Карма: 26
Рейтинг сообщений: 650
Зарегистрирован: Ср апр 04, 2012 09:55:53
Сообщений: 1754
Откуда: Северодонецк
Рейтинг сообщения: 0
Вставлю я сюда свой вопрос.
камень 16f887
Я запускаю аппаратный шим

Код:
      CCP1CON = 0b00001100;
      PR2=0x3F;
   T2CON =  0b00000100;
      while (!TMR2IF) TRISC = 0b11011000;
   while(!TMR2IF){}


и останавливаю его
TMR2ON = 0; // off PWM

Как сделать так, что бы состояние RC2, при выключении всегда было "0" :oops: ?

_________________
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC18F47j53 Аппаратный ШИМ
СообщениеДобавлено: Пт июн 29, 2018 14:17:23 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21837
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Вариантов ЧЕТЫРЕ.
1. Останавливать не когда попало, а в фазе ШИМа, где выход - ноль.
2. Вывести на эту ногу ноль в порт еще при инициализации и не менять, а останавливать ШИМ выключением модуля. Автоматически модуль на ноге отключится и нога станет защелкой порта.
3. Если у модуля есть бит отключения выхода ССР от пина, то пункт 2 можно сделать через этот бит.
4. Управлять ногой через TRIS, а саму ногу подтянуть резистором к нулю.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y