mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu: Multiprozessing Siemens SAB 80515/SAB 80C515


Autor: Sebastian F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

ich brauche hilfe und zwar

soll ich fuer die schule ein programm schreiben welches auf dem
controller (SAB 80515/SAB 80C515 (Siemens)) mehrere Prozesse laufen
laesst (Multiprocessing)

leider habe ich keine ahnung wie ich das angehen könnte

könntet ihr mit vielleicht einen link zu solch einem programm geben?
oder mir vielleicht erklären wie ich die aufgabe bewältigen könnte?

danke im voraus :)

gruss

Autor: Mark de Jong Electronics (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Kuck mal nach uC/OS II
http://www.ucos-ii.com/

Grüße Mark,

Autor: Sebastian F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hm also ich brauche den assembler code ... kann auch ein ganz einfaches
programm sein was einfach nur doppelt zaehlt o.ä. nicht ganze os's

danke trotzdem :)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenns Assembler sein soll, schließt sich ein komplexes RTOS aus.

Da hilft nur die Main-Loop Methode:

Du schreibst also einfach alle Prozesse hintereinander und springst
ganz am Ende wieder zum Anfang zurück.

Damit das ganze aber von außen als quasi gleichzeitig wirkt, darf jeder
prozeß nur soviel machen, daß sich keine merkbare Verzögerung ergibt.
Daher sind alle Wartezeiten über einen Timer zu machen und der Prozeß
wird solange übersprungen, bis die Wartezeit abgelaufen ist.
In einer Variable merkt sich jeder Prozeß, wo er vorher war, d.h. wo er
jetzt weitermachen muß.

Klingt für einen Anfänger sehr kompliziert und ist es auch.

Wundert mich daher, daß sowas ein Schulprojekt sein soll.


Peter

Autor: Sebastian F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hört sich ja gut and ... ich weiss ist bestimmt viel arbeit aber
koenntest du evtl ein kurzes beispielprogramm posten? muss nicht
unbedingt auch laufen ... nur das ich das halt mal sehe wie das
auszusehen hat

danke schonmal

Autor: edi.edi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

da fragt man sich warum der lehrer seinem schueler nicht mehr wissen
uebertragen kann....vielleicht war auch der schueler geistig
abwesend,als bestimmte argumente behandelt wurden.?

es kommen immer wieder solche hilferufe...und immer sagen diese
schueler sie haetten keine ahnung von der materie.

da muss etwas faul sein.

motivierte schueler scheinen sie nicht zu sein.
kein guter anfang.....

ed

Autor: Sebastian F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1) war ich immer anwesend... geistig wie koerperlich
2) haben wir noch nie variablen durchgenommen
3) ist der lehrer zwar hilfsbereit aber leider am sonntagen, an denen
ich zeit habe mich auch ausserhalb der schule mit der materie zu
befassen, nicht in der schule oder bei mir zuhause anwesend.
4) war die aufgabenstellung folgende "schreiben sie ein
"multiprozessing-programm" fuer den oben genannten microcontroler
5) habe ich hier auf hilfe gehofft
6) sollten sie nichts veralgemeinern
7) lasse ich mich von ihnen nicht angreifen

hat denn nun jemand auch noch konstruktive vorschläge/hilfestellungen,
oder driftet meine frage nach hilfe jetzt in veralgemeinerungen und
"beleidigungen" ab?

danke

Autor: Lars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sebastian

also ich studiere Informatik im sechsten Semster und wir haben eine
ähnliche Aufgabe gerade zu bewältigen. Also kann ich nur sagen das euer
Lehrer eine zeimliche Aufgabe an euch stellt.
Unsere Aufgabe war bzw. ist ein Multi- Threading OS für einen 80515 in
C zu schreiben, das mehrere Threads verwalten kann und auch einige aus
Unix bekannte Funktionen bereitstellt. Bei Interesse kann ich Dir den
Quellcode per E-Mail zusenden.

Gruß

Lasse

Autor: Sebastian F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja wenn es sich um den assembler quellcoode handelt dann gern :) mit c
kann ich bei der aufgabe nicht viel anfangen :)

danke schonmal

ps: email steht oben :)

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter: Diese Methode hat einen Nachteil: "Hängt" einer der Prozesse
und kehrt nicht zum Mainloop zurück, dann wars das.
Ich bevorzuge in dieser Hinsicht die "Zeitscheibensteuerung". Alle
Prozesse werden von einer übergeordneten Schicht verwaltet, die per
Timer einfach brachial den aktuell laufenden Prozess unterbricht, alle
Register sichert und die Kontrolle an den nächsten weitergibt.
So etwas habe ich mal vor knapp 10 Jahren für einen MCS-51 geschrieben
- aber frag mich jetzt keiner, wo der Code ist.
Prinzipiell besteht das Ganze aus einem Hauptprogramm zur
Initialisierung, das Umschalten wird in der Timer-Interrupt-Routine
erledigt.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann man noch ein wenig verfeinern, indem  die Task-Zeiten dynamisch
verteilt werden.
Das einfachste Verfahren dabei: auf irgendwas wartende Prozesse geben
die Steuerung direkt zurück und vertrödeln die ihnen eigentlich
zustehende Zeit nicht.
Komplizierter wirds, wenn man auch noch Prioritäten verteilen will,
d.h. wichtigere Prozesse bekommen mehr Rechenzeit wenn viel zu tun ist,
was soweit führen kann, dass weniger wichtige Prozesse nur jedes zweite,
dritte oder gar zehnte Mal zum Zuge kommen. Dabei gewinnt man doppelt,
da die Taskumschaltung auch einiges an Rechenzeit benötigt.

Autor: Lars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das OS besteht komplett aus C. Indem Fall kann ich Dir leider nicht
weiterhelfen.

Gruß
Lasse

Autor: Sebastian F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Damit das ganze aber von außen als quasi gleichzeitig wirkt, darf
jeder
prozeß nur soviel machen, daß sich keine merkbare Verzögerung ergibt.
Daher sind alle Wartezeiten über einen Timer zu machen und der Prozeß
wird solange übersprungen, bis die Wartezeit abgelaufen ist.
In einer Variable merkt sich jeder Prozeß, wo er vorher war, d.h. wo er
jetzt weitermachen muß."

wielang soll denn der timer sein?
ich mein kann man nicht einfach die prozesse aufteilen und die
einzelnen teile direkt hintereinander schreiben? ich mein dann könnte
man sich den timer sparen oder?

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kennt von euch keiner diese Seite ?
http://www.erikbuchmann.de

Unter Softwareprojekte, Multitasking...
Mit Assemblercode und Erklärung

Autor: Khani (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

erstens möchte ich mich thkais anschließen, was µController betrifft.
Ein komplexer Scheduler (der Teil des Betriebssystems, welcher die
Ausführung der einzelnen Prozesse ohne Konflikte übernimmt) ist hier
meist nicht realisierbar - zumindest bei Controllern im niedrigen
Leistungsspektrum. (8bit, 16bit, < 40 MHz intern, wenig Speicher).
Natürlich kann man da noch etwas feilen und eine Rückgabe der Controlle
implementieren.
Wer noch etwas dazu auf englisch lesen will, der sollte mal auf
www.avrfreaks.net vorbeischauen, da war vor nicht allzu langer Zeit mal
ein solches Thema sehr gut ausdiskutiert (in einem Artikel).

MfG, Khani

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.