Re: A89: interrupts
[Prev][Next][Index][Thread]
Re: A89: interrupts
you have either:
Auto-Int 1
----------
Triggered every 4th time [600017] is incremented. It runs at
approximately 350 Hz.
or
Auto-Int 5
----------
Triggered when [600017] is set to its initial value. After ROM
initialization, it runs at approximately 18 Hz. See Ports.txt.
from ports.txt:
---------------
:RW [600016]
<........|76543210> = Programmable rate generator. Set the timer's init-
: ial value by writing it to this port. The timer is
: incremented every 6250 clock cycles, unless it has
: a value of zero, in which case it is reset to its
: initial value. The LCD is refreshed every 16th time
: this timer is incremented.
:
: See also Auto-Ints 1 and 5 in Interrupts.txt.
:
: The incrementation rate would be exactly 1600 Hz if
: the processor's clock rate were exactly 10 MHz. In
: reality, it averages around 1400 Hz, and is depen-
: dent on battery power (among other things).
:
: The ROM sets the initial value of the timer to $B2,
: effectively giving it a period of 79 ticks. It uses
: the timer for Auto Power Down, which is set to
: occur after 6000 interrupts. If the clock rate were
: 9.875 MHz, the interrupt rate would be 20 Hz and
: countdown delay would be 5 minutes. I think it is
: safe to assume that the designers of the TI-89/92+
: intended the APD delay to be 5 minutes.
:
: For this reason, and becaues it is unlikely that
: the designers intended the clock rate to be any-
: thing other than 10 MHz, I am inclined to think
: that they chose the initial value to be $B2 instead
: of $B1 for a very particular reason: auto-int 5
: will coincide with auto-int 1 with a period of 4,
: the maximum period possible. This insures that the
: TI-89/92+ will run more smoothly than it would if the
: two interrupts coincided with a period of 2 or 1.
: If you don't understand this, don't worry -- it is
: only a matter of curiosity.
Here is what Johan Borg writes about the same in
http://alh.dhs.org/ti89/89hw.txt:
600015:0 turns on the ~740kHz oscillator used for the LCD and the
timers
:1 turns on data to the LCD, if 0, the LCD is all "white"
:2 enables Autointerrupt 3, OSC/2^19 (1.4Hz)
:3 enables incrementing of $600017
:5..4 frequency of increment of $600017:
0 = OSC/2^5 (~22kHz)
1 = OSC/2^9 (~1.5kHz)
2 = OSC/2^12 (~18Hz)
3 = OSC/2^19 (1.4Hz)
:7 disables all the interrupt generating counters
(Autointerrupt 1 is NOT fixed at LCD-update*4, if the
number of rows or the row-change frequency is changed,
grayscale and similar things doesnt nececarily work)
default: $1b
600017-byte counter, Autointerrupt 5 generated when it changes from
FF to 00
contolled by $600015
That should cover about everything you need.
//Olle
Robin Kirkman wrote:
>
> are there any regularly occurring interrupts on the ti89 that i could
> set a handler for in the vector table? I need this for some
> multi-tasking work I'm doing...
>
> --robin
Follow-Ups:
References: