Перейти к содержанию
    

Порты ввода\вывода - ШИМ

Подскажите, как настроить ножку Р1.2 так, чтобы выводить на неё ШИМ сигнал?

  // Инициализация порта ввода/вывода №1
       P1SEL = 0x00;                         // Все выводы порта настроены как цыфровые линии      
       P1DIR = 0x04;                         // 3 вывод порта настроен как выход

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Переключение на любую альтернативную функцию любого вывода у любого порта выглядит так: PxSEL |= BITx.

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

 

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

 

// В самом начале программы

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

P1DIR |= BIT2; // выводим его на вывод

 

// Там, где в программе нужно будет начать выводить ШИМ

P1SEL |= BIT2 // начался вывод ШИМ

 

//Там, где в программе нужно будет закончить выводить ШИМ

P1SEL &= ~BIT2 // закончился вывод ШИМ. выводится ноль

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Переключение на любую альтернативную функцию любого вывода у любого порта выглядит так: 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) и на сайте производителя;

в) не плодить новые топики по каждому вопросу, а задавать их в одном топике, созданном вами ранее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...