-
-
Erfahrener Benutzer
Robotik Visionär
Das sei() in der ISR kann durchaus kritisch sein. Gerade durch das warten auf die UART in der ISR (was man auch nicht tun sollte) kann erneut der selbe Interrrupt aufgerufen werden. Auch wenn das sei() am ende des isr codes steht, kommt da noch das wiederherstellen der Register. Es kann also sehr leicht zu einem erneuten aufruf der selben ISR routine kommen, bevor sie zu ende ist und damit zum Crash wegen Stacküberlaufs und Hängen im der ISR. Gerade am Ende der ISR sollte keine sei() stehen, das wird ganz am Ende, nach dem wiederherstellen der Register ohnehin getan. Das cli() ist nicht so schlimm, aber definitiv überflüssig.
Hier geht das ganze noch gerade mal gut das der Interrupt abgeschaltet wird.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen