Interrupt

Hey leute !

ich hab mal gehört, dass wenn das hauptprogramm von einem interrupt unterbrochen wird und währenddessen daten über den Seriellen Eingang reinkommen, dass die dann verloren gehen.

Stimmt das?

Grüsse :slight_smile:

Ja. Beim Eintritt in eine ISR wird das globale Interrupt Enable Flag deaktiviert. Interrupts können sich also nicht gegenseitig unterbrechen.

Der Interrupt wird immer noch registriert (d.h. das entsprechende Interrupt Flag wird gesetzt) und nach dem Ende des aktuellen Interrupts abgearbeitet. Aber im Fall von Serial können dann die Daten schon vorüber sein.

Danke!

Hasst du denn eine Lösungsidee, damit man einen Sensor (MPU6050) mit interrupts auslesen kann und gleichzeitig meine kommunikation nicht zu grunde geht?

Hat jemand ne idee, wie mann den MPU6050 ohne interrupt auslesen könnte?

Hallo,
ich habe keine praktische Erfahrung mit MPU6050, lese im Playground aber, dass die Kommunikation über I2C läuft. Dafür ist nicht zwingend ein (externer) Interrupt notwendig. Einen I2C-Slave kann der Master nach Daten fragen, wann immer er das möchte. I2C und Serielle Kommunikation mit dem Monitor (IDE) stören sich bei mir auch nicht. Ob MPU6050 ohne Interrupt sinnvoll zu verwenden ist, weiß ich aber nicht.

Ob MPU6050 ohne Interrupt sinnvoll zu verwenden ist, weiß ich aber nicht

Eher im Gegenteil: Ob ein I2C Slave per Interrupt sinnvoll zu lesen ist, ist für mich die Frage ...

Wie machst du es denn und wo ist das Problem?
Manche hier wollen gern den ganzen Code, ich hätte lieber den kleinstmöglichen der kompiliert und das Problem zeigt :wink:

byte length = Wire.requestFrom(adr, maxlength); sollte erst mit einer Antwort zurückkehren, aber währenddessen Serial nicht blockieren ( selbst wenn der Serial EmpfangsPuffer voll wird... )

ja sowas hätte ich auch gemacht. das Auslesen der Sensordaten würde ich mir noch fast zutrauen.
aber wie dass man dann mit dem offset klar wird, oder wie dass man dann die Eulerwinke aus gyroskop und accelerometer berechnen kann, das wird schon schwieriger, habe ich das gefühl. desshalb hänge ich eben noch nen bissel an der I2Cdev lib.

ich benütze eben die I2Cdev lib, um den MPU6050 auszulesen. nebendrann habe ich meine Serielle kommunikation die über SerialEvent1() läuft. nun stürzt mir der Sensor immer ab, bessergesagt es gibt in dem klassischen Beispiel-Sketch die FIFO-Overflow-meldung.

Grüsse