Gibts eigentlich ne möglichkeit nen avr mit multithreading zu betreiben? ich denk da z.b. an tastaturabfrage + irgend n dauerauftrag + paralele interuptverarbeitung. müsst ich da dieses linux für microcontroller nehmen?
Ähm, wirkliches Multithreading gibts sowieso nicht, und ich denk nicht, dass sich Linux auf nen AVR portieren lässt - dafür ists doch etwas zu aufwendig. Die einfache Methode: kooperatives Multitasking void main() { while (1) { tastaturAbfragen(); dauerauftrag(); }; } Die beiden Funktionen geben einfach nach einer gewissen Zeit wieder zurück (d.h. tastaturAbfragen() fragt ab, ob sich grad was tut, wenn nicht, dann beendet sich die Funktion, dann kann dein dauerauftrag() was machen, wonach er sich wieder beendet, tastaturAbfragen() kommt wieder dran usw... Es gibt Betriebssysteme für uCs (zB RTX oder so ähnlich), die sind aber meistens ein Overkill und auf nem AVR denk ich ist das echt nicht norwendig, der Overhead wär viel zu groß. Du kannst es aber natürlich auch per Hand ausprogrammieren: 1. Timer stellen 2. Thread1 (=Funktion) starten 3. Wenn Timer überläuft, Stack, Register usw von Thread1 sichern 4. Timer wieder starten 5. Thread2 starten 6. Wieder auf Timerüberlauf warten, dann Register usw von Thread2 speicher, und die von Thread1 wiederherstellen usw Ist aber etwas aufwendig und wie gesagt meistens nicht erforderlich.
Hallo, such doch mal nach AVRX das ist ein preemptives Multitasking für AVRs und man kann seine Tasks sogar in assembler und in (gcc) c programmieren. Gruß Oli
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.