Forum: Mikrocontroller und Digitale Elektronik STM32F4 USB CDC Device EP Empty Interrupt


von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Ich habe die USB Device Lib von ST eingebunden (version V2.1.0) und ein 
paar Endpoints erstellt. Mit LibUSB kann ich auch Daten austauschen, 
solange ich es einzeln von Hand mache.

Ich sende ein Byte über UART an den STM32, dieser setzt es in den IN 
Endpoint und dann drücke ich eine Taste in der PC Software und das Byte 
wird gelesen. So weit so gut.

Nun wollte ich das ganze automatisch machen, also ein Thread erstellt, 
der nonstop den IN Endpoint abfrägt.

Aber nun "Hängt" der STM32 in der Interrupt Routine fest und es kommt 
immer der Empty Interrupt vom EP.
Ist ja klar, der EP ist nach der Übertragung ja auch wieder leer.

In der Datei usb_dcd_int.c der ST Lib:
1
static uint32_t DCD_HandleInEP_ISR(USB_OTG_CORE_HANDLE *pdev)
2
: :
3
      if (diepint.b.emptyintr)
4
      {
5
        DCD_WriteEmptyTxFifo(pdev , epnum);
6
        CLEAR_IN_EP_INTR(epnum, emptyintr);
7
      }
das "CLEAR_IN_EP_INTR()" wird aufgerufen, jedoch setzt der STM32 dieses 
Bit sofort wieder erneut.

Wie kann ich dieses Bit löschen, so dass dieser Interrupt nicht erneut 
auslöst?
Oder muss ich noch was anders konfigurieren in irgend welchen #define?

Danke für eure Hilfe, Markus

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.