First, I'd like to thank all of you who responded to my first query regarding PIC development boards. All of the ideas were good, but I finally decided on a SIMMStick board from Wirz Electronics. Since I don't design hardware for a living, and, in fact, hadn't soldered anything for a year or two, I was mainly interested in setting up a "building block" that I could simply use, without worrying too much about my design skills; I expected to spend most of my time on the software. As I have (;-). What I'm building is an X-10 data logging unit using a 10MHz 16F84. IF I can cram it all into 1K of instructions, it will do async serial I/O (probably at 1200 baud), sample the power line 120 times/second, talk to a real-time clock, and drive a printer at 19.2KB (this may be a bit ambitious, and the printer interface may have to be offloaded to a separate 16F84). Most of the interfacing requires reasonably accurate timing. I've built an interrupt driven timer queue based on TMR0 which _should_ handle up to three independent events, and it seems to function (in MPSIM) pretty much as I expect it to. Events get queued, are posted, and the queue gets updated. My first test was to try generating three independent square waves from Port A fed into a piezo "speaker" unit via .05 uF caps. Pretty simple, each event just inverts a particular output bit, then enqueues the next inversion. And three low tones: 262 Hz, 330 Hz, and 392 Hz. Nice C/E/G chord, right? Well, sort of. After cleaning up a few bugs (;-), what I wound up with is three tones, but they are all fairly distorted, as if a background "buzz" were getting mixed in from somewhere. My first thought was that the loss of the prescaler when I re-loaded TMR0 was causing (mildly) erratic timing, so I descreased the prescaler size. down from 128 to 32. Worst I could lose would be 32 Osc/4 clocks, right? Well, using a five-bit prescale counter made the distortion _worse_! And I haven't found anyone I can borrow a 'scope from, which would give me a clue as to what _kind_ of distortion I'm seeing. Now, I have no plans to build an electronic organ (;-), but if I can't get reliable timing with something as simple as this, how can I expect to clock serial bitstreams this way? The reason I'm posting this to PICLIST is that I've been beating my head against this for several days without getting anywhere. I'm hoping that someone can advise me as to whether what I'm trying to do is: a) simple (e.g. I'm fighting a massive design error on my part (;-)), b) A little complex, but doable (with limitations), c) Not practical due to limitations on the PIC 8-bit TMR0, or d) Something else entirely (;-). It _feels_ like I ought to be able to do this. Somehow. I'm just missing something obvious. Microchip App Note 555 uses something similar, and presuably it works, but all of its code is run as part of the ISR (Interrupt Service Routine). I had hoped I could keep the ISR short (65-odd instructions) and put most of the work outside it. Anyway, hints, clues, and pointers to code that does something similar would be appreciated. Or even a good reason why I'm hitting a brick wall. In the meantime, I'll go back and re-read AN555; maybe something will leap out at me. Frank McKenney / OS/2 Advisor (OS2BBS) McKenney Associates / Richmond, Virginia / (804) 320-4887 Internet: rrs0059@ibm.net / TalkLink: WZ01123