avr + multithreading?

Gast
Ä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.
Gast
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 24 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.