I gave this a try, 10F222 at 8MHz. Generating roughly 300-3000Hz with the following code:Removing the PAUSEUS statements altoghether brings the frequency to 47kHz so there's plenty of margin.Code:#CONFIG __config _IOFSCS_8MHZ & _WDT_OFF & _MCLRE_OFF & _CP_OFF #ENDCONFIG DEFINE NO_CLRWDT 1 ' Forces manual use of CLRWDT GPIO = %0000 TRISIO = %00111101 ADCON0 = %01000001 ' GPIO 0 = Analog, ADC Enabled SPK VAR GPIO.1 Trigger VAR GPIO.2 GO_DONE VAR ADCON0.1 SomeValue CON 75 SomeConstant CON 12 Main: IF Trigger THEN GO_DONE = 1 SPK = 1 ' Set pin high WHILE GO_DONE : WEND ' AD conversion will always take the same amount of time PAUSEUS SomeValue + (ADRES * SomeConstant) GO_DONE = 1 SPK = 0 ' Set pin low WHILE GO_DONE : WEND ' AD conversion will always take the same amount of time PAUSEUS 16 + SomeValue + (ADRES * SomeConstant) ' The 16 above is to make the dutycycle closer to 50% than what it was ' without it. I'm quite surprised such a high number was needed and I'm ' not sure why that is. ENDIF Goto Main
/Henrik.




Bookmarks