Hi, Rubik
a 555 running at 40 khz would easily solve your headache ...without any program timing difficulties ...
Alain
Hi, Rubik
a 555 running at 40 khz would easily solve your headache ...without any program timing difficulties ...
Alain
************************************************** ***********************
Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
************************************************** ***********************
IF there is the word "Problem" in your question ...
certainly the answer is " RTFM " or " RTFDataSheet " !!!
*****************************************
Just use the PIC12F683's internal hardware PWM peripheral. This way you can easily generate the 40KHz, turn it on and off, adjust the duty cycle and it runs in the background. The datasheet will show you exactly how to set it up.
Personally I don't like using the HPWM command in PB Pro because its too limited. It's easier to do it by manually setting the registers.
This is exactly how I generate the 40KHz IR for my lasertag systems.
'register setup (this is for a 16F684, so it may need to be modified slightly for your chip)
PR2 = 49 'PWM Period 40K=49
CCPR1L = 10 'PWM Duty Cycle
T2CON = 4 'Timer2 = ON; Prescale = 1:1
CCP1CON = 0 'PWM module off
'generate 1ms 40KHz pulse
CCP1CON = 12 'PWM ON
PauseUS 1000
CCP1CON = 0 'PWM OFF
Last edited by milestag; - 10th December 2005 at 17:07.
Woah I didn't know about the HPWM command. I'm still learning PBP. It seems like it will do the trick in my case.
I don't like using 555s because they heat up and their output changes.
I think that for a 40kHz square wave I need to say:
HPWM 1,127,40000
Right?
Last edited by RUBiksCUbe; - 11th December 2005 at 02:25.
Nop! HPWM will not do the job in this case... look in the PBP manual for the specific limitation on different crystal speed.
in your case you must write directly to the internal register related by the PWM module. look section 11 of the datasheet and look to the Milestag's example. I'm not a fan of HPWM myself too.
555's are not as this bad.. it's working great but it's still a RC oscillator ... like the PIC internal one. So both will shift a litlle bit with the temperature variation.
There's still some easy circuit to build with some CMOS inverter OR Route the CLKOUT of the PIC to a frequency divider OR.... OR...
Last edited by mister_e; - 11th December 2005 at 10:17.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
How do you write stuff to the internal registers? I've tried to set up my PIC as a counter before but I didn't know how to, and the COUNT command didn't really work too well. I'm looking through my PICs datasheet (12F683) and I don't understand what it's talking about. What is the CCP1CON register? It mentions it a lot in the PWM section.
It says that in order to set the PWM period I need to the PR2 register. How/What do I write?
Last edited by RUBiksCUbe; - 11th December 2005 at 16:27.
Read my earlier post again. I already showed you exactly how to write to those registers, and the values you need for 40KHz.
Just make sure that those are the identical register names.
I tried your code (the register names are the same) but it didn't work. The datasheet tells me to "Make the CCP1 pin an output by clearing the
TRISIO<2> bit." and your code didn't do that. How do I clear a bit?
Bookmarks