Gast
#94394
Ich habe wieder mal ein Problem:
Ich steuere ein Display an, die Sync Signale liegen P1.5 und P1.6 (INT3
und INT4) an.
Daher habe ich die beiden Interrupts in der sect30.inc eingetragen:
;---------------------------------------------------------------
; variable vector section
;---------------------------------------------------------------
.section vector ; variable vector table
.org VECTOR_ADR
.lword dummy_int ; vector 0 (BRK)
.lword dummy_int ; Reserved (for user)
.lword dummy_int ; Reserved (for user)
.lword dummy_int ; Reserved (for user)
.glb _int3
.lword _int3 ; INT3 (for user)
.lword dummy_int ; TIMER B5 (for user)
.lword dummy_int ; TIMER B4 (for user)
.lword dummy_int ; TIMER B3 (for user)
.lword dummy_int ; INT 5 (for user)
.glb _int4
.lword _int4 ; INT4 (for user)
Im NC30 Compiler die Interrupts deklariert:
#pragma INTERRUPT int3
#pragma INTERRUPT int4
und aktiviert:
ifsr=64;
int4ic=6;
int3ic=22;
asm( "\tFSET I"); /* Enable interrupt */
void int3(void) //VSync
{
Byte=0;
return;
}
void int4(void) //PixelClk
{
p0 = FrameBuffer [Byte%16] [Byte/16];
Byte++;
while ((p1 & 64)== 64)
{}
p1=(p1 | 128);
while ((p1 & 64)== 0)
{}
p1=(p1 & 127);
return;
}
Int3 funktioniert, Int4 nicht, aber wiso ???