Interrupt Handler wird nicht aufgerufen

OP #4249473
Lesenswert?

Hallo!

Ich versuche mit meinem Cortex M0 (NXP LPC1313) die Daten eines Gyros 
(MPU6050) über I2C auszulesen.
Mein I2C Interrupt Handler hat verschiedene States. Wenn ich nun 
versuche, das Start Bit mit Slave Adresse und R/W Bit zu senden, sendet 
er nur das Start Bit (obwohl im Dat Register der zu übertragende Wert 
eingetragen wird.
1
void I2C_M_Transfer(LPC_I2C_TypeDef *pI2C, i2c_transfer *transfer)
2
{
3
  /* Write Address and R/W bit to data register */
4
  I2C_WriteByte((transfer->slaveAddr << 1) | (transfer->txSz == 0));
5
  /* Enter to Master Transmitter mode */
6
  I2C_Start();
7
}
1
uint32_t I2C_WriteByte (uint8_t databyte)
2
{
3
  /* Make sure start bit is not active */
4
  if (LPC_I2C->CONSET & I2CONSET_STA)
5
  {
6
    LPC_I2C->CONCLR = I2CONCLR_STAC;
7
  }
8
  LPC_I2C->DAT = databyte & I2C_I2DAT_BITMASK;
9
}
1
static uint32_t I2C_Start()
2
{
3
    /*--- Issue a start condition ---*/
4
    LPC_I2C->CONSET = I2CONSET_STA;  /* Set Start flag */
5
}

Der State ändert sich (in dem Fall zu 0x8) und ein Interrupt löst aus. 
Mein I2C Interrupt Handler wird nicht aufgerufen, obwohl dieser richtig 
in der Nested Interrupt Tabelle steht. (Überprüft anhand des 
Datenblatts)
In meinem "cr_startup_lpc13xx.c" source file steht auch der richtige 
Name des Handlers, welcher in meinem "i2c.c" aufgerufen werden sollte.

Ich hoffe, jemand hat einen Lösungsansatz für mein Problem. Gerne hänge 
ich bei Bedarf auch noch die nötigen Files an.
Gast #4249493
Lesenswert?

Bastian W. schrieb:
> Der State ändert sich (in dem Fall zu 0x8) und ein Interrupt löst aus.
> Mein I2C Interrupt Handler wird nicht aufgerufen, obwohl dieser richtig
> in der Nested Interrupt Tabelle steht. (Überprüft anhand des
> Datenblatts)

Interrupts freigegeben?
In den Registern mal nachgeschaut ob auch Interrupts erzeugt werden 
(Status Bits der Controllregister)?

rgds
OP #4250600
Lesenswert?

6a66 schrieb:
> Bastian W. schrieb:
>> Der State ändert sich (in dem Fall zu 0x8) und ein Interrupt löst aus.
>> Mein I2C Interrupt Handler wird nicht aufgerufen, obwohl dieser richtig
>> in der Nested Interrupt Tabelle steht. (Überprüft anhand des
>> Datenblatts)
>
> Interrupts freigegeben?
> In den Registern mal nachgeschaut ob auch Interrupts erzeugt werden
> (Status Bits der Controllregister)?
>
> rgds

Ah, danke! Die NVIC wurden an der falschen Stelle aktiviert, jetzt 
scheint es zu gehen :)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren