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

 
 
 
Reply to this topicStart new topic
> Не каждый раз запускается PWM
нуда
сообщение Aug 23 2010, 11:00
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 23-08-10
Пользователь №: 59 065



У MSP430F2234 на P4 выведен PWM от таймера B, так вот, при включении питания (даже через дебагер) не каждый раз PWM не каждый раз выводится наружу (подключен светодиод чечрез 10к и полевик) - то есть таймер B. счетчик считает, все настройки порта правильные - настроен на выход, селекшн выбран, OUTMOD_7, все нормально, но на выходе 0 (точнее типа IN), переустановка и обнуление этих битов во время работы в любой последовательности не помогает (если он не запустился при включении, если запустился, то выставление битов работает как надо), подскажите, что можно посмотреть еще, как исправить такой вот баг?
Go to the top of the page
 
+Quote Post
O.L.
сообщение Aug 23 2010, 11:26
Сообщение #2


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

Группа: Свой
Сообщений: 96
Регистрация: 10-06-05
Из: Новосибирск
Пользователь №: 5 890



Утверждение - "У MSP430F2234 на P4 выведен PWM от таймера B, так вот, при включении питания (даже через дебагер) не каждый раз PWM не каждый раз выводится наружу" вступает в противоречие с утверждением "таймер B. счетчик считает, все настройки порта правильные", это судя по симптомам.

Какую хотели получить частоту PWM?
Хорошо бы увидеть настройки таймера и всей причастной к Р4 периферии. Весь код сюда постить не нужно, только основное.
Есть ли работа с таймером В в прерывании? Если есть - неплохо бы увидеть код.
Кроме светодиода есть еще у Вас какой нибудь инструментарий, что бы определить работу PWM? Осциллограф например...
Go to the top of the page
 
+Quote Post
нуда
сообщение Aug 23 2010, 11:36
Сообщение #3





Группа: Новичок
Сообщений: 6
Регистрация: 23-08-10
Пользователь №: 59 065



Цитата(O.L. @ Aug 23 2010, 14:26) *
Утверждение - "У MSP430F2234 на P4 выведен PWM от таймера B, так вот, при включении питания (даже через дебагер) не каждый раз PWM не каждый раз выводится наружу" вступает в противоречие с утверждением "таймер B. счетчик считает, все настройки порта правильные", это судя по симптомам.

Какую хотели получить частоту PWM?
Хорошо бы увидеть настройки таймера и всей причастной к Р4 периферии. Весь код сюда постить не нужно, только основное.
Есть ли работа с таймером В в прерывании? Если есть - неплохо бы увидеть код.
Кроме светодиода есть еще у Вас какой нибудь инструментарий, что бы определить работу PWM? Осциллограф например...



Load mov.b &CALBC1_1MHZ,&BCSCTL1 ; Set DCO to 1MHz
mov.b &CALDCO_1MHZ,&DCOCTL ;
;
.....................................................;
;

SetupTB mov.w #256-1,&TBCCR0 ;PWM period
mov.w #TBSSEL_2 + MC_1, &TBCTL ;SMCLK, up mode
mov.w #OUTMOD_7, &TBCCTL1 ; CCR1 reset/set
mov.w #0128, &TBCCR1 ; CCR1 PWM duty cycle
mov.w #OUTMOD_7, &TBCCTL2 ; CCR1 reset/set
SetupP4 mov.b #0bfh, &P4DIR ; P4.1 - P4.6 output
mov.b #000h, &P4OUT
mov.b #070h, &P4SEL ; P4.1 - P4.6 TBx options
mov.w #0128, &TBCCR2 ; CCR1 PWM duty cycle


По прерыванию P1 изменял &TBCCR1
Осцил есть, (да вот кста противоречий не вижу - работу таймера можно проследить в дебагере - по изменению состояния счетчика, а вот порт иногда при включении оказывается в положении IN - по непотреблении тока при замыкании на землю и питание
Go to the top of the page
 
+Quote Post
O.L.
сообщение Aug 23 2010, 12:39
Сообщение #4


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

Группа: Свой
Сообщений: 96
Регистрация: 10-06-05
Из: Новосибирск
Пользователь №: 5 890



Не нравится мне вот эта строчка
"
mov.b #070h, &P4SEL ; P4.1 - P4.6 TBx options
"
из условия что
mov.w #OUTMOD_7, &TBCCTL1 ; CCR1 reset/set"
...
mov.w #OUTMOD_7, &TBCCTL2 ; CCR1 reset/set
"
выходы TimerB ТВ0 ТВ1 и ТВ2 подключены к P4.0, P4.1 и P4.2.
и со значением, которое записывается в P4SEL --> 01110000 (#070h) это ни как не совпадает. Либо в регистрах TBCCTLх переключите выходы на нужную секцию, либо в P4SEL запишите правильное значение.

А вот почему, модуль то работает то нет - из приведенного листинга понять невозможно. Но скорее всего кристалл тут не при чем...
Go to the top of the page
 
+Quote Post
нуда
сообщение Aug 23 2010, 12:51
Сообщение #5





Группа: Новичок
Сообщений: 6
Регистрация: 23-08-10
Пользователь №: 59 065



Цитата(O.L. @ Aug 23 2010, 15:39) *
"
выходы TimerB ТВ0 ТВ1 и ТВ2 подключены к P4.0, P4.1 и P4.2.
и со значением, которое записывается в P4SEL --> 01110000 (#070h) это ни как не совпадает. Либо в регистрах TBCCTLх переключите выходы на нужную секцию, либо в P4SEL запишите правильное значение.

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

Так ведь у MSP430F2234 ТВ0 ТВ1 и ТВ2 имеют выход и на P4.3 P4.4 и P4.5 соответственно?
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 23 2010, 13:44
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(нуда @ Aug 23 2010, 18:51) *
Так ведь у MSP430F2234 ТВ0 ТВ1 и ТВ2 имеют выход и на P4.3 P4.4 и P4.5 соответственно?

Вообще-то они сдублированы. TB0 можно выводить на P4.0 и на P4.3, TB1 можно выводить на P4.1 и на P4.4, TB0 можно выводить на P4.2 и на P4.5.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
нуда
сообщение Aug 23 2010, 14:06
Сообщение #7





Группа: Новичок
Сообщений: 6
Регистрация: 23-08-10
Пользователь №: 59 065



Цитата(rezident @ Aug 23 2010, 16:44) *
Вообще-то они сдублированы. TB0 можно выводить на P4.0 и на P4.3, TB1 можно выводить на P4.1 и на P4.4, TB0 можно выводить на P4.2 и на P4.5.


Ну тогда у меня все правильно?
А какие соображения по возможным глюкам?
Может дело в порядке активации порта и таймера?
Go to the top of the page
 
+Quote Post
нуда
сообщение Aug 23 2010, 15:11
Сообщение #8





Группа: Новичок
Сообщений: 6
Регистрация: 23-08-10
Пользователь №: 59 065



Ха, PWM после каждого ресета случайным образом работает/не работает, точнее не совсем случайным - если после предыдущего ресета он работал, то больше вероятность, что и в этот раз будет работать (для неработы - та же картина)
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 23 2010, 15:35
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Чудес не бывает. Изучайте тщательнее User's Guide. Мнится мне, что вы при перезагрузке новых значений длительности/периода нарушаете последовательность их или у вас неправильно обработчик прерывания описан или какое-то другое "лишнее" необрабатываемое прерывание вылетает. Поставьте "заглушки" вида for(;;); на все неиспользуемые вектора прерываний.
Go to the top of the page
 
+Quote Post
нуда
сообщение Aug 23 2010, 17:21
Сообщение #10





Группа: Новичок
Сообщений: 6
Регистрация: 23-08-10
Пользователь №: 59 065



Цитата(rezident @ Aug 23 2010, 18:35) *
Чудес не бывает. Изучайте тщательнее User's Guide. Мнится мне, что вы при перезагрузке новых значений длительности/периода нарушаете последовательность их или у вас неправильно обработчик прерывания описан или какое-то другое "лишнее" необрабатываемое прерывание вылетает. Поставьте "заглушки" вида for(;;); на все неиспользуемые вектора прерываний.

Косяк в другом оказался, я P4.6 использовал как вход 15 ADC10 и кроме всего прочего выставлял P4SEL 040h (привычка от PICа) и поскольку аналоговый сигнал около 0,2-0,5 Vcc то иногда это приводило "switch all TB0 to TB3 outputs to high impedance"
а я и Вы, таки, на это бит не обратили внимание
Go to the top of the page
 
+Quote Post

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

 


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


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