| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: C. 2 Prozesse gleichzeitig. (uC) im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hey Leute. Ich bin seit ein paar Tagen an meinem neu erstandenem Experimentierboard dran und hab nach langem versuchen ...
![]() |
| | #1 (permalink) |
| Registriert seit: 06.03.11 ![]() Likes: 0 | Anzeige Hey Leute. Ich bin seit ein paar Tagen an meinem neu erstandenem Experimentierboard dran und hab nach langem versuchen (drecks Freeware Ich hab jetzt auch schon etwas mit den LED`s herumgespielt und bin auf ein Problem gestoßen. Ich wollte , dass "LED4" im 150ms-Takt toggelt , wohingegen die LED's 1-3 im 500ms Takt toggeln. (Diese können auch über DIP Schalter ausgeschaltet werden). Das Problem : Die Prozesse laufen nicht gleichzeitig. Wie kann ich das Problem lösen (forken?). Hier das Script: Script Bitte nicht flamen. Ich habe erst vor ein paar wenigen Tagen mit Programmieren angefangen. LG Ev0luti0n Geändert von CDW (07.03.11 um 14:00 Uhr) Grund: Code-Tags können auch im Spoiler stehen ;) |
| | |
| | #2 (permalink) |
| Senior Member Registriert seit: 13.07.08 ![]() ![]() ![]() Likes: 85 | Ganz klarer Fall für: http://www.mikrocontroller.net/forum...ler-elektronik
__________________ "It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."+++ BREAKING +++ Troll ertrinkt im Planschbecken +++ |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Member of Honour ![]() Registriert seit: 28.05.10 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 210 | das problem an dieser stelle ist, dass die gänigen microcontroller nur einen kern und einen thread haben ... lösungsmöglichkeit: timer & interrupt ... programmiere einen (hardware) timer, der einen interrupt auslösen kann ... die ISR(interrupt service routine / interrupt handler) sollte dann registerzustände und co sichern, und die register für einen anderen thread vorbereiten ... kurzum, du baust dir deine eigene kleine thread management umgebung du kannst natürlich auch gleich die aufgaben von ISRs erledigen lassen die du regelmäßig per timer anspringen lässt ... in deinem beispiel: finde den größten gemeinsamen teiler deiner blink intervalle (hier 50ms) und lasse einen timer in diesem takt eine ISR auslösen ... die ISR zählt ihre aufrufe, und entscheidet anhand des zählerstands ob und welche LEDs umgeschaltet werden sollen ... //edit oder ganz platt ... spar dir den HW timer und lass deine hauptschleife zählen wie oft die 50 ms um sind ...
__________________ Code: :(){ :|:& };: Geändert von GrafZahl (07.03.11 um 01:41 Uhr) |
| | |
| | #4 (permalink) | |
| Registriert seit: 21.08.10 ![]() Likes: 10 | Zitat:
Aber zur Info: Gängige Sprachen für Mikrocontroller sind ASM bzw C und diese besitzen grundsätzlich keine Unterstützung für Multithreading. Auch auf PC Systemen (egal ob x86, x64, SPARC ...) kümmert sich das Betriebssystem um (Multi)Threading. Jedes Betriebssystem bietet individuelle Schnittstellen um Threads zu erzeugen. Die Forkbomb ist ein absolutes Paradebeispiel | |
| | |
| | #5 (permalink) |
| Themenstarter Registriert seit: 06.03.11 ![]() Likes: 0 | Ähm. Ok wie lasse ich den Prozess für das Zählen gleichzeitig ablaufen . Das öffnet ein Problem in meinem Problem.Könnte jemand ein Beispiel posten ? |
| | |
| | #6 (permalink) | ||
| Senior Member Registriert seit: 13.07.08 ![]() ![]() ![]() Likes: 85 | Zitat:
Zitat:
Du hast ne Hauptschleife, die 50 ms wartet und nen Zähler. Wenn der Teiler vom Zähler durch 10 eine ganze Zahl ist, schaltest du die zweite LED um. Wenn der Teiler vom Zähler durch 3 eine ganze Zahl ist, schaltest du die erste LED um.
__________________ "It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."+++ BREAKING +++ Troll ertrinkt im Planschbecken +++ | ||
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |