Timer2 has a prescaler and a postscaler. Am I right Melanie, am I right??
Timer2 has a prescaler and a postscaler. Am I right Melanie, am I right??
Yup, you're right... Homework Part Deux: Which now means what's the maximum Time you can let Timer2 run for at 4MHz with all the prescalers and postscalers enabled?
Boy - you're putting me through the mill. I come up with 16.777 seconds. Am I right... am I right??
Close, but no cigar...(we're talking about Timer2 in a PIC16F876/877)...
Hi Melanie.
Im working with a 18f4550 and using USB to communicate with a Visual basic program.
I need to measure the time an input pin is activated.
Normaly I use Pulsin but the USB commands must be polled every 1ms to keep contact with the computer. So how can I write a code that doesnt "halt" the program during the measuring?
The performance must be the same as Pulsin, 2us reolution at 20Mhz and it would be great if I can measure up to 500ms instead of 130ms like Pulsin.
Thanks in advance.
Stefan.
I would use say CCP1 pin of the PIC and confiure the CCP Module in Capture Mode. In this mode, the module will capture the 16-bit value of the TMR1 Register when the CCP1 pin changes state. This will occur with minimal intervention from your program. The resolution at 20MHz will be in steps of 200nS to a maximum of 16 bits - ie 13.1mS. Use the integral Hardware of the PIC to help you with this one. Unfortunately you're limited to the size of the TMR1 register. Alternatively, you can use instant interrupts in conjunction with TMR1 to give you longer time periods if you enable the prescaler. Without knowing what's going on in your application it's difficult to recommend.
OK. Timer2 is only 8 bits wide (didn't see that before). 1uS prescaled by 16 = 16uS. Multiply by 8 bits (255) = 4080uS = 4.08mS. Multiply by 16 postscaler = 65.28mS. Am I right? Am I right? I don't want a cigar - we're playing for a pack of Pall Mall.
Thanks for your fast reply.
In my application I have a wheel that rotates from 2rev/sec up to 110rev/sec. The wheel has a sensor wich is activated during 180degrees of a rotation. So during the first half of rot I measure the time it takes to turn 180deg and during the second half I will send the values to the computer.
So the measured times will be in range from 4,5ms to 250ms or actually 4500us to 250000us to get a good accuracy.
I must measure every rotation because I use the values to calculate the acceleration of the wheel.
I found an interesting post here: http://www.picbasic.co.uk/forum/showthread.php?t=2803
I will try to use some of this code but I need to extend the time to measure.
Is it possible to detect when the timer rolls over and then save the current values in a word and then reset the timer and continue to measure? In my VB application I can add the words togeather to get the complete time. If the timer ticks in 2us interval @ 20Mhz then I belive that I can get up to 65000 something units of 2us. Then I need only two words to store the time in to be able to measure up to 250ms. Am I right about this? Is it possible to do? If this works i hope that I can use two timers to measure two wheels at the same time.
Best Regards
Stefan.
Bookmarks