реклама на сайте
подробности

 
 
> ШИМ в SAM7s256, глюк? или грабля?
AlexMad
сообщение Nov 22 2006, 21:58
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743



Суть задачи: получить импульсы определенной частоты и скважности...
При инициализации ставлю 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.
Кто виноват и что делать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SpiritDance
сообщение Nov 23 2006, 10:10
Сообщение #2


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Цитата(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" А пользоватся эрратой для того чтобы менять полярность сигнала - это вообще чудеса на виражах.


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
AlexMad
сообщение Nov 23 2006, 11:53
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743



Цитата(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 на выходе НИЧЕГО не меняется, как предыдущий человек написал, именно это и описано в еррате.
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Nov 23 2006, 14:55
Сообщение #4


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



бррр. погодите-ка.
Насколько я понимаю нужно получать соотношения периода к dutycicle 10/9 и 10/1

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

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

далее:

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

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


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
AlexMad
сообщение Nov 23 2006, 21:50
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743



Цитата(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 уе и очень чувствительный к перебору тока.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 23:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.05777 секунд с 7
ELECTRONIX ©2004-2016