Gast
#1137207
Hi auf die Frage nach den einfachsten Betriebssystem bekam ich die Antwort: "while(1)". Ok das kann man nicht wirklich verneinen. Es kann zwar nicht viel, ist dafür aber auch wirklich einfach. Anfänger: Das ist jetzt auf keinen Fall der Weißheit letzter Schluss. Es soll nur als Anregung dienen. Profis: Macht ihr das auch so, oder so ähnlich? Konzept: In einen Timer wird eine Variable (oder ein Array von Variablen) runtergezählt. Meistens löst der Timer bei mir im ms Takt einen Interrupt aus. Wenn die Zahl 0 ist oder 255 (bei 16 Bit 65535) wird nicht runtergezählt. 0 ist das Zeichen das der Timer abgelaufen ist, und die höchste Zahl das der Timer aus ist. In den beiden Fällen wird der Timer nicht runtergezählt. Die while-schleife
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
Jetzt achte ich nurnoch darauf das die nicht Zeitkritischen Teile sehr schnell fertig sind. Also nicht deutlich über eine ms. Es muss ja nicht nach den Timer geschaut werden. Man kann auch schauen ob Daten am UART angekommen sind. Bei mir werden sie von einer interruptroutine in eine ringbuffer geschrieben und in der while-schleife wird nurnoch gepollt ob was im Buffer steht, das ist ja dann nichtmehr zeitkritisch. Durch den Timer hat man ein SEHR einfachen Prozess-Scheduler, dieser wird keine Funktion unterbrechen, man muss also selber dafür sorgen das diese nicht zu lange dauern. ps: es ist nichts großartiges, bloß habe ich in letzter Zeit Programme von "Profis" gesehen, die alles andere als "sauber" waren. Nicht hier, keine sorge. Ich hoffe man erkennt auf was ich rauswill :-)