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

 
 
> Порты ввода\вывода - ШИМ, Порты ввода\вывода - ШИМ
jjjjjjein
сообщение Feb 13 2012, 10:12
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 31-10-11
Пользователь №: 68 059



Подскажите, как настроить ножку Р1.2 так, чтобы выводить на неё ШИМ сигнал?
Код
  // Инициализация порта ввода/вывода №1
       P1SEL = 0x00;                         // Все выводы порта настроены как цыфровые линии      
       P1DIR = 0x04;                         // 3 вывод порта настроен как выход
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
E.V.G.
сообщение Feb 14 2012, 05:07
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 31-01-10
Из: Арзамас
Пользователь №: 55 175



Переключение на любую альтернативную функцию любого вывода у любого порта выглядит так: PxSEL |= BITx.
До переключения на альтернативную функцию желательно установить необходимый для Вашей схемы потенциал на выходе порта.

Например, вывожу ноль:

// В самом начале программы
P1OUT &= BIT2; // пишем ноль в регистр для выдачи
P1DIR |= BIT2; // выводим его на вывод

// Там, где в программе нужно будет начать выводить ШИМ
P1SEL |= BIT2 // начался вывод ШИМ

//Там, где в программе нужно будет закончить выводить ШИМ
P1SEL &= ~BIT2 // закончился вывод ШИМ. выводится ноль

Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 14 2012, 15:04
Сообщение #3


Гуру
******

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



Цитата(E.V.G. @ Feb 14 2012, 10:07) *
Переключение на любую альтернативную функцию любого вывода у любого порта выглядит так: PxSEL |= BITx.
Это высказывание не является полностью корректным. Настройка альтернативной функции может потребовать изменения не только в регистрах модуля GPIO (PxSEL), но и в регистрах другого модуля, функцию которого вы собираетесь использовать. В конце datasheet конкретного МК имеются таблички для настроек основных и альтернативных функций пинов, где указаны имена регистров и битов, которые влияют на их функционирование.
Конкретно для использования выхода TA1 в качестве сигнала PWM таймера на выводе P1.2 в MSP430F135 требуется как минимум 4 команды, а для полной определенности следует проинициализировать все регистры таймера.
Код
//минимальный набор
P1SEL |= 1U<<2; //альтернативная функция пина
P1DIR |= 1U<<2; //выход TA1 от TimerA
TACCR1 = pwm_value;
TACCTL1 = OUTMOD_x; //выбор режима COMPARE и типа работы PWM, число x должно отличаться от 0, определяя тип PWM
//полный набор включает еще задание периода PWM и режим счета таймера - Up или Up/Down
TACCR0 = period_pwm; //значение периода PWM в режимах Up и Up/Down
TACCTL |= MC1; //запустить таймер в режиме Count Up

jjjjjjein, я бы не написал в вашем топике, если бы не резанула глаз неточность формулировки высказывания E.V.G. . Причиной моего нежелания писать в ваших топиках является тот факт, что вы упорно игнорируете все мои рекомендации
а) внимательно читать документацию, а именно: User's Guide и datasheet;
б) смотреть примеры, имеющиеся в поставке компиляторов (ссылка1, ссылка2, ссылка3) и на сайте производителя;
в) не плодить новые топики по каждому вопросу, а задавать их в одном топике, созданном вами ранее.
Go to the top of the page
 
+Quote Post

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

 


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


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