www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik avr + multithreading?


Autor: Korbinian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ä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.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Oli Streisand (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.