
далее заливаю вот такой код
CODE
#include<pic.h>
#define START_FUN 768
#include "delay.h"
int adc_res;
int pwm_val;
main(){
TRISA =0xFF;
TRISC = 0;
/******** настройка ШИМ *********/
T2CON = 0x01; //TMR2 выходной делитель 1:1, предделитель - 1:1
PR2 = 0xFF; //длительность ШИМ
CCPR1L = 0;
CCP1CON= 0x0C; //включить ШИМ
TMR2ON = 1; //TMR2 включить
/******** настройка АЦП **********/
ADCON0= 0x81; //модуль включен, Fosc/32
ADCON1= 0x8E; //выравнивание вправо, 1 вход аналоговый
ADIF = 0; //сбросить флаг прерывания от АЦП
DelayUs(40);
ADGO = 1; //начать преобразование
while (1){
if( ADIF ){
ADIF = 0;
adc_res = ADRESH * 256 + ADRESL;
if(adc_res > START_FUN){
pwm_val = (adc_res - START_FUN) * 5;
CCPR1L=(char)(pwm_val>>2);
CCP1CON=((char)(pwm_val<<4)&0x30) | 0x0C;
}
else{
pwm_val = 0;
CCPR1L=(char)(pwm_val>>2);
CCP1CON=((char)(pwm_val<<4)&0x30) | 0x0C;
}
DelayUs(40);
ADGO = 1;
}
}
}
#define START_FUN 768
#include "delay.h"
int adc_res;
int pwm_val;
main(){
TRISA =0xFF;
TRISC = 0;
/******** настройка ШИМ *********/
T2CON = 0x01; //TMR2 выходной делитель 1:1, предделитель - 1:1
PR2 = 0xFF; //длительность ШИМ
CCPR1L = 0;
CCP1CON= 0x0C; //включить ШИМ
TMR2ON = 1; //TMR2 включить
/******** настройка АЦП **********/
ADCON0= 0x81; //модуль включен, Fosc/32
ADCON1= 0x8E; //выравнивание вправо, 1 вход аналоговый
ADIF = 0; //сбросить флаг прерывания от АЦП
DelayUs(40);
ADGO = 1; //начать преобразование
while (1){
if( ADIF ){
ADIF = 0;
adc_res = ADRESH * 256 + ADRESL;
if(adc_res > START_FUN){
pwm_val = (adc_res - START_FUN) * 5;
CCPR1L=(char)(pwm_val>>2);
CCP1CON=((char)(pwm_val<<4)&0x30) | 0x0C;
}
else{
pwm_val = 0;
CCPR1L=(char)(pwm_val>>2);
CCP1CON=((char)(pwm_val<<4)&0x30) | 0x0C;
}
DelayUs(40);
ADGO = 1;
}
}
}
проблема заключается в том что на PORTC не генерируется ШИМ...он постоянно остается 0...что не так сделал подскажите пожалуйста...
PS Ув. админы извините за флуд сразу не заметил этого раздела...