Hallo, ich habe ein Problem mit einem UART im MICO32 und hoffe das mir jemand helfen kann. Ich habe den UART mit 19200Bd aufgesetzt, er funktioniert gar nicht so schlecht wenn ich direkt im Hauptprogramm einfach solange warte, bis ich meine 18 BYTE empfangen habe. Nun möchte ich die Empfangsroutine jedoch interruptgesteuert machen, also wenn der UART ein BYTE empfangen soll er in die ISR "void UART_ISR (void)" hüpfen, damit ich die Bytes entsprechend behandeln kann, und habe keinen Plan wie das funktioniert. Falls jemand ein Beispiel hat wie man die ISR für einen UART schreibt dann bitte postet eure Lösung. Herzlichen Dank Bernhard
Hallo Bernhard, da hilft es, wenn man auf die generellen Serviceroutinen zurückgreift, die die Interruptverarbeitung organisieren. Im "Software Development User Guide" lm32_swdevug.pdf ab S. 193 ist der Prozess beschrieben. Im Wesentlichen musst Du die ISR dem System bekannt machen: MicoRegisterISR Viele Grüße Arndt
Hallo Arndt, erstmals vielen Danke für deine Antwort, habe das pdf durchforstet und (meiner Meinung nach) auch alles richtig gemacht, aber meine ISR wird einfach nicht durchlaufen!! Hättest du vielleicht ein Beispiel wo alles drin steht das man machen muss um einen UART interruptfähig zu machen?? Herzlichen Dank Bernhard P.
Hallo Bernhard, poste hier mal den C-Code, vielleicht findet sich ja eine Auffälligkeit. Mögliche Fehlerursachen sind: 1. Interruptnummer stimmt nicht mit der Nummer im MSB überein 2. Interrupts sind nicht freigegeben 3. Interrupt in der UART ist falsch konfiguriert -> Schau mal mit dem Reveal rein, ob die Interruptleitung überhaupt aktiviert wird. Viele Grüße Arndt
Hallo Arndt, ich habe einen UART aufgesetzt mit dem Namen "uart", der IRQ ist auf 0 gesetzt (höchste Priorität). Im c File: const char *UART_INSTANCE_NAME = "uart"; /* name of uart-instance in the platform */ und im main(void): unsigned int IntLevel = 0; MicoUartCtx_t *pUart = (MicoUartCtx_t *)MicoGetDevice(UART_INSTANCE_NAME); MicoEnableInterrupt(IntLevel); Bin mir jetzt nicht sicher was ich schreiben muss um die ISR zu initialisieren?! Herzlichen Dank Bernhard P.
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.