Well, the reason for suggesting an interrupt is simple. When you poll, you spend a finite time in checking the state of the input. If you miss this(fast revolutions), you will miss counts. However, if you use interrupts, you can be sure to catch a significantly higher number of pulses than you could using the poll technique. example - you may be able to read upto 20pulses per second using the poll techniqe, but upto 200 pulses per second or even more using interrupts.
Simple analogy to understand the difference between interrupts and polling.
Think of yourself seated at the PC doing some work. The time you take to respond to a person at the door is your 'poll time' and depends on what you are doing at the moment and how soon it will finish. This would be similar to checking every now and then to see if there is someone at the door.
On the contrary, if the person rings a doorbell (interrupts). You know that the door needs to be opened because of this signal. The way the processor handles it is to finish the current 'instruction' that it is executing and respond to the bell. This is much much faster than the earlier technique of checking the door now and then.
Please don't mind the over-simplification. It might help someone else understand.
I also second the idea that the opto interrupter may not be fast enough. But, from my experience, they work well into the KHz range.
I suggest your Main loop should just display the counts and the interrupt routine should just count.




Bookmarks