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: