Yes, but why?
Yes, but why?
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Last edited by savnik; - 12th June 2007 at 12:20.
Hi Niko!
Assembly is much more faster than any other lanquage. The code you posted I think is from an old AN from Microchip, right? I studied few years ago. My opinion is that you will need a top class PIC with the highest XTAL to reach the needed speed. Is it worth really?
Ioannis
Gave up on trying to write one yourself?
You'll never get any fast counting done with a PIC and straight PBP (maybe 250khz), assembly might get you 10Mhz, if you use a 40Mhz PIC and you use one of the TMR inputs.
However, if you take my idea (from the other thread), and use a pre-divider, you'll count much higher.
And check this out....
http://members.cox.net/berniekm/super.html
Hi Skimask. If you study the Microchip AN592, you 'll see that a humble PIC 16C55 is counting up to 50 MHz!
It use a clever technique to do that. But in PBP, I think it is quite difficult to obtain.
Ioannis
Right, using the prescaler, I understand that, 10ns rise/fall time on the RTCC pin...works fine I'm sure (although I've never tried that particular project on that particular PIC).
And that's what I was saying in the other thread about PBP. Use an external 74193 or something similar to pre-scale the count, and PBP should be able to count a fairly high number.
Everything is around the sampling time and the accuracy you want not much. Depending of your PIC characteristic, 50MHZ is easy to do, 1500 MHZ??? i have some doubt, but with external hardware divider, there's no real problem.
For high frequency... who want to use 1Sec time base? Nobody... 100mSec, 10mSec, 1mSec is more than possible.
Nothing hard, nothing clever at all. Set a Timer as counter, Clear it, enable it, do you samppling time,m stop it, read it display it. 4 code line or so.
@Savnik, Which PIC you want to use?
Have a look to T0CKI, T1CKI. This will reveal tons of things.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
I have use external divider(:256)Originally Posted by mister_e
Yes , i use the below code(from AN592)Originally Posted by mister_e
Code:asm enabletmr0 macro clrf TMR0 bsf _trisabuf,3 movf _trisabuf,W tris PORTA endm disabletmr0 macro bcf _trisabuf,3 bcf PORTA,3 movf _trisabuf,W tris PORTA endm movlw 0x10 ;initialize ddra movwf _trisabuf ; / disabletmr0 movlw 0x37 ;set the option register - B'00110111' option ;to measure high freq. clrw enabletmr0 ;enable tmr0 call delay5mS ;wait for 5mS disabletmr0 ;disable tmr0 call getfreq ;get freq in fhi and flo ;delay1ms, is a very accurate 1mS delay for a 4Mhz clock. delay1mS movlw 197 movwf _count1 nop goto $+1 goto $+1 dly1mS goto $+1 decfsz _count1, F goto dly1mS retlw 0 ;delay5mS uses delay1mS to get a very accurate 5 mS delay delay5mS call delay1mS call delay1mS call delay1mS call delay1mS call delay1mS movlw 4 movwf _count1 tweek5mS decfsz _count1, F goto tweek5mS return getfreq movf TMR0,W ;get the tmr0 value movwf _fhi ;save in fhi clrf _count1 ;keep track of the toggles toggle1 incf _count1, F ;inc for first bcf PORTA,3 ;toggle the input bsf PORTA,3 ; / movf TMR0,W ;see if tmr0 incremented subwf _fhi,W ; / btfsc STATUS,Z ;yes then skip goto toggle1 ;no then toggle again comf _count1, F ;else complement count incf _count1,W ;and increment movwf _flo ;save in flo retlw 0 ;return endasmi use 16f88.Originally Posted by mister_e
Last edited by savnik; - 13th June 2007 at 06:36.
Bookmarks