We're just messing with you when you miss something simple. Don't take any of it personal..![]()
When you forget to loop back to Main it runs off the end and loops back to the start. But that wasn't the only problem.
PCPWM on these can be a bit intimidating. Give this a shot.
All-in-all I would say you're doing pretty darn good just getting started with one of the hardest to use/understand PIC types in this range....Code:DEFINE OSC 20 Duty VAR Word TRISA = %11111111 TRISB = %00000000 TRISC = %00000010 TRISD = %00000000 TRISE = %00000000 ' Analog setup ' Single shot, single channel, Group A is taken and converted, A/D converter enabled ADCON0 = %00000001 ADCON1 = %00010000 ADCON2 = %11001111 ' Right justified, 24 Tad, Frc ADCON3 = 0 ' Disable all triggers ADCHS = 0 ' Channel select for AN0 ANSEL0 = %00000001 ' AN0 analog input, rest digital PORTB = 0 PORTD = 0 ' clear port PTCON0 = 0 ' timebase PTPERL = 0 ' ~19.4kHz at 20MHz PTPERH = 1 PWMCON0 = %01001111 PWMCON1 = %00000001 DTCON = 0 OVDCOND = 0 OVDCONS = 0 PTCON0 = 0 PTCON1 = %10000000 OVDCOND = %00000010 'PWM on PWM1 Main: ADCON0.1 = 1 ' Start the conversion While ADCON0.1=1 ' Wait for it to complete Wend Duty.HighByte = ADRESH ' get result from AN0 Duty.LowByte = ADRESL ' Increment buffer pointer PDC0L = Duty.LowByte PDC0H = Duty.HighByte PDC1L = Duty.LowByte PDC1H = Duty.HighByte PDC2L = Duty.LowByte PDC2H = Duty.HighByte PAUSE 500 GoTo Main![]()




Bookmarks