Hallo, ich arbeite an einem Funknetzwerk auf 802.15.4 Basis und möchte auf dem Server-Funkknoten die Interruptabhandlung beim Emfang eines Paketes möglichst effizient gestalten. D.h. der Server soll möglichst schnell auf das Paket des Clients reagieren aber dies nicht in der ISR tun - da sonst andere Interrupts zu lange blockiert wären. Gibt es ein Projekt/Beispielcode in dem eine Art "Dispatcher" schonmal realisiert wurde? Oder gibt es bessere möglichkeiten? Gruß Manuel
Im Atmel-MAC/BIOS haben wir während der ISR des Transceivers die globalen Interrupts wieder freigeschaltet, nachdem zuvor die Interrupts des Transceivers erst einmal ausgesetzt werden. Damit kann sie die TRX-ISR nicht selbst unterbrechen, aber alles andere kann (Timer etc.) kann weiter arbeiten. Mit dieser Methode ist es kein Problem, z. B. innerhalb der RX_START-Interruptbehandlung so lange zu warten, bis der Frame hereingetröpfelt ist. Am Ende der TRX-ISR werden die globalen Interrupts nochmal ausgeschaltet, die TRX-Interrupts wieder zugelassen, und die ISR wird beendet. Sollte der TRX in der Zwischenzeit einen weiteren Interrupt ausgelöst haben, so wird die ISR danach neu aufgerufen.
Hallo Jörg, du meinst dieser Aufwand ist zu groß? Also lieber keinen Dispatcher schreiben? Gruß Manuel
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.