|
ШИМ в SAM7s256, глюк? или грабля? |
|
|
|
Nov 22 2006, 21:58
|
Местный
  
Группа: Свой
Сообщений: 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, чтобы осциллографом увидеть изменение, длительность меняется, полярность - не всегда  . Специально купил мт-линк, слежу за PWMC_CPOL - оно не меняется, более того, просто меняю его с нуля на еденицу - на выходной сигнал это никак не влияет  . Кто виноват и что делать?
|
|
|
|
|
 |
Ответов
(1 - 10)
|
Nov 23 2006, 11:53
|
Местный
  
Группа: Свой
Сообщений: 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 на выходе НИЧЕГО не меняется, как предыдущий человек написал, именно это и описано в еррате.
|
|
|
|
|
Nov 23 2006, 21:50
|
Местный
  
Группа: Свой
Сообщений: 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, что есть то же самое). Да и дело не в том, зачем менять полярность, мне скважность подобрать надо, а с полярностью я просто столкнулся и меня это напугало, мне этими импульсами светодиод зажигать, если он будет почти всегда светиться (при неправильной полярности шима) то он сгорит к чертям. З.Ы. вот только что сгорел  благо стоял копеечный, а потом там будет стоять диод стоимостью 70 уе и очень чувствительный к перебору тока.
|
|
|
|
|
Nov 24 2006, 13:17
|
Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743

|
Цитата(beer_warrior @ Nov 24 2006, 10:52)  Цитата благо стоял копеечный, а потом там будет стоять диод стоимостью 70 уе и очень чувствительный к перебору тока. Может в таком случае стоит озаботится микросхемой драйвера? Да не в драйвере дело, он в норме, просто засветил светодиод почти сразу с выхода шима, чтобы видеть результат... Дело, повторюсь - не в драйвере, даже на то, что не поменять на ходу полярность - могу плюнуть, просто я увидел, что это не работает и стал искать, в чем дело. Если это проблема САМа, то и пес с ней, если я чего-то неправильно делаю - надо понять, что именно.
|
|
|
|
|
Nov 24 2006, 18:29
|
Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743

|
Цитата(etoja @ Nov 24 2006, 14:05)  диод за 70уе, наверное лазерный. нифига не лазерный, обычный, тока у него излучение в очень специфическом диапазоне
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|