ok i'm sure youve checked this but have you checked the ports Analog input is turned off.
ANSELA = 0
ANSELB = 0
ANSELC = 0 ' Config A2d All OFF
ok i'm sure youve checked this but have you checked the ports Analog input is turned off.
ANSELA = 0
ANSELB = 0
ANSELC = 0 ' Config A2d All OFF
I hadn't but I was using porta.4 which isn't an analogue in. I am fairly sure that my pulse length if statements are wrong because I am defo getting good stuff at 4 mhz. It's just when wang it up to 16 mhz I get nout. I think it is all about pulsin pulse widths changing with different oscillator speeds. So looking for a pulsewidth at 4 mhz is different from a pulsewidth at 16. (I have to admit that I am a bit of a newbie at both pics and Ir protocols.)
Did you mention the part number of you MCU?
Dave
Always wear safety glasses while programming.
I'm guessing your still using the 18F24K22 ?
Check your OSCCON settings are
OSCCON = %01110010 ' Set internal 16Mhz OSC
OSCCON2 = %00001100
while OSCCON.2 = 0 : WEND ' Wait for stable flag
I am indeed using the 18f24k22
OSCCON = 10000 is my setting. Hmmn.
But aren't we missing the point? It seems that all the examples I have seen on reading Ir have been at 4 mhz so the pulsin timings are based on that. Because I am trying to run my pic at 16 mhz the pulsin length is different. And further to that, if I set my osc to 4 mhz without changing anything else I get results. It seems to be all about pulsin following the osc frequency.
"The resolution of PULSIN is dependent upon the oscillator frequency. If a 4MHz oscillator is used, the pulse width is returned in 10us increments. If a 20MHz oscillator is used, the pulse width will have a 2us resolution. Defining an OSC value has no effect on PULSIN. The resolution always changes with the actual oscillator speed."
If you are running at 16MHz then you are 4 times faster than if you were running at 4Mhz and the resolution of the pulse will be 2.5us instead of 10us.
If you were trying to detect a pulse of 1000us or 1ms then at 4Mhz you would be looking for a count of 100. At 16Mhz you need to be looking for a count of 400 therefore if you have used an example code as the basis of your project and it is intended for 4Mhz operation you need to increase all the count values by a factor of 4.
Keith
www.diyha.co.uk
www.kat5.tv
Bookmarks