As far as I get it, OC4I is called based on some timer that is updated regularly when the routine is executed.The chip config and timers is some area I am not really familiar with it, so if you shed some lights on the problem will be great.
Now on 94-95code we have
Code:
; public OC4I
OC4I:
ldd TOC4H ; Output Compare 4 Register (High)
addd #$99A
std TOC4H ; Output Compare 4 Register (High)
ldaa #$10
staa TFLG1 ; Timer Interrupt Flag Register 1
brset byte_1 2 loc_3A1A
If I get it correctly and there is not something else uncharted the OC4I is executed every 0.7813982ms.
Now I have some other question related with interrupts.
On 94-95 code eside can communicate over the aldl bus. It has E4 ID and the communication is handled by the SCISS. It works great when the engine is not running and I can log some memory regions real time for better understanding of the code. Somehow when the engine is started eside stops communicating. It just doesn`t handle the requests. Do you have ideas what can stops the pcm from servicing the SCISS requests. I will really like to get that fixed if possible. At least on lower rpms there will be plenty enough time for the pcm to handle communication.
I just found this at the very start of IRQ
Code:
ldaa #$10
clrb
std word_16F4
ldaa SCCR2 ; SCI Control Register
anda #$F
staa SCCR2 ; SCI Control Register
ldx #$1803
bclr 0,x 4
ldaa PORTD ; Port D Data
anda #$ED ; 'ý'
oraa #$2C ; ','
staa PORTD ; Port D Data
Could it be somehow related with the stopped communication.
Bookmarks