Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ШИМ в SAM7s256
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
AlexMad
Суть задачи: получить импульсы определенной частоты и скважности...
При инициализации ставлю PWMC_CPRDR = некое значение, PWMC_CDTYR = некое значение, больше, чем нуль и меньше, чем CPRDR, PWMC_CUPDR = то же, что и CPRDR, PWMC_CPOL = 0. CPRDR/CDTYR(скважность) = 0.1. Все работает.
Во время работы меняю скважность с 0,1 на 0.9, то есть просто меняю CDTYR. Как правило, просто меняется полярность импульсов, чего я и хочу добиться, но обратите внимание, именно, как правило, то есть ни стого ни с сего полярность замирает, меняю скважность на 0.2 и 0.8, чтобы осциллографом увидеть изменение, длительность меняется, полярность - не всегда sad.gif. Специально купил мт-линк, слежу за PWMC_CPOL - оно не меняется, более того, просто меняю его с нуля на еденицу - на выходной сигнал это никак не влияет sad.gif.
Кто виноват и что делать?
beer_warrior
Кривой там ШИМ, для начала советую эррату, а дальше искать запрешенные комбинации самостоятельно. В моем проекте на 512 градаций, пришлось начинать сразу с двойки, с единицей был описанный глюк.
SpiritDance
Цитата(AlexMad @ Nov 22 2006, 21:58) *
Во время работы меняю скважность с 0,1 на 0.9, то есть просто меняю CDTYR.

Уж что-что а шим - рабочий, не надо ля-ля. Просто для того чтобы менять скважность нужно рпрописывать PWMC_CUPDR или (PWMC_CPRDR + PWMC_CDTYR по этому вариану и написана эррата) ивсе пработает и со сквжностью на еденичку меньше периода и с со скважностью 1. стр 430 даташита абзац "Changing the Duty Cycle or the Period" А пользоватся эрратой для того чтобы менять полярность сигнала - это вообще чудеса на виражах.
AlexMad
Цитата(SpiritDance @ Nov 23 2006, 10:10) *
Цитата(AlexMad @ Nov 22 2006, 21:58) *

Во время работы меняю скважность с 0,1 на 0.9, то есть просто меняю CDTYR.

Уж что-что а шим - рабочий, не надо ля-ля. Просто для того чтобы менять скважность нужно рпрописывать PWMC_CUPDR или (PWMC_CPRDR + PWMC_CDTYR по этому вариану и написана эррата) ивсе пработает и со сквжностью на еденичку меньше периода и с со скважностью 1. стр 430 даташита абзац "Changing the Duty Cycle or the Period" А пользоватся эрратой для того чтобы менять полярность сигнала - это вообще чудеса на виражах.

именно так я и делаю :

PWMcontroller->PWMC_CPRDR = iPrescaler;
PWMcontroller->PWMC_CDTYR = iDuty;
PWMcontroller->PWMC_CUPDR = iPrescaler;
PWMcontroller->PWMC_CMR = MCKtoPWM | CPD_ON | CPOL_OFF | CALG_OFF ;

и если менять соотношение iDuty/iPrescaler с 0,1 на 0,9 на выходе НИЧЕГО не меняется, как предыдущий человек написал, именно это и описано в еррате.
SpiritDance
бррр. погодите-ка.
Насколько я понимаю нужно получать соотношения периода к dutycicle 10/9 и 10/1

следовательно нужно задать начальные значения:

PWMcontroller->PWMC_CPRDR = 10;
PWMcontroller->PWMC_CDTYR = 1;

далее:

CPD = 0
PWMcontroller->PWMC_CUPDR = 9; //изменяем скважность сигнал должен поменяться

теперь Объясните мне зачем менять полярность на ходу?
AlexMad
Цитата(SpiritDance @ Nov 23 2006, 14:55) *
бррр. погодите-ка.
Насколько я понимаю нужно получать соотношения периода к dutycicle 10/9 и 10/1

следовательно нужно задать начальные значения:

PWMcontroller->PWMC_CPRDR = 10;
PWMcontroller->PWMC_CDTYR = 1;

далее:

CPD = 0
PWMcontroller->PWMC_CUPDR = 9; //изменяем скважность сигнал должен поменяться

теперь Объясните мне зачем менять полярность на ходу?


просто надо в процессе отладки понять, какая полярность мне нужна, поэтомму и меняю на ходу, причем меняю не полярность, а скважность (насчет отношения 10/1 и 10/9 вы правильно поняли, просто я использую 1/0.1 и 1/0.9, что есть то же самое). Да и дело не в том, зачем менять полярность, мне скважность подобрать надо, а с полярностью я просто столкнулся и меня это напугало, мне этими импульсами светодиод зажигать, если он будет почти всегда светиться (при неправильной полярности шима) то он сгорит к чертям.
З.Ы. вот только что сгорел sad.gif благо стоял копеечный, а потом там будет стоять диод стоимостью 70 уе и очень чувствительный к перебору тока.
SpiritDance
blink.gif Ну и схемотехника, блин, у вас.
beer_warrior
Цитата
благо стоял копеечный, а потом там будет стоять диод стоимостью 70 уе и очень чувствительный к перебору тока.

Может в таком случае стоит озаботится микросхемой драйвера?
AlexMad
Цитата(beer_warrior @ Nov 24 2006, 10:52) *
Цитата
благо стоял копеечный, а потом там будет стоять диод стоимостью 70 уе и очень чувствительный к перебору тока.

Может в таком случае стоит озаботится микросхемой драйвера?

Да не в драйвере дело, он в норме, просто засветил светодиод почти сразу с выхода шима, чтобы видеть результат... Дело, повторюсь - не в драйвере, даже на то, что не поменять на ходу полярность - могу плюнуть, просто я увидел, что это не работает и стал искать, в чем дело. Если это проблема САМа, то и пес с ней, если я чего-то неправильно делаю - надо понять, что именно.
etoja
диод за 70уе, наверное лазерный.
AlexMad
Цитата(etoja @ Nov 24 2006, 14:05) *
диод за 70уе, наверное лазерный.

нифига не лазерный, обычный, тока у него излучение в очень специфическом диапазоне
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.