Jump to content

    

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

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

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

Share this post


Link to post
Share on other sites

Ну чисто беглым взглядом в 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.

 

Не оно?

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

:russian_ru:

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

Share this post


Link to post
Share on other sites

Читаем параграф 12.1 , начиная со страницы 118.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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);
}

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this