Gast
#587802
Hallo zusammen, auch wenn es jetzt auf den ersten Blick doof erscheint: Braucht man beim ARM-GCC 4.1.1 für den lpc2129 in den Interrupt-Routinen die ENTRY und EXIT-Makros? Beim Beispiel uart0_irq sind diese Makros noch im Code und beheben laut Kommentar ein Compiler-Problem. Das Beispiel blinkswitch_irq kommt hingegen ohne aus. Ich habe jetzt beide Varianten ausprobiert und immer noch ein (ähnliches, aber nicht gleiches) Problem. Eine ISR empfängt Daten von einem ENC28j60(uIP) und gibt die auf dem CAN-Bus 1 aus. CAN-Bus 2 empfängt die Daten und sollte sie in seiner ISR zur Kontrolle auf das UART ausgeben. Im Hintergrund läuft noch eine Timer-ISR mit ~500ms und die RTC-ISR (1s). Kurz ETH->CAN->UART. Wenn ich in der CAN-ISR sofort zurückspringe funktioniert das auch bei viel Verkehr einwandfrei. Auch die Ausgabe einzelner Zeichen über UART funktioniert sehr gut. Wenn die UART-ISR aber länger beschäftigt ist (getestet mit einfacher FOR-Schleife) und ich viele TCP-Pakete schnell sende, dann gibt es 2 Varianten: Mit ISR_ENTRY() & Co bleibt der Controller anscheinend stehen (oder kreist im Nichts) Ohne ISR_ENTRY() & ISR_EXIT() macht der Controller irgendwann einen Reset. Innerhalb der ISR kann doch keine andere ISR aufgerufen werden, oder? Bin mir derzeit nicht sicher, ob es an meinen ISRs, uIP oder ganz woanders liegt. MfG Andreas