Возможно ли переписать PWM ?

Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Возможно ли переписать PWM ?

Сообщение Sergey Ivanov »

нашёл я тут библиотеку на камень (для ШИМв приложении)

возможно ли его переписать , чтобы получить нужный ШИМ с периодом 20 мс и длительностью импульса 0,8-2,2 с шагом 0,01 мс ?

MCB2300_PWM.c
(5.4 КБ) 131 скачивание



пока не понял что тут имеют в виду: (предполагаю, что описывают часы :dntknw: )

void MCB2300_PWMInit(int32 nCycleTime, int32 nErrIn, int32* pnErrOut) {
int32 m=0, n=0, pll=0, cclksel=0, cclk=0, pclk=0;

if (nErrIn) {
if (pnErrOut) {
*pnErrOut = nErrIn;
}
return;
}

PINSEL10 = 0;

m = PLLSTAT & 0x7FFF; // PLL multiplier (bits 14:0)
n = (PLLSTAT & 0xFF0000) >> 16; // PLL divider (bits 23:16)
pll = 2 * (m+1) * MainClock / (n+1); // MHz
cclksel = CCLKCFG & 0xFF; // pll divider to get clock
cclk = pll / (cclksel + 1); // clck in MHz
pclk = cclk/4;
PWM1PR = pclk; // pre scale register to get 1ms
PWM1MR0 = nCycleTime; // match register 0 gives cycle time

PWM1MCR = 2;

PWM1CTCR = 0; // PWM count control register - timer mode
PWM1TCR |= 0x9; // PWM timer control register - enable timer counter and prescale counter
PWM1LER |= 1;
gnCycleTime = nCycleTime;
if (pnErrOut) {
*pnErrOut = 0;
}
}





стал разбираться дальше:
nCycleTime - время цикла - период, скорее всего, пока не понял, в мс или Гц. в установка в :labview: для ШИМ задаём в частоте
nOffset -смещение
Boolean bDoubleEdge двойной край (фронт)
Boolean bPolarity переключение на отрицательные импульсы
nDuration - длительность импульса
nErrIn - я так думаю ошибка (входящая?)
pnErrOut -тоже ошибка (исходящая?)

сейчас основная идея понять в каких единицах задаётся период, думаю, что в мс. судя по коду смещение и длительность импульса задаётся в процентах.
потом соответственно поменять нужные циферки и дело в шляпе ( это я так надеюсь на простое решение проблемы :D )


даже ограничения какие-то есть, что больше 100% быть не може, аналогично канал ШИМ от 1 до 6,

if (nErrIn) {
if (pnErrOut) {
*pnErrOut = nErrIn;
}
return;
}

if (pnErrOut) {
*pnErrOut = 0;
}

if (nChan < 1 || nChan > 6) {
if (pnErrOut) {
*pnErrOut = 1;
}
return;
}

if (bDoubleEdge && ((nOffset + nDuration) > 100)) {
if (pnErrOut) {
*pnErrOut = 1;
}
return;
}
else if (!bDoubleEdge && nOffset > 100) {
if (pnErrOut) {
*pnErrOut = 1;
}
return;
}




пока такие мысли в голову влезли )
Добро пожаловать на http://rk-stud.ru/

Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Репутация: 0
Версия LabVIEW: 2010
Откуда: Moscow
Контактная информация:

Re: Возможно ли переписать PWM ?

Сообщение Konstantin Sumenko »

По памяти: скважность- в процентах; период, длительность импульса- в количестве тактов опоры PWM. Начни с изучения прескейлеров тактовой периферии- поймешь можно ли период в 20 мс получить. В LM3Sxxxx максимально возможный период 91мс при частоте ядра в 50 МГц.

Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Re: Возможно ли переписать PWM ?

Сообщение Sergey Ivanov »

о, спасибо.

В LM3Sxxxx максимально возможный период 91мс при частоте ядра в 50 МГц

максимально возможный или минимально ?
Добро пожаловать на http://rk-stud.ru/

Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Re: Возможно ли переписать PWM ?

Сообщение Sergey Ivanov »

так скважность и длительность импульсов это же одно и тоже
Добро пожаловать на http://rk-stud.ru/

Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Репутация: 0
Версия LabVIEW: 2010
Откуда: Moscow
Контактная информация:

Re: Возможно ли переписать PWM ?

Сообщение Konstantin Sumenko »

От 11 Гц и выше. Скважность и длительность не одно и тоже- первое безразмерное, второе- нет. Завязаны друг на друга через период.

Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Re: Возможно ли переписать PWM ?

Сообщение Sergey Ivanov »

Crowbar писал(а):По памяти: скважность- в процентах; период, длительность импульса- в количестве тактов опоры PWM. Начни с изучения прескейлеров тактовой периферии- поймешь можно ли период в 20 мс получить. В LM3Sxxxx максимально возможный период 91мс при частоте ядра в 50 МГц.




прескейлер - это что такое и где можно найти ?

период в 20 мс получить можно. (если в настройках PWM задать частоту 50 Гц, если я ничего не путаю опять )
Добро пожаловать на http://rk-stud.ru/

Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Re: Возможно ли переписать PWM ?

Сообщение Sergey Ivanov »

этот файл, по ходу, и на что не влияет. я его удалил , но всё равно можно задвать длительность PWM
Добро пожаловать на http://rk-stud.ru/

Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Репутация: 0
Версия LabVIEW: 2010
Откуда: Moscow
Контактная информация:

Re: Возможно ли переписать PWM ?

Сообщение Konstantin Sumenko »

Прескейлер это набор регистров, ответственный за опору (частоту) ШИМ- обычно состоит из делителя частоты ядра плюс счетчик (второй делитель, отвечающий за результирующий период ШИМ).

Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Re: Возможно ли переписать PWM ?

Сообщение Sergey Ivanov »

почему удаление этога файла ( в приложении) на работоспособность ШИМ не повлияло?
Добро пожаловать на http://rk-stud.ru/

Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Репутация: 0
Версия LabVIEW: 2010
Откуда: Moscow
Контактная информация:

Re: Возможно ли переписать PWM ?

Сообщение Konstantin Sumenko »

Приведи полный путь файла а также название выбранного таргета при создании проекта.

Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Re: Возможно ли переписать PWM ?

Сообщение Sergey Ivanov »

вот, даже переутановил :labview: (две версии стояло, думал, что как-то влияет)
Безымянный.jpg


название тагета - MCB2300
Добро пожаловать на http://rk-stud.ru/

Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Репутация: 0
Версия LabVIEW: 2010
Откуда: Moscow
Контактная информация:

Re: Возможно ли переписать PWM ?

Сообщение Konstantin Sumenko »

А после удаления/переустановки ты тот же самый проект открываешь? Каждый проект содержит копию используемых драйверов и шаблонов- вноси изменения там, чтобы они отражались в текущем проекте или создай новый.

Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Re: Возможно ли переписать PWM ?

Сообщение Sergey Ivanov »

переустановил :labview: , открыл новый проект, создал программу, записал её на МК, удалил MCB2300_PWM.c, всё равно можно было менять параметры ШИМ
Добро пожаловать на http://rk-stud.ru/

Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Репутация: 0
Версия LabVIEW: 2010
Откуда: Moscow
Контактная информация:

Re: Возможно ли переписать PWM ?

Сообщение Konstantin Sumenko »

Ты сначала удали PWM.C, потом создай новый проект, скомпилируй программу, запиши в МК и проверь.

Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Re: Возможно ли переписать PWM ?

Сообщение Sergey Ivanov »

ок, попробую. спасибо
Добро пожаловать на http://rk-stud.ru/

Ответить

Вернуться в «Real Time / FPGA / Embedded»