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

 
 
> Замечал ли кто-то странности с PWM на lpc2103 ?, непонятное поведение регистра сравнения в PWM режиме
avva
сообщение Jul 7 2008, 14:46
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 15-02-07
Из: Москва
Пользователь №: 25 386



Уважаемый ALL, может быть кто-то сталкивался, помогите в какую сторону копнуть...

IAR 5.11,
IAR Elf Linker for ARM 5.11.0.50622 (5.11.0.50622)
IAR C/C++ Compiler for ARM 5.11.0.20622 (5.11.0.20622)


Вывожу с помощью PWM синус по 800 точкам. таблица синуса объявлена полуволной!!! из констант
unsigned int const sin1024[400]={\ ... }; константы в сегменте флэш-памяти lpc2103.
Задача вывода PWM тривиальная - по прерыванию 3-го канала (период) обновляю данные регистра сравнения T0MR0. после RC цепочки на ноге МАТ0.0 смотрим синус осциллографом.

Имею абсолютно непонятную ситуацию - "задир" (то есть T0MR0 имеет сильно неверное значение) (иногда два "задира", а иногда - ни одного) на синусе, причем этот задир только на одной (левой "верхней" то бишь значенияT0MR0 должны лежать в диапазоне [0 .. 1/2Period ] ) полуволне, и самое поразительное, что в зависимости от положения звёзд на рабочем проекте "задир(ы)" то проявляются, то не проявляется. На тестовом проекте задир всегда постоянен и всегда один.


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


Проблема проявляется даже на прилагаемом тестовом проекте (должен заработать у каждого под иар5.11 ). кварц 12мГц, обычная отладка от Олимекса с 2103.

Прошу оказать конструктивную помощь, высказать замечание или кинуть в меня соответствующей ссылкой.
Умозрительные предположения прошу делать аккуратно, ибо пока все умозрительные предположения стукнулись головой о реальный камень...

ПРИЛАГАЕМЫЙ ПРОЕКТ Прикрепленный файл  test_pwm_issue_lpc2103.rar ( 89.07 килобайт ) Кол-во скачиваний: 114


Сообщение отредактировал avva - Jul 7 2008, 14:54


--------------------
С уважением,
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GetSmart
сообщение Jul 8 2008, 08:32
Сообщение #2


.
******

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



Вобщем так. Без LER регистра будет наблюдаться следующий эффект. При возникновении прерывания (обнуления таймера) таймер начинает тикать с нуля со старым действующим MR (пока он не перезагрузится). В этот момент начинает выполняться обработчик. Дойдя до места в котором программа будет готова перезагрузить регистр MR, если при этом таймер ещё не дошёл до старого MR и уже прошёл новый MR, то MATCH-пин никогда не обнулится, т.к. он обнуляется по совпадению значений. Этот эффект возникает в местах, когда значение MR относительно мало, то есть недалеко от пика синусоиды. Ещё один косяк возникает с противоположной стороны этого же пика синусоиды - там происходит "выпадение" одного из значений на синусоиде, когда происходит "обгон" старых значений MR новыми.

Для облегчения жизни программистам в настоящем PWM ввели регистр PWMLER.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
avva
сообщение Jul 8 2008, 09:16
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 15-02-07
Из: Москва
Пользователь №: 25 386



Уважаемый GetSmart, похоже, что вы оказались правы или где-то очень очень рядом около того.

СПАСИБО.


Во всяком случае, патч вот этих строчек в тестовом проекте привёл к желаемому результату, жаль только, что форма синуса изза остановки таймера периода в момент прерывания и перезагрузки регистров сравнения, немножечко будет искажена. думаю, искажением формы можно пренебречь

100+ T0TCR = 0x01; //перезапуск таймера после окончания прерывания таймера

218 T0MCR = 0x0E00; // добавление STOP в процедуре инита периода шима таймера0 канал3


--------------------
С уважением,
Go to the top of the page
 
+Quote Post
cebotor
сообщение Jul 8 2008, 10:26
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809



Цитата(avva @ Jul 8 2008, 13:16) *
100+ T0TCR = 0x01; //перезапуск таймера после окончания прерывания таймера

причина засора прояснилась, однако я совершенно не согласен что можно принебрегать формой синусоиды , вводя такие погрешности уважаемый АВВА вы из чистой синусоиды на спектре получите
фиг знает что.

Вопрос - почему нельзя перегружать значение по соответствующему прерыванию (для нулевого канала по прерыванию матча нулевого канала )- будет все хорошо и вперед и назад ? smile.gif


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- avva   Замечал ли кто-то странности с PWM на lpc2103 ?   Jul 7 2008, 14:46
- - GetSmart   Могу сказать, что делал почти точно так же на LPC2...   Jul 7 2008, 15:41
- - Alex03   Както странно, у Вас PWM_period_val и период тайме...   Jul 8 2008, 04:08
|- - avva   ЦитатаКакто странно, у Вас PWM_period_val и период...   Jul 8 2008, 07:08
|- - Alex03   Цитата(avva @ Jul 8 2008, 13:08) Кодi = ...   Jul 8 2008, 09:22
|- - avva   Alex03, спасибо, я учту в будущем. (серьёзно). Ци...   Jul 8 2008, 09:24
|- - Alex03   Цитата(avva @ Jul 8 2008, 15:24) Alex03, ...   Jul 8 2008, 10:01
|- - GetSmart   Цитата(cebotor @ Jul 8 2008, 16:26) Вопро...   Jul 8 2008, 10:56
|- - cebotor   Цитата(GetSmart @ Jul 8 2008, 14:56) Одна...   Jul 8 2008, 11:13
|- - GetSmart   Цитата(cebotor @ Jul 8 2008, 17:13) Cмысл...   Jul 8 2008, 11:35
- - GetSmart   Цитата(avva)Уважаемый GetSmart, похоже, что вы ока...   Jul 8 2008, 09:36
|- - avva   Цитата(GetSmart @ Jul 8 2008, 13:36) Я ок...   Jul 8 2008, 10:34
|- - alexander55   Цитата(GetSmart @ Jul 8 2008, 13:36) Я ок...   Jul 8 2008, 10:41
- - avva   Вариант 2, учитывающий абсолютно верное замечание ...   Jul 8 2008, 12:18
|- - Lotor   Цитата(avva @ Jul 8 2008, 16:18) val=( ((...   Jul 9 2008, 09:13
|- - avva   Цитата(Lotor @ Jul 9 2008, 13:13) Не хоче...   Jul 9 2008, 09:27
|- - Lotor   Цитата(avva @ Jul 9 2008, 13:27) внутри т...   Jul 9 2008, 09:34
- - Alex03   Если бы PWM_period_val было чётным, то можно было ...   Jul 10 2008, 05:13


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

 


RSS Текстовая версия Сейчас: 24th June 2025 - 08:32
Рейтинг@Mail.ru


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