Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

ШИМ на контроллере PIC 18F4520-I/P

Сб фев 01, 2020 09:03:07

Подскажите, знающие люди, есть ли какие-то стандартные режимы ШИМ у 18F4520-I/P?
Я имею ввиду ряд стандартных частот?
Шаг изменения скважности, диапазон?

Мне не нужно знать (пока), как контроллер запрограммировать на ШИМ.
Есть устройство, которое построено на этом МК. Мои измерения выдаваемых импульсов имеют некую погрешность.
Хотел подвязаться к стандартным значениям, проверить.

Re: ШИМ на контроллере PIC 18F4520-I/P

Сб фев 01, 2020 10:00:17

В любом МК любой архитектуры и производителя ШИМ построен по совершенно идентичной архитектуре. Частота ШИМ определяется регистром переполнения таймера на котором работает ШИМ.
То есть сетка частот ШИМ определяется частотой накачки (тактирования) таймера ШИМ. И ничем более. Изменить период ШИМа (величину обратную частоте) можно не мельче, чем на один период частоты тактирования. То есть сетка частот будет НЕЛИНЕЙНА (функция 1/х) и шаг будет зависеть от частоты ШИМ. Чем выше частота, тем крупнее шаг.
Скважность ШИМа определяется регистром CCPR. То есть скважность находится в диапазоне значений этого регистра но не может быть выше значения регистра периода (переполнения таймера) ШИМ.
То есть если выбран период ШИМа равный всего 8 периодам тактовой частоты, то изменять скважность можно всего в пределах этого периода с дискретом в 1.
Из чего следует, что разрешение ШИМ так же зависит от частоты ШИМ. Чем выше частота ШИМ (при фиксированной частоте тактирования), тем ниже (хуже) доступное разрешение по скважности.
ЗЫ. Можно, конечно, изменить частоту тактирования МК, но это совсем другая история....

Re: ШИМ на контроллере PIC 18F4520-I/P

Сб фев 01, 2020 12:15:30

У МК установлены следующие фьюзы.

IESO = 1
(Разрешена возможность смены внутреннего (RC) / внешнего (кварц) генератора)

FOSC3 = 1
FOSC2 = 0
FOSC1 = 0
FOSC0 = 0
(Назначено использование внутреннего RC генератора. Вывод OSC2 работает как RA6, а OSC1 как RA7)

WDTPS3 = 0
WDTPS3 = 1
WDTPS3 = 1
WDTPS0 = 1
(Коэффициент постделителя WDT 1:128)

LPT1OSC = 0
(Таймер 1 сконфигурирован для работы с высоким энергопотреблением (меньшая чувствительность к помехам) )

ССР2МХ = 1
(Вход/выход мультиплексора ССР2 подключен к выводу RC1)


По этой информации что-то можно предположить?

Добавлено after 2 minutes 9 seconds:
Примерная измерена частота равна 1,2 кГц. (плюс минус погрешность)

Re: ШИМ на контроллере PIC 18F4520-I/P

Сб фев 01, 2020 13:14:13

У МК установлены следующие фьюзы.

Для справки. У PICов нет фьюзов. :)

Re: ШИМ на контроллере PIC 18F4520-I/P

Сб фев 01, 2020 14:17:54

Это схема осциллятора обсуждаемого МК:
Изображение
Из нее следует, что из представленной Вами конфигурации МК о частоте его работы НИЧЕГО СКАЗАТЬ НЕЛЬЗЯ.
То есть это может быть любая частота от 31 кГц до 32 МГц.
Таким образом, если ПРЕДПОЛОЖИТЬ, что автор кода для МК включил внутренний RC генератор на частоте 8 МГц и включил PLL, то есть запустил осциллятор на 32 МГц, то для частоты ШИМ 1,2 кГц и полного 10-разрядного разрешения по скважности ему нужно было бы установить предделитель у TMR2 на 1:26 МИНИМУМ, что невозможно (максимум 1:16). Что дает основание предполагать, что PLL не включен или включен с частотой RC генератора 4 МГц.
Итого, скорее всего имеет место быть один из двух вариантов частоты накачки МК - 8 или 16 МГц.
Для частоты 16 МГц и предделителем 1:16 мы получаем частоту 1 МГц в качестве тактовой для ШИМ. И при установке регистра PR2 равным 208 (десятичное значение), мы получим частоту ШИМ равной 1000000/(4*208)=1202 Гц. Шаг частоты будет определяться шагом в регистре PR2. То есть следующее значение будет 1000000/(4*207)=1208 Гц. Ну или вниз: 1000000/(4*209)=1196 Гц
Для частоты 8 МГц потребуется предделитель 1:4 - частота накачки TMR2 (ШИМ) - 2 МГц (другого после 1:16 в ряду нет) и расчет даст значение для PR2=417. То есть для этого значения частота ШИМ будет 2000000/(4*417)=1199 Гц
Ближайшие шаги: PR2=416 даст 1202 Гц, а PR2=418 даст 1196 Гц.
Разрешение по скважности во всех случаях одинаково и составит 10 разрядов (1/1024).
Разрешение по частоте выше для варианта с осциллятором 8МГц без PLL. Если автор поступил рационально, то это именно так и есть.

У PICов нет фьюзов

Термин "фьюзы" ничем от термина "конфигурационные биты" не отличается. Речь может идти только о привычном обозначении для документации производителя. Поэтому Ваше замечание не имеет никакого практического смысла.

Re: ШИМ на контроллере PIC 18F4520-I/P

Сб фев 01, 2020 16:22:54

У меня есть полный дамп прошивки контролера. Может есть конкретные адреса памяти (посмотреть в дампе), по которым можно точно что-товыяснить?

Re: ШИМ на контроллере PIC 18F4520-I/P

Сб фев 01, 2020 17:25:45

Нет стандартных частот, измерений, шагов и т.д.
По прошивке без кварца фактические частоты и шаг определить нельзя

Re: ШИМ на контроллере PIC 18F4520-I/P

Сб фев 01, 2020 17:32:33

Определить по прошивке можно реальную схему формирования частоты ШИМ. Частота осциллятора может быть перестроена в небольших пределах.
В зависимости от имеющихся приборов можно подумать что с этим сделать.
Определите конечную задачу Ваших действий.

Re: ШИМ на контроллере PIC 18F4520-I/P

Вс фев 02, 2020 09:19:17

У меня прошивка в виде дампа. Исходного кода нет.

Re: ШИМ на контроллере PIC 18F4520-I/P

Вс фев 02, 2020 09:41:58

Нужен не дамп, а хекс. Так удобнее.
Но главное, нужна Ваша цель. Конечная цель. Патамушта именно она может стать проблемой. Не Ваши промежуточные хотелки, а именно конечная цель.

Re: ШИМ на контроллере PIC 18F4520-I/P

Вс фев 02, 2020 19:28:33

Я хочу реализовать часть!! функционала имеющегося устройства на Ардуино. Для этого хочу максимально полно понимать параметры импульсов, выдаваемые оригинальным устройством.
(Если число шагов на МК 1024, а у Ардуино 256, возможно буду думать над другой реализацией или Ардуино + внешний модуль ШИМ).

Re: ШИМ на контроллере PIC 18F4520-I/P

Вс фев 02, 2020 19:51:47

То есть Вам нужна не точная частота, а разрешение по частоте и скважности?
Причем тут Ардуина?
Вы можете переписать код на этот МК. Все что для этого нужно - ПИКкит и МПЛАБ.
Компилятор XC8. В базовой версии бесплатен.

Re: ШИМ на контроллере PIC 18F4520-I/P

Вс фев 02, 2020 20:59:41

Я думаю он наоборот хочет переписать под ардуино код, который изначально был под пик. Вот при чем тут ардуино.

FuseStart, а там так много режимов у вас? Может проще лог. анализатором снять параметры? Иногда хардварный реверс проще, чем копаться в дампе прошивки.
А вообще берете ДШ на ПИК и читаете главу 15 про ШИМ. Читаете и разбираетесь какие там есть регистры и пробуете найти их изменение в коде. Но если алгоритм не просто и параметры ШИМ меняются в зависимости от многих других факторов - будет непросто наверное.
И всё-таки сказанное вами - еще не конечная цель. Что за устройство? Что за функционал? Может там нафиг не надо гадать, как было на ПИКе сделано, а проще своё с нуля написать и не страдать. В большинстве случаев обычно так и бывает.

Добавлено after 8 minutes 52 seconds:
(Если число шагов на МК 1024, а у Ардуино 256, возможно буду думать над другой реализацией или Ардуино + внешний модуль ШИМ).

В ПИКе указанном ШИМ 10-битный. У AVR кстати есть 16-битный ШИМ на таймере 1. Если научиться выходить за рамки ардуины, то вполне можно повторить.

Re: ШИМ на контроллере PIC 18F4520-I/P

Пн фев 03, 2020 02:32:25

Если выходить за рамки Ардуино, то тогда можно и железо не менять.
Что касается 16 разрядов ШИМа в АВР, то нужно сначала вспомнить о частоте ШИМ и соотнести ее с частотой тактирования МК, которая в АВР является частотой тактирования ШИМ. И быстро убедиться в том, что при потребных 1200 Гц ШИМа ни о каких 16 разрядах разрешения по скважности даже близко речи быть не может. Ибо для этого потребуется частота накачки примерно 80 МГц.

Re: ШИМ на контроллере PIC 18F4520-I/P

Пн фев 03, 2020 07:38:14

Оставаясь в рамках AVR всё-таки проще - полно примеров для того же Arduino IDE для простой настройки таймера 1 для ШИМа. Думаю может даже либа какая есть. Это всё-таки проще, чем совсем другая среда/архитектура. Хотя бы так: https://arduino.stackexchange.com/quest ... tion/12719
И речь о максимальной разрядности конечно же. У любого МК разрядность будет коррелировать обратно с частотой. У ПИКа тоже.
Ответить