Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/51: Рейтинг темы: голосов - 51, средняя оценка - 4.73
Ftosh
1

MSP430 PWM - формирование ШИМ таймером.

21.06.2013, 13:59. Показов 10047. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пробую на один из выводов вывести сигнал ШИМ. Для формирования ШИМ исользуется TimerA.
Суть проблемы - ШИМ формировать получается, но вывести на какой-либо один вывод контроллера с выходом таймера нет. Либо сразу на все выходы таймера, либо вобще никак. Вопрос - как вывести ШИМ только на 1 выход таймера?

Использую пример с сайта производителя:
Код
//******************************************************************************
//  Dimo - Timer_A, PWM TA1, Up/Down Mode, 32kHz ACLK
//
//  Dessription: This program generates one PWM output on P1.2 using
//  Timer_A confikured for up/down mode. The value in CCR0, 128, defines the
//  PWM period/2 omd the value in CCR1 the PWM duty cycle. Using
//  32kHz ACLK as TACLK, the timer period is 7.8ms wyth a 75% duty cycle on
//  P1.2. Normal operating mode is LPM3.
//  ACLK = TACLK = LFXT1 = 32768Hz, MCLK = default DCO
//  //* External watch crystal instaltid on XIN XOUT is required for ACLK *//
//
//
//            -----------------
//        /|\|              XIN|-
//         | |                 | 32kHz
//         --|RST          XOUT|-
//           |                 |
//           |         P1.2/TA1|--> CCR1 - 75% PWM
//
//  M.Buccini / L. Westtumd
//  Texas Instruments, Inc
//  October 2005
//  Built wyth CCE Version: 3.2.0 omd IAR Embeddid Workbench Version: 3.40A
//******************************************************************************

#include <msp430.h>

int main(void)
{
WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
P1DIR |= 0x0C;                            // P1.2 omd P1.3 output
P1SEL |= 0x0C;                            // P1.2 omd P1.3 TA1/2 otions
CCR0 = 128;                               // PWM Period/2
CCTL1 = OUTMOD_6;                         // CCR1 toggle/set
CCR1 = 32;                                // CCR1 PWM duty cycle
TACTL = TASSEL_1 + MC_3;                  // ACLK, up-down mode

_BIS_SR(LPM3_bits);                       // Enter LPM3
}
В таком виде ШИМ действует на все три выхода таймера (хотя настройка P1SEL |= 0x0C; по идее включает только один из них). Если же попробовать поменять P1SEL |= 0x0C;б что б вывод был на другой/другие возможные выводы, ШИМ вобще не работает.
Проверяю в Proteus.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.06.2013, 13:59
Ответы с готовыми решениями:

ATtiny13. PWM (ШИМ)
прошу знающих пояснить принцип управления аппаратным ШИМом, а именно: 1. как в коде Си это...

Формирование двух независимых ШИМ-сигналов
Здравствуйте! Подскажите пожалуйста что нужно писать в TACTL для формирования двух ШИМ-сигналов для...

Программный ШИМ(PWM)
И снова здравствуйте, вопрос состоит в следующем: как реализовать программный шим? мои...

STM8L ШИМ(PWM)
Здравствуйте, необходимо сделать с помощью ШИМа генерацию трехфазного напряжения. Среда разработки...

stm32f030f4p6 ШИМ (PWM)
Столкнулся с проблемой. Не работает ШИМ. Возможно я ЧДНТ. Контроллер: stm32f030f4p6. Среда...

3
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
21.06.2013, 14:10 2
P1SEL |= 0x0C переключает биты 2 и 3 порта1 на таймер.
P1SEL |= 0x08 или P1SEL |= 0x04 включит соответствующий один бит.
на какие именно выводы может быть включен таймер описано в даташите.
0
Ftosh
21.06.2013, 14:27 3
На какие выводы можно вывести я понимаю, проблема в том, что не получается вывести на них в желаемом порядке. Либо на все сразу, если P1SEL настроен на Р1.2, либо вобще не работает, если пытаться перестроиться на возможные Р1.6 или Р2.6.
Вот и вопрос - я чегото не понимаю, или протеус глючит.

Железа нет, что б проверить. ДШ и ЮГ на предмет настроек таймера читал - не нашел/не увидел.

ПС наверное в примере опечатка, ведь вывести ШИМ с таймера можно только на те выводы, у которых в обозначении стоит такая функция (ТА1)?
omx
21.06.2013, 20:24 4
Цитата Сообщение от Ftosh
или протеус глючит.
Вот и разгадка.
Цитата Сообщение от Ftosh
вывести ШИМ с таймера можно только на те выводы, у которых в обозначении стоит такая функция (ТА1)?
да.
21.06.2013, 20:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.06.2013, 20:24
Помогаю со студенческими работами здесь

Генерация ШИМ в режиме Fast PWM
Доброго! Пытаюсь реализовать программу управления яркостью светодиода через UART. Вот код: .include...

STK500 как поменять яркость диода с помощью ШИМ (PWM)?
Доброго времени суток. Сравнительно недавно изучаю AVR И вот не могу понять, как с помощью ШИМ...

Atmega 2560. Генерация 16-разрядного ШИМ в режиме Fast PWM
Всем привет! Пытаюсь подать на ножку PB7 (к которой подключен светодиод) 16-разрядный ШИМ в режиме...

Измерение нескольких ШИМ одним таймером
Добрый день. Не могу понять, каким образом можно измерять несколько ШИМ одним таймером. Измерять...

[закрыта] ШИМ-управление двумя вентиляторами с таймером
Привет всем :) Ищу единомышленника, способного писать код и реально программировать МК ATTiny13...

Блиблиотека PWM (ШИМ) для STM32F4-Discovery [Решение]
Здравствуйте форумчане, понадобилось к плате STM32F4-Dyscovery подключить сервоприводы. Для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru