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

 
 
 
Reply to this topicStart new topic
> в мега16 вместо fast PWM включается Phase Correct, что-то я не понимаю
RodionGork
сообщение May 6 2009, 15:13
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 239
Регистрация: 30-10-07
Из: Санкт-Петербург
Пользователь №: 31 866



Уважаемые товарищи, здравствуйте!

Пытаюсь использовать ШИМ 1-го таймера в контроллере Мега16, в режиме №5 (fast PWM 8 bit). С удивлением замечено сначала на плате, потом и в симуляторе, что частота периода шима вдвое ниже, чем ожидалось. Стал изучать подробнее - вижу в симуляторе, что TCNT0 изменяется сначала вниз, потом вверх, как в Phase Correct PWM. Очень удивился, но что я сделал неправильно пока не отыскал. Буду признателен за подсказку.

Настраиваю таймер так:

ldi r16, 0xC1
out TCCR1A, r16
ldi r16, 0x09
out TCCR1B, r16

и вроде эти именно значения и видны в симуляторе. Тестил в AvrStudio4 и в VMLAB...

буду рад поучениям,
Родион
Go to the top of the page
 
+Quote Post
_Pasha
сообщение May 6 2009, 15:34
Сообщение #2


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(RodionGork @ May 6 2009, 18:13) *
 С удивлением замечено сначала на плате, потом и в симуляторе
В симуляторе - глюк, который никогда не исправят. Чтоб жизнь малиной...


ПишИте не числа, а выражения с именами бит. Тогда не обманете себя. И читабельней будет.

Fast PWM 8 bit реально работает. biggrin.gif По коду - все правильно. Попробуйте поставить условный бряк в студии на запись в регистры TCCR1* Есть подозрение, что кто-то его портит. Это если Вы не ошиблись насчет  "замечено сначала на плате"
Go to the top of the page
 
+Quote Post
Goodefine
сообщение May 6 2009, 15:38
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Цитата(RodionGork @ May 6 2009, 19:13) *
Пытаюсь использовать ШИМ 1-го таймера в контроллере Мега16, в режиме №5 (fast PWM 8 bit),..

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


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
RodionGork
сообщение May 6 2009, 15:59
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 239
Регистрация: 30-10-07
Из: Санкт-Петербург
Пользователь №: 31 866



Цитата(_Pasha @ May 6 2009, 19:34) *
В симуляторе - глюк, который никогда не исправят. Чтоб жизнь малиной...

в обоих симуляторах?

Цитата(_Pasha @ May 6 2009, 19:34) *
ПишИте не числа, а выражения с именами бит. Тогда не обманете себя. И читабельней будет.

Да фиг там читабельней будет... Я уж смирился с тем что процедура а-ля Setup_Hardware в любой программе является довольно мистическим местом и требует большого внимания и проверки если вдруг что... За битами все равно в доку придется лезть, чтоб понять что эта комбинация бит означает... Я обычно просто комментарий полный подписываю по поводу того, какие именно режимы включаются... Но сейчас я коммент нарочно удалил, ясно. ;-)

Цитата(_Pasha @ May 6 2009, 19:34) *
Fast PWM 8 bit реально работает. biggrin.gif По коду - все правильно. Попробуйте поставить условный бряк в студии на запись в регистры TCCR1* Есть подозрение, что кто-то его портит. Это если Вы не ошиблись насчет  "замечено сначала на плате"


Да никто его подлеца не портит... Я оч внимательно изучил... Состояние регистров остается таким как описано, и VMLAB даже подписывает что это "Fast PWM 8-bit" - тем не менее оба симулятора доходя до 0 или до FF начинают считать обратно!

Мне собственно именно хотелось услышать что он точно работает... ;-)))

Поскольку в целом я атмеловским докам привык доверять да и живу обычно в предположении что крайней мистики все-таки не бывает, особенно в простых вещах... Поищу еще...

Цитата(Goodefine @ May 6 2009, 19:38) *
Опишите, какой TOP, какие выводы таймера используете, инверсные или нет, прерывания если есть т.д., Полностью чего достичь хотите... А то соотносить Ваши настройки с таймером не так удобно как наоборот...

Если я опишу все это (то что закладывается в настройках таймера) своими словами, то скорее всего я получу ответ что "ну, вроде, все правильно делаешь"... ;-)))

Я включаю 5-й режим, вроде... Fast PWM 8-bit. выход устанавливается на compare, сбрасывается на top. прескалер CK/1... что еще?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение May 6 2009, 16:23
Сообщение #5


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(RodionGork @ May 6 2009, 18:59) *
в обоих симуляторах?


Не знаю, у меня всякие vmlab"ы , протеусы, кодвижны - все фтопку. Но если пишет правильно название режима - похоже, что в обоих sad.gif

Цитата
Я уж смирился с тем что процедура а-ля Setup_Hardware в любой программе является довольно мистическим местом

Все зависит от частоты перенастройки ресурса в программе. Если единожды - то конечно можно все цифирью расписать. А если нет?
Go to the top of the page
 
+Quote Post
RodionGork
сообщение May 6 2009, 16:50
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 239
Регистрация: 30-10-07
Из: Санкт-Петербург
Пользователь №: 31 866



да в целом конечно лучше б на плате отлаживать... Только плата от меня чуть ли не за тыщу километров... ;-)))

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

Насчет перенастройки ресурсов в программе... Обычно стараюсь не писать слов типа
in r16,BLAHAMUHA
ori r16,(1<<PGX1T5)|(1<<GGG13)
andi r16,~(1<<GGG12)
out BLAHAMUHA,r16
а создать уж макрос или процедурку... Типа REVERT_BLAHAMUHA_DIRECTION_AND_LOWER_SPEED ;-)))
А то и так не слишком вразумительные сокращения бывают, и недостаточно их бывает по смыслу порой... Да и меняются они иногда от доки к доке... ;-)))
Go to the top of the page
 
+Quote Post
Goodefine
сообщение May 6 2009, 18:28
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Скорее всего проблема именно в симуляторах. Со студией понятно, с VMLab-ом не совсем... Хотя вот Протеус, с вашими настройками, при тактовой в 1Мгц показывает частоту в 3906.25 Кгц, в точности с даташитовской формулой. И TCNT1L там инкрементируется до TOP (0x00FF), затем сбрасывается. Так что, все путем - ищите грабли в другом огороде...


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
RodionGork
сообщение May 7 2009, 04:06
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 239
Регистрация: 30-10-07
Из: Санкт-Петербург
Пользователь №: 31 866



Да, все-таки на железе все правильно работает... Просто удачно совпало что там неправильно сняли показания, а тут в симуляторах, действительно, в обоих глюк... В общем, вопрос иссяк. Протеус что ль действительно попробовать для таких гнусных целей использовать... Всем спасибо!
Go to the top of the page
 
+Quote Post

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

 


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


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