Yes Jim you're right :-) and the 24 bit version should actually be: 0x1000000 * 1 / 2.367 = 0x6C275E Regards Sergio On Thu, 12 Jun 2008, PAUL James wrote: > Sergio, > > Don't you mean 0x10000 * 1 / 2.367 = 0x6C27? > > jim > > -----Original Message----- > From: piclist-bounces@mit.edu [mailto:piclist-bounces@mit.edu] On Behalf > Of sergio masci > Sent: Thursday, June 12, 2008 7:20 PM > To: Microcontroller discussion list - Public. > Subject: Re: [EE] frequency dividing > > > > On Thu, 12 Jun 2008, Snail Instruments wrote: > > > At 09:26 PM 6/12/08, you wrote: > > >The speedo wants 2,458 pulses per kilometre. This works out at > > >dividing the wheel sensor frequency by about 2.367 with a maximum > > >frequency from the wheels of 320Hz at 150MPH (no I don't plan to go > > >that fast! Might as well design to the max speed though). > > > > Express the 1/2.458 as a fractional binary number: > > > > = 0.0110 1100 0010 0111 etc... or = 0.6C27 in hexadecimal > > > > Now make a 16 bit variable, add 0x6C27 to it for every incoming pulse. > > > Every time there is a carry set after addition, send an output pulse. > > The division ratio will be very close to 2.367 without large tables. > > This a good way of doing it and in case anyone is wonder how to derive > the magic number: > > 0x10000 * 1 / 2.458 = 0x6C27 > > If you wanted greater accuracy, say 24 bits instead of 16 > > 0x1000000 * 1 / 2.458 = 0x6C275E > > Regards > Sergio > -- > http://www.piclist.com PIC/SX FAQ & list archive View/change your > membership options at http://mailman.mit.edu/mailman/listinfo/piclist > > -- > http://www.piclist.com PIC/SX FAQ & list archive > View/change your membership options at > http://mailman.mit.edu/mailman/listinfo/piclist > -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist