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


von Sebastian F. (Gast)


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

von Mark de Jong Electronics (Gast)


Lesenswert?

Hallo,

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

Grüße Mark,

von Sebastian F. (Gast)


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 :)

von Peter D. (peda)


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

von Sebastian F. (Gast)


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

von edi.edi (Gast)


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

von Sebastian F. (Gast)


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

von Lars (Gast)


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

von Sebastian F. (Gast)


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 :)

von thkais (Gast)


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.

von crazy horse (Gast)


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.

von Lars (Gast)


Lesenswert?

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

Gruß
Lasse

von Sebastian F. (Gast)


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?

von Benedikt (Gast)


Lesenswert?

Kennt von euch keiner diese Seite ?
http://www.erikbuchmann.de

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

von Khani (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.