Hallo, ich habe hier ein Board mit einem Sensor, der über I2C läuft. Ich habe auf dem Board einen STM32F410RBT** Und ich nutze die HAL Driver siehe folgendes Manual: http://www.st.com/content/ccc/resource/technical/document/user_manual/2f/71/ba/b8/75/54/47/cf/DM00105879.pdf/files/DM00105879.pdf/jcr:content/translations/en.DM00105879.pdf auf Seite 440 ff sind folgende Funktionen: um Werte von meinen Sensor abzfragen muss ich immer erst Senden, dann den Wert auslesen, also immer einmal Transmit, dann Receive Das kann ich mit den Polling Funktionen so machen --> erst HAL_I2C_Master_Transmit dann HAL_I2C_Master_Receive aufrufen die Daten sind dann im "Datenpointer" (also an der Stelle, auf die der übergebene Pointer zeigt) Das läuft soweit ganz dufte!!!! jetzt möchte ich das mit den Interrupt-Funktionen machen, um während auf die Antwort vom I2C Sensor gewartet wird, etwas anders machen zu können! dann rufe ich zunächst diese hier auf: HAL_I2C_Master_Transmit_IT dann diese HAL_I2C_Master_Receive_IT "HAL_I2C_Master_Transmit_IT" löst wenn Daten gesendet sind folgende ISR aus: HAL_I2C_MasterTxCpltCallback() "HAL_I2C_Master_Receive_IT" löst wenn Daten empfangen sind folgende ISR aus: HAL_I2C_MasterRxCpltCallback() jetzt muss ich doch Transmit und Receive "irgendwie" gegeneinander "blocken"? z.B. nicht Receive bevor nicht Transmit fertig ist o.ä. und nicht bevor die Daten nicht tatsächlich gesendet bzw. empfangen wurden! Ich kann das noch weiter ausführen und habe da auch schon allerhand "Code" fabriziert! Doch mittlerweile bin ich mir nicht mehr so sicher, ob ich die Verwendung der I2C Interrupt-Funktionen richtig verstanden hab! Also Ist der Ansatz so richtig? Vorschläge zur Anwendung? Minimalbeispiel? GVG Schorsch
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.