[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-gcc-list] Fine Tuning code timings
From: |
David Kelly |
Subject: |
Re: [avr-gcc-list] Fine Tuning code timings |
Date: |
Fri, 28 Dec 2007 12:15:41 -0600 |
On Dec 28, 2007, at 11:00 AM, Jan Menzel wrote:
Hi Alex!
I'd suggest to take larrys approach and generate the start bit from
within the ISR. For precise timings you might add the bit time to
the current OCR value (insight the ISR). Using this schema you can
have an arbitrary (but constant) phase difference between the
interrupt and the time of changing the tx-pin. To start a
transmission I'd just set the OCR to TIMER + x where x shall be set
such that the ISR is called as fast as you like the transmission to
start.
That works so long as your interrupt doesn't have to wait on another
before it runs.
I recently had a problem where I used one interrupt to service an A/D
converter and another for management of the A/D. The A/D responded
much faster than I expected and these two interrupts overlapped. Most
of the time that was fine but when a 3rd interrupt was running the A/D
interrupts queued and were processed in priority order which was
reverse of arrival times. Thankfully it was repeatable and occurred at
least once every 10 seconds.
If your timing accuracy doesn't mind pseudorandom latencies then
manually driving output bits from interrupt is fine. If its picky then
connect the OCR timer to its output bit and let the hardware do it.
--
David Kelly N4HHE, address@hidden
========================================================================
Whom computers would destroy, they must first drive mad.