Thanks to TVB who gave me a gentle nudge in the direction of measuring instead of relying on the data sheet, my timer is working perfectly. The data sheet formula for calculating the output compare register value is simply wrong.
What I did was program the output compare pin back on and then let the processor do nothing but generate that 1ms interval. I set the pin to toggle on interrupt so that produced a 500.0000 Hz signal. Or at least it should have. I then adjusted the output compare register value until I got 499.9999 Hz. I already knew the quartz oscillator was a touch low in frequency so that was perfect. I just finished a 999 second run. Accurate to a millisecond. Here's the code that works. I need to prune out a bunch of commented-out stuff and make it pretty but it does work. I'll put it and a schematic on my website shortly. https://dl.dropboxusercontent.com/u/81715047/jgd_fixed_timer_code_11_05_2013.zip Thanks, guys, for the help, John -- John DeArmond Tellico Plains, Occupied TN http://www.fluxeon.com <-- THE source for induction heaters http://www.neon-john.com <-- email from here http://www.johndearmond.com <-- Best damned Blog on the net PGP key: wwwkeys.pgp.net: BCB68D77 -- You received this message because you are subscribed to the Google Groups "neonixie-l" group. To unsubscribe from this group and stop receiving emails from it, send an email to neonixie-l+unsubscr...@googlegroups.com. To post to this group, send an email to neonixie-l@googlegroups.com. To view this discussion on the web, visit https://groups.google.com/d/msgid/neonixie-l/52789D99.7090309%40neon-john.com. For more options, visit https://groups.google.com/groups/opt_out.