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

 
 
> PWM на LPC2294, не получается запустить в режиме PWM
andrvisht
сообщение Aug 11 2009, 16:57
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064



нужно менять значение ШИМ на лету, задачка вроде стандартная, и для ней предлагается решение в виде PWM.
тестовый код для инициализации канала 2
Код
    PINSEL0 = 0x00008000; // PWM 2
    PWMMCR = 0x00000081; // MR2 - Reset, MR0 - interrupt
    PWMPCR = 0x00000404; // PWMSEL 2 = 1, PWMENA 2 = 1
    PWMMR1 = 0x80;
    PWMMR2 = 0x100;
    PWMMR0 = 0x50;
    PWMLER = 0x07;
    PWMTCR = 0x09; // PWM enable, Count start

работает только в симуляторе, в железе никак.
если поставить PWMTCR = 0x01; - все вертиться, но это уже не PWM ...
проверил даташит на предмет хитростей - ничего не нашел.

в книге Тревора Мартина обнаружил подобный пример, но там есть регистр PWMEMR а в LPC2294 его нет cranky.gif
причем значимость данного регистра как раз то чего не хватает.
вырезку из книги прикрепляю (стр. 100)

Если кто сталкивался, поделитесь опытом как бороться crying.gif
Прикрепленные файлы
Прикрепленный файл  p0100_sel.bmp ( 957.09 килобайт ) Кол-во скачиваний: 16
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GetSmart
сообщение Aug 11 2009, 22:14
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



А я в своих проектах обычно всегда прерывание от ШИМа использовал. Так что нужно PWMMCR = 0x02, остальные биты прерываний по вкусу smile.gif

Цитата(andrvisht @ Aug 12 2009, 03:42) *
а насчет 03 я все таки не согласен, это 0 и 1 бит в 1, кусок даташита приложил.

Однако я писал про PWMMCR = 0x03, а не про PWMTCR, который на картинке.

И ещё, я перед любыми изменениями в управляющих регистрах (MRx и LER это не касается) делаю PWMTCR = 0x02.

Цитата(andrvisht @ Aug 12 2009, 03:42) *
вот как всегда пару слов и описание возможностей сброса любым шимом, но уже без сноски по поводу того что MR0 должен быть больше чем любой сбрасывающий ... причем только в режиме PWM, без теневых он то работает ...!

На самом деле записывать в "рабочие" MRx можно абсолютно любые значения, даже большие MR0. Никаких глюков не будет. Например чтобы полностью включить пин в "1" в соответствующий MRx можно записать число большее MR0. При равном же значении (я не проверял, но) возможно будет иголка на пине. Чтобы полностью обнулить пин нужно записать в MRx = 0.

Сообщение отредактировал GetSmart - Aug 11 2009, 22:01


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Aug 12 2009, 05:45
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064



Цитата(GetSmart @ Aug 12 2009, 01:14) *
А я в своих проектах обычно всегда прерывание от ШИМа использовал. Так что нужно PWMMCR = 0x02, остальные биты прерываний по вкусу smile.gif

Однако я писал про PWMMCR = 0x03, а не про PWMTCR, который на картинке.


не заметил laughing.gif

Цитата
На самом деле записывать в "рабочие" MRx можно абсолютно любые значения, даже большие MR0. Никаких глюков не будет. Например чтобы полностью включить пин в "1" в соответствующий MRx можно записать число большее MR0. При равном же значении (я не проверял, но) возможно будет иголка на пине. Чтобы полностью обнулить пин нужно записать в MRx = 0.


иголки не будет, пишут что сброс имеет больший приоритет.
If both a set and a clear of a PWM output are requested at the same time, clear takes
precedence. This can occur when the set and clear match values are the same as in,
or when the set or clear value equals 0 and the other value equals the PWM rate.

писать можно, я вообщем то так и сбрасываю генерацию, просто с этим 0 каналом .... сбило с толку что можно сбрасывать останавливать любым MRx но все это не относиться к режиму с теневыми регистрами. Обычно они в каждом месте сноски ставят, а тут одно предложение.

зато теперь запомню надолго smile.gif
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 13 2009, 19:47
Сообщение #4


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(andrvisht @ Aug 12 2009, 11:45) *
писать можно, я вообщем то так и сбрасываю генерацию, просто с этим 0 каналом .... сбило с толку что можно сбрасывать останавливать любым MRx но все это не относиться к режиму с теневыми регистрами. Обычно они в каждом месте сноски ставят, а тут одно предложение.

зато теперь запомню надолго smile.gif

Кстати, это может быть новый "неоткрытый" пунктик в еррате.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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