I want to incease the duty cycle until the volts on R4 is equal to three ( feedback voltage to the pic greater than 153) then at this volt i want to stop the duty cycle.
Problems
the duty cycle is increased but it didnt stop when R4 it reach volts, duty cycle it seems to go up to 100% and i dont want this to occur
Please.! I need some one to help me on this task
Doc1.pdfCode:clear DEFINE ADC_BITS 8 DEFINE ADC_CLOCK 3 DEFINE ADC_SAMPLEUS 50 Feedback var word ADCON1=%00000010 duty VAR WORD ' Duty cycle value (CCPR1L:CCP1CON<5:4>) TRISA = %11111111 TRISB = %11111111 TRISC = %11111011 ' Set PORTC.2 (CCP1) to output CCP1CON = %00001100 ' Set CCP1 to PWM T2CON = %00000101 ' Turn on Timer2, Prescale=4 LED1 VAR PORTB.1 adcin 0, feedback ' Use formula to determine PR2 value for a 1KHz signal, ' 4MHz clock, and prescale=4. (4E6/(4*4*1E3))-1=249 PR2 = 249 ' Set PR2 to get 1KHz out ' Use formula to determine CCPR1L:CCP1CON<5:4> value for ' ends of range 0% to 100%. (249+1)*4*0=0 (0% value) ' (249+1)*4*1=1000 (100% value) duty =0 ' Set duty cycle to 20% while feedback>153 CCP1CON.4 = duty.0 ' Store duty to registers as CCP1CON.5 = duty.1 ' a 10-bit word CCPR1L = DUTY >> 2 duty = duty + 1 ' Increase duty cycle ' Since the total sweep of duty is 1000 (1000-0) and ' we are adding 1 for each loop, that results in 60 ' steps min to max. 1 second divided by 60 = 1mS Pause 1 ' Pause 1/60 of second wend End




Bookmarks