A89: Technical explaination of low battery problem


[Prev][Next][Index][Thread]

A89: Technical explaination of low battery problem




    Most of us have found that when the batteries are low, trying to send a
file with Graph Link results in a checksum error.  This is in fact caused by
loss of data bytes from the computer.
    Try this: run a grayscale program (like Solitaire) on low batteries and
hold a key down.  You will notice that about every second, the screen
flashes.  The reason is that the interrupt handlers in TI's ROM are taking
longer than normal when batteries are low.  Since other interrupts cannot be
processed while a different one is going on, interrupt-based grayscale won't
work quite right.
    The link port uses its own interrupt to receive and send bytes to and
from the computer.  When the batteries are low, however, this interrupt is
not processed for some bytes as another interrupt is being processed.  The
link hardware only has a 1 byte receive buffer, so data is lost when this
latency problem occurs.  At the end of the transmission on the computer end
the calculator is still waiting for more data!  TI's link program reports
this as a checksum error, when in fact it is a data loss problem.  I have
verified this with my own link program (it sits there waiting for the calc
to acknowldege, but the calculator is waiting too!).
    This problem is definitely a _software_ bug.  Try running a program
which disables all interrupts (like Falldown or Phoenix).  It will run
perfectly smooth.  Grayscale programs which do not run any of TI's interrupt
procedures will also run perfectly smooth, even though interrupts are
enabled.
    I honestly do not know why TI decided to put this delay in their
interrupt procedures.  My only guess is that they go into some sort of
power-saving mode for a fraction of a second when the batteries get low.
    As this is a software problem, it should be possible to temporarily
override TI's interrupt procedures in order to allow files to transfer
properly (the link hardware description is in the Fargo docs).  Hopefully TI
will do something themselves about this irritating problem so that a hack is
not needed.

-Rusty Wagner