-
        

Ergebnis 1 bis 8 von 8

Thema: PIC - mehrere Befehle parallel ausfuehren

  1. #1
    Goblin (logout)
    Gast

    PIC - mehrere Befehle parallel ausfuehren

    Anzeige

    Moin!

    Ich hab mich mal gefragt, ob es moeglich ist, in einem pic mehrere befehle gleichzeitig zu verarbeiten. z.b. wenn jetzt 2 Sensoren am pic haengen und beide gleichzeitig verschiedene signale geben, die gleichzeitig verarbeitet werden muessen. geht das?

    goblin

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Hi, schau die das Blockbild deines PIC im Datasheet an. Das, was da extra is, rennt auch parallel u. gleichzeitig. Aber jeder Trumm kann natürlich nur eine Sache gleichzeitig machen.
    d.h z.B. Die ALU kann nur EINEN Befehl auf einmal abbarbeiten, aber die Timer und der ADC rennen unabhängig daneben.
    mfg robert

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.07.2004
    Ort
    Zwingenberg (Bergstraße)
    Alter
    28
    Beiträge
    136
    Hi!
    Ja, stimmt schon, hardwaremäßig geht das net, allerdings ist ein PIC ja schon recht schnell. Jenachdem wie deine Signale sind (Frequenz,...) könntest du aber eine art multitasking wie im PC betreiben.

    mcs

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    34
    Beiträge
    506
    Multitasking selber ist ja an sich nicht das Problem (mach ich seit einiger Zeit fast ausschließlich in PICs), aber dadurch werden auch keine Befehle parallel ausgeführt. Allerdings ist mir parallele Befehlsabarbeitung nur bei DSPs bekannt. Da gibt es einige, die einige Befehle parallel abarbeiten können. Manche uC's können auch durch geschicktes Pipelining mehrere Befehle quasiparallel abarbeiten, aber du hast nahezu immer das Problem, dass nur ein Befehl gleichzeitig auf einen Speicher, die ALU oder sonst irgendwas zugreifen kann bzw. du auch nur einen Befehl gleichzeitig laden kannst.

    Daher wäre es mal interessant von dir zu wissen, ob du wirklich PARALLEL die Befehle ausgeführt haben willst, oder ob du nur mehrere Unterprogramme quasigleichzeitig laufen haben willst (also Multitasking).

  5. #5
    Gast
    Hier ist es wie gesagt nur davon abhängig., wie schnell das Signal ist. Mit 100 HZ z.B kannst du einige Signale praktisch parallel überwachen.

  6. #6
    Gast
    also ich dachte da dann wohl eher an multitasking. also der pic soll z.b. von 3 raedern die drehzahl regeln, waehrend er auch nen auge auf die Sensoren hat und ausserdem seriell daten versendet. es handelt sich um einen 16F870 mit 20 Mhz.

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    34
    Beiträge
    506
    Dabei könnte man sich ein ganz einfaches kooperatives Multitasking überlegen:
    while (1) {
    - Sensoren überprüfen
    - Drehzahl Rad 1 einstellen
    - Drehzahl Rad 2 einstellen
    - Drehzahl Rad 3 einstellen
    - seriell Daten versenden
    }

    Dabei darf natürlich die Rundenlaufzeit nicht zu hoch sein, sonst reagieren womöglich die Sensoren zu schnell usw...

    Oder aber du verwendest ein preemptives Multitasking-System, dann aber musst du schon fast ein Betriebssystem für den PIC schreiben...
    Dieses Betriebssystem wird mittels eines Timer-Interrupts aufgerufen (z.B. alle 1 ms) und legt dann immer der Reihe nach (oder nach einem anderen Verfahren) einen Prozess auf den Prozessor.

    Dies sieht dann so aus, dass der Interrupt irgendwann zuschlägt, du den Prozesskontext (alten PC, benötigte RAM-Bereiche usw.) sichern musst, den PC mit dem nächsten Task laden usw...
    Um in einem kritischen Prozess Unterbrechnungen zu vermeiden kannst du dann einfach während des kritischen Bereichs die Interrupts deaktivieren...

    Das ganze ist längst nicht so kompliziert wie es sich anhört (vielleicht schreib ich demnächst dann auch mal ein kleines OS für PICs).

    MfG
    Stefan

  8. #8
    Gast
    es gibt da so ein-platinen-rechner auf pic-basis. ich glaube die waren auch open source. vielleicht koenntest du dir da anregungen holen. wenn ich zu hause bin, such ich mal den link.

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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