If any kind of money is at stake, you had better be able to prove that your system gives all players a truly EQUAL chance to win. In any polled system, there will be a latency between when a button is pressed, and when it is detected. If button A is pressed first, but just missed it's poll slot, and button T gets pressed many time slots later, but in time to be seen before A, you have a legal problem. And what do you do if you DO see A & T appear simultaneously in a scan? Those few milliseconds difference are all a good lawyer would need to win damages from you should a losing player wish to dispute the fairness of the quiz buttons. Given the litigious nature of US citizens, you'd better make certain you butt is covered. It is not enough that you say that your system is fair. You have to be able to -prove- that is, in a courtroom, particularly when athletic events are now being timed to milliseconds because so much money is interested in the outcome. Bob Ammerman wrote: > > > A more complex, but deterministically simple method is to have a PIC in > > each transmitter. Each PIC has a crystal for accurate time keeping. At > > the start, all transmitters are given the current time (to the > > millisecond, perhaps) and a time slot in which they are able to > transmit.... > > I'm afraid this won't work too well as is. Assuming the time is reset in the > transmitters once an hour, and that the timing is controlled by a standard > 30 ppm crystal, then the error after one hour could be as large as: > > 3600 seconds * 30ppm = 0.108 seconds > > Obviously this is *not* good enough. > > Let's see if we can use this trick to move in the right direction however. > > I'd look at using a rfPIC12F67x transmitter and rfRXD0x20 receiver in both > the slave and base units. > > Now the base unit can regularly send out a poll that informs the > transmitters of the current time. > In response to that poll each transmitter sends a packet in a particular > timeslot. That packet can include the most recent keydown time. > > A couple neats tricks here are based on the fact that the polling occurs > continuously. This allows the slaves to keep track of the current time. If a > slave misses a poll or a few due to noise that is ok. It still transmits in > its standard timeslot. Similarly, the master can run thru several poll > sequences before accepting what looks like the first-down from all the > slaves. This allows for packets missed by the master. > > Finally, there is a neat way to set up the Ids in each slave: > > In configuration mode, the master repeatedly sends out a special packet > that, if effect, says: "Setting up unit N". > > When you press the button on a slave while the master is transmitting that > special packet, the slave then simply stores "N" in its eprom to track its > ID (which determines its timeslot). > > Note that everything runs on one frequency. Which means time division, which means 'not equal' unless you allow for 'simultaneous' presses, quantized down to two scans minimum (since you have at least 1 scan time latency for detecting a key press). How finely do you have to chop time before you can say something is 'first'? Robert -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu