Используется 18F4550. Сигнал снимается с ССР2,ножка RB3. На других ногах RC1, RC2(ССР1) всё работает. По описанию ССР2 мультиплексирована на две ноги - можно выбрать RC1 или RB3. По умолчанию - RC1, но мне нужна RB3. По описанию выбор осуществляется установкой третьего бита в регистре CCP2CON в ноль что я и делаю строчкой: CCP2CON.CCP2M3=0; . Ну а потом библиотечные функции:
PWM2_Init(5000);
PWM2_Set_Duty(100);//current_duty);
PWM2_Start();
Перед этим LATB.RB3 и TRIS.B3 устанавливаю на выход.
На выходе RB3 постоянный низкий уровень. Где ошибка? Буду рад любой посильной помощи.
Вот фрагмент кода:
Код:
void main()
{
LATB.RB3=0;
TRISB.RB3=0;
ADCON1 = 0x0F; // Configure AN pins as digital
CMCON = 7; // Disable comparators
//---------- interrupt settings----------------------------------
INTCON=0x10; // Enable INT0
INTCON2=0; // Set Falling Edge Trigger for INT0
INTCON.GIE=1; // Enable The Global Interrupt
//----------
LATD =0x0F;
LATE =0x03;
TRISD =0x0F;//Sets bits 0->3 to INPUT(for BUTTONs), but bits 4->7 to OUTPUT(for LCD)
TRISE =0x03;//Sets bits 0->1 to OUTPUT (for LCD control- RS and Enable)
CCP2CON.CCP2M3=0; //set PORTB.RB3 to PWM Mode;
PWM2_Init(5000); // Initialize PWM2 module at 5KHz
//set PORTB.RB3 to PWM Mode;
//==========
PWM2_Set_Duty(100);//current_duty;
PWM2_Start(); //start PWM;