jjjjjjein 0 13 февраля, 2012 Опубликовано 13 февраля, 2012 · Жалоба Подскажите, как настроить ножку Р1.2 так, чтобы выводить на неё ШИМ сигнал? // Инициализация порта ввода/вывода №1 P1SEL = 0x00; // Все выводы порта настроены как цыфровые линии P1DIR = 0x04; // 3 вывод порта настроен как выход Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
E.V.G. 0 14 февраля, 2012 Опубликовано 14 февраля, 2012 · Жалоба Переключение на любую альтернативную функцию любого вывода у любого порта выглядит так: PxSEL |= BITx. До переключения на альтернативную функцию желательно установить необходимый для Вашей схемы потенциал на выходе порта. Например, вывожу ноль: // В самом начале программы P1OUT &= BIT2; // пишем ноль в регистр для выдачи P1DIR |= BIT2; // выводим его на вывод // Там, где в программе нужно будет начать выводить ШИМ P1SEL |= BIT2 // начался вывод ШИМ //Там, где в программе нужно будет закончить выводить ШИМ P1SEL &= ~BIT2 // закончился вывод ШИМ. выводится ноль Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 14 февраля, 2012 Опубликовано 14 февраля, 2012 · Жалоба Переключение на любую альтернативную функцию любого вывода у любого порта выглядит так: 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) и на сайте производителя; в) не плодить новые топики по каждому вопросу, а задавать их в одном топике, созданном вами ранее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться