السلام عليكم
أريد برنامج لتغير duty cycle ل PWM 3 phase بإستعمال pototiometer عبر ADC (ADC1BUF2, ADC1BUF1, ADC1BUF0). كتبت البرنمج التالي لكننه لا يمشي. أرجو المساعدة. بارك الله فيكم
unsigned int duty_50;
unsigned int ADC_Get(unsigned int CH)
{
// CH - number of ADC channel
AD1CON1 = 0x0000; // SAMP bit = 0 ends sampling ...and starts converting
AD1CHS0 = CH;
ADCHS = 0x0022;
AD1CSSL = 0;
AD1CON3 = 0x0001; // Manual Sample, Tad = internal 2 Tcy
AD1CON2 = 0;
AD1CON1bits.ADON = 1; // Turn ADC ON
AD1CON1bits.SAMP = 1; // Start sampling ...
delay_us(2);
AD1CON1bits.SAMP = 0; // Start Converting
duty_50 = Pwm_Mc_Init(5000,1,1,0); // Initialization PWM module 1
duty_50 = Pwm_Mc_Init(5000,2,1,0); // Initialization PWM module 2
duty_50 = Pwm_Mc_Init(5000,3,1,0); // Initialization PWM module 3
Pwm_Mc_Start(); // Start PWM module
}
void main ()
{
//TRISBbits.TRISB0 = 0; // Configration du RB0 comme sortie
while (!AD1CON1bits.DONE);// conversion done?
//PORTB = ADC1BUF0; // yes then get ADC value
Pwm_Set_Duty(ADC1BUF0, 1);
Pwm_Set_Duty(ADC1BUF1, 2);
Pwm_Set_Duty(ADC1BUF2, 3);
delay_ms(500);
}