Forum: Mikrocontroller und Digitale Elektronik Event Router, Arm, Register nicht beschreibbar


von Manuel B. (desteini)


Lesenswert?

Hi Leute,

ich verzweifel solangsam dabei ein EXT_Interrupt für eine Tastatur 
einzurichten.
Hier meine Init dafür.
1
void atkeyb_init(void)
2
{
3
  inpt = kb_buffer;// Initialize buffer
4
  outpt = kb_buffer;
5
        DWORD regVal;
6
        static DWORD test, mu,du,er;
7
  atkeyb_buffcnt = 0;
8
  GPIO2_DR&=~(1<<KEYB_DATA_PIN);     //input
9
        GPIO2_DR &=~(1<<KEYB_CLOCK_PIN);   //Input
10
  //KEYB_DATA_PORT&=~(1<<KEYB_DATA_PIN);
11
        //TO-DO: Setting up event....
12
        ER_APR &= ~(1<<3);  // active LOW -> falling edge 
13
        ER_ATR |=(1<<3); // event is latched-
14
15
        SFSP2_7 = (1<<1)|(1<<2)|(1<<3); //Function 2: EXT3 ;Used Pull up
16
        SFSP2_6 = (1<<2)|(1<<3);        //use intern pullup
17
        
18
        ER_INT_CLR = 0x3FFFFFF;  // Clear all Interrupt-Flags
19
        ER_MASK_CLR = 0x3FFFFFF; //Clear all masks
20
  
21
        install_irq( EVT_INT, (void *)EXT_INT_3_Handler, 0x0A );
22
        EnableIntReq_IRQ( EVT_INT, ACTIVE_LOW, 0x0A );
23
        ER_MASK_SET |= (1<<3);  //activate EXT_Int 3 
24
        
25
        
26
        regVal = ER_PEND;
27
        mu=ER_APR;
28
        du=ER_MASK_SET;
29
        er=ER_MASK_CLR;
30
        
31
        flag.ascii=1;
32
        return;
33
}

Folgendes passiert: Programm springt dauerhaft in EventHandler Routine. 
Les ich das RSR Register aus, sagt er mir, der Grund für den Interrupt 
ist der VIC_Vector... logisch aber eigenltich sollte nur EXT_Int 3 
aktiviert sein.

Les ich die Variablen regVal,mu,du,er (also die Register) direkt nach 
der Beschreibung aus, zeigt mir "du,er" dauerhaft die 0.. Als würde ich 
Sie nicht beschreiben, dass wiederum erklärt, warum durch mein EXT_int3 
kein Int ausgelöst wird, aber WIESO kann ich Sie nicht beschreiben? 
Adressen stimmen...

Falls ich die flankensteuerung des EVT-Routers auf active High stelle, 
passiert garnichts.. -> sprich springt nie in Interrupt...

Bin solangsam am Ende, finde nichts im User Manual, dass mir verrät, 
warum ich die Register nicht beschreiben kann...

Irgendeiner eine Idee?

Dank euch vielmals ;)

von Jim M. (turboj)


Lesenswert?

Was ist das für ein MCU? Soll er auf die steigende oder fallende Flanke 
triggern?

Für Tastaturen sind Timer wegen des Prellens i.d.R. besser geeignet.

von Manuel B. (desteini)


Lesenswert?

ist ein LPC2919, hab ich total vergessen zu schreiben. Unterschiedlich, 
erstemal soll er auf die fallende Flanke triggern. Dann, wird getauscht, 
auf steigende, sodass ich weiß, wann das nächste Bit kommt.

In wie fern sind timer besser geeignet? das Clock signal gibt doch die 
Tastatur vor, in wie fern hilft mir da ein timer?

es ist eine TS2 Tastatur

von Manuel B. (desteini)


Lesenswert?

Evtl hilft noch dass sowohl 2 Can knoten über die IRQ als auch 2 timer 
laufen. Der Event_Router wird jedoch danach initialisiert, und selbst 
wenn ich beide ausschalte, verändert sich nichts.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.