-         

Ergebnis 1 bis 8 von 8

Thema: 8 Aufgaben gleichzeitig?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    24.12.2006
    Beiträge
    11

    8 Aufgaben gleichzeitig?

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Tach,

    ich habe ein Problem ich will auf einem ATmega16 8 Aufgaben gleichzeitig ausführen? ist das möglich?

    Mein Programm(grob):

    if Eingang1 = 1 then
    Ausgang1 = 1
    Wait 1s
    Ausgang2 = 1
    Wait 1s
    Ausgang3 = 1
    end if

    if Eingang1 = 0 then
    Ausgang1 = 0
    Wait 1s
    Ausgang2 = 0
    Wait 1s
    Ausgang3 = 0
    end if


    Und dises Programm muss ich 8 mal haben. Ich habe bedenken wenn ich die Wartezeit mit hochzählen eines Wertes mache kann ich ja kein 2 Programm anstoßen.

    Ich wäre froh wenn mir da jemand einen Tipp geben könnte.


    MfG


    Athlon

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.11.2006
    Ort
    K-Town
    Alter
    39
    Beiträge
    178
    jeweils mit Ausgang1 oder dann immer mit Ausgang2..3...4.. usw.?!?!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    24.12.2006
    Beiträge
    11
    TAch,

    also jeder der 8 Funktionen hat ihre eigenen Ein/Ausgänge.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.11.2006
    Ort
    K-Town
    Alter
    39
    Beiträge
    178
    weiß nicht ob ich dich richtig verstehe, aber vielleicht so:

    if eingang1 = 1 then
    ausgang1 = 1
    else
    ausgang1 = 0
    if eingang2 = 1 then
    ausgang2 = 1
    else
    ausgang2 = 0
    if eingang3 = 1 then
    ausgang3 = 1
    else
    ausgang3 = 0

    wait 1
    endif

    und dann halt so weiterführen....

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    24.12.2006
    Beiträge
    11
    Ne ich beschreib das mal.

    Das ganze gibt es 8 mal mit unterschiedlichen Ein/Ausgängen:

    Wenn Eingang1 true, dann Ausgang1 true, 1s warten, dann Ausgang2 true, 1s warten, dann Ausgang3 true,

    Wenn Eingang1 false, dann Ausgang1 false, 1s warten, dann Ausgang2 false, 1s warten, dann Ausgang3 false,


    Die Anweisung werden nur einmal bei True/False wechsel durchlaufen.

    Ich hoff das es so verständlich ist.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Das könnte man gut mit einem Timer lösen...
    Eine Möglichkeit: der Timer pollt die Eingänge und erzeugt die Verzögerungen. Z.B. alle 10ms einen Timer-Interrupt auslösen, darin dann die Eingänge auslesen. Wenn dann für eine der acht "Aufgaben" eine Verzögerung ansteht, ne Variable dafür auf 100 setzen und vom Timer runterzählen lassen. Wenn null erreicht ist, ist die Sekunde rum, der Ausgang wird geschaltet und die nächste Wartezeit für diese "Aufgabe" begonnen.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.02.2006
    Ort
    München
    Beiträge
    111
    Was willst Du denn damit steuern?

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    also gleichzeitig ist mal auf keinen Fall, der µC kann immer nur eine
    Sache abarbeiten, dann kann er sich ner anderen widmen.
    1 Sekunde Wartezeit ist für die Kiste ne Ewigkeit in der der Controller
    nix aber auch garnix anderes macht als abwarten, esseidenn
    er bekommt zwischendurch nen Interrupt z.B. vom Timer.
    Dann springter aus der Warterei raus und amcht was anderes um dann
    nach Erledigung wieder in die Warterei zurückzuspringen.

    Wie von uwegw beschrieben wär ne Timeranwendung um die Ports
    zu pollen und anschliessend ne Variable runter zählen lassen
    eine Möglichkeit. Oder auch der PinChangeInterrupt könnt sowas
    vollbringen. Dann wärste frei von Timingproblemen was das
    Abfragen der Ports angeht.

    Wenn ich dich recht verstanden hab gehts aber nur um einen
    abzufragenden Pin, nämlich den von Eingang 1 und danach werden
    die Ausgänge einfach durchrotiert. Eine Möglichkeit für das
    Durchschalten wär anstelle von x If einfach rotate des Ports
    Vor den Erfolg haben die Götter den Schweiß gesetzt

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •