Например TDA7294

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





Текущее время: Вт апр 16, 2024 23:40:12

Часовой пояс: 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
Сообщений: 21790
Откуда: Московская область, Фрязино
Рейтинг сообщения: 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.

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


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

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

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


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

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


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

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


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

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


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