Re: Threads Kategorie: Programmierung C (von PeterS - 11.02.2011 17:44) | |
Als Antwort auf Re: Threads von Manfred - 11.02.2011 16:54
| |
> > > Hallo, > > > zu den neuen Zeitscheiben-Threads habe ich noch eine Frage, > > > da mein Programm mit der IDE 2.12 nicht mehr läuft. > > > Wie werden die Interrupts in dieses System eingeordnet. > > > Mein Programm hat 3 Threads, den 10 ms Interrupt und einen externen Interrupt, der im 1s- Rythmus > > > angesteuert wird. > > > Gruss > > > manfred > > > > Hallo Manfred, > > die Interrupts laufen wie bisher. Wenn Dein Programm nicht mehr läuft, hast > > Du auch die "#thread" Anweisungen in Dein Programm eingefügt? Seufz, ich hatte ja > > gehofft, das das Popup während der Installation gelesen wird, dort wird auf > > die �nderung hingewiesen. > > > > Gruss Peter > > Hallo Peter, > meine "#thread"-Anweisungen: > #thread 0, 0, 50 // Rest vom RAM, 500 ms Zyklus > #thread 1, 128, 1 // 128 byte RAM, 10 ms Zyklus > #thread 2, 128, 1 // 128 byte RAM, 10 ms Zyklus > Werden die Interrupts ohne Unterbrechung durch die Threads ausgeführt? > Mir ist unklar welche Prioritäten die Interrupts haben. > Kannst Du was dazu sagen? > Gruss Manfred Interrupts können nicht unterbrochen werden. INT_0 hat die höchste Priorität, INT_TIM3OVF die niedrigste (siehe Interrupt Tabelle). Interrupts arbeiten aber auf Bytecode Ebene, wenn der aktuell laufende Bytecode länger braucht (z.B. floating point ops) dann kann das länger dauern. Auch Bibliotheksaufrufe sind atomar, z.B. ein AbsDelay(2000); unterbricht Multithreading und Interrupts für 2000ms. Bei einem Zeitscheibenwert von 10ms kann es passieren, das wenn der aktuelle Bytecode 9ms benötigt, der neue Thread nur 1ms läuft, da seine Zeitscheibe abgelaufen ist. Daher für Threads lieber Werte ab 20ms und grö�er angeben. Gruss Peter | |
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum