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

PIC16F1827 как отключить режим PWM?

В даташите описывается последовательность процедур, как осуществить SETUP FOR PWM OPERATION. Все сделал, как в даташите. Все прекрасно работает. Меняю DUTY CYCLE. ШИМ шимит прекрасно. Теперь хочу остановить ШИМ. bit 2 регистра T2CON ставлю в 0. Вроде бы таймер должен остановиться. Хрен, не тут то было. ШИМ продолжает шимить. Ладно, думаю, выключу сам модуль, CCP1CON = 0; Остановился. Но на выходе CCP сидит 1. и никакими LATB =0; не удается поставить 0. Такое ощущение, что вывод остался привязан к модулю CCP. Полазил по интернету. нигде не нашел примеров реализации функций, деактивирующих ШИМ.

В чем тут может быть дело?  

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


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

Ну чисто беглым взглядом в Datasheet (стр. 208):

Цитата

Note

1: The corresponding TRIS bit must be cleared to enable the PWM output on the CCPx pin.

2: Clearing the CCPxCON register will relinquish control of the CCPx pin.

 

Не оно?

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


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

Спасибо конечно, но я же писал в начальном посте: "Ладно, думаю, выключу сам модуль, CCP1CON = 0; Остановился. Но на выходе CCP сидит 1. и никакими LATB =0; не удается поставить 0."

Пробовал другие модули CCP. В CCP3 при отключении CCP3CON = 0; на выводе устанавливается 0. Но управлять этим выводом, записывая в рег. LATx я все равно не могу.

Сдается мне, что дело в глючном симуляторе. Соберу в железе, попробую.

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


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

:russian_ru:

Что ж сразу не сказали, что симулятор использовали. Так до бесконечности можно гадать. Соберите в железе, ИМХО, будет все работать.

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


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

Ну..., почитал. И ранее читал неоднократно. Скажу по секрету, даже пользовался тем, что там написано. И что ж там такого интересного, что относится к данной проблеме? Скажите уж, не интригуйте. Может у меня глаз замылился, и главного я не вижу.

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


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

Нужно проверить регистр MDCON, если речь идет о пине RB3.

Я имел ввиду, что порядок приоритетов ремапа таков, что выходная защелка всегда имеет низший приоритет.

Кроме того, совершенно непонятно почему работает ШИМ при остановленном таймере. Проверьте бит TMRxON по факту его реального состояния, а не факту наличия инструкции по его сбросу. Проверьте TMRS регистр CCP модуля. Может ассоциирован другой таймер.

Вы работаете в дебаге?

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


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

можно вот так инициализировать

Spoiler
#include <xc.h>
#include "epwm2.h"
 
/**
Section: Macro Declarations
*/
 
#define PWM2_INITIALIZE_DUTY_VALUE 511
 
/**
Section: EPWM Module APIs
*/
 
void EPWM2_Initialize (void)
{
// Set the PWM to the options selected in MPLAB® Code Configurator
 
// CCP2M P2AP2Chi_P2BP2Dlo; P2M halfbridge; DC2B 48;
CCP2CON = 0xBD;
 
// PSS2BD P2BP2D_0; CCP2AS disabled; CCP2ASE operating; PSS2AC P2AP2C_0;
ECCP2AS = 0x00;
 
// P2RSEN automatic_restart; P2DC 0;
PWM2CON = 0x80;
 
// STR2D P2D_to_port; STR2C P2C_to_port; STR2B P2B_to_port; STR2A P2A_to_port; STR2SYNC start_at_begin;
PSTR2CON = 0x00;
 
// CCPR2L 127;
CCPR2L = 0x7F;
 
// CCPR2H 0x0;
CCPR2H = 0x00;
 
 
// Selecting Timer2
CCPTMRS0bits.C2TSEL = 0x0;
}
 
void EPWM2_LoadDutyValue(uint16_t dutyValue)
{
// Writing to 8 MSBs of pwm duty cycle in CCPRL register
CCPR2L = ((dutyValue & 0x03FC)>>2);
 
// Writing to 2 LSBs of pwm duty cycle in CCPCON register
CCP2CON = (CCP2CON & 0xCF) | ((dutyValue & 0x0003)<<4);
}

 

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


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

Вопрос об инициализации никто не задавал. Вопрос стоял об ОСТАНОВКЕ модуля и получении на выходе НИЗКОГО УРОВНЯ.

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


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

Спасибо всем. Извините, что отнял ваше время. Собрал в железе - все заработало!

Чтобы никто не повторял мои ошибки: Симулятор - Proteus 8.4 SP0 - в помойку. ...ну если не сам симулятор, то модель PIC16F1827 точно в нее родимую.

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


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

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

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

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

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

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

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

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

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

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