-         

Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 45

Thema: Multitasking

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2006
    Beiträge
    153

    Multitasking

    Anzeige

    Kann ich beim ATMEGA8535 Multitasking anwenden also programmabläufe parallel ablaufen lassen??
    BITTE um Rückantwort

    MFG
    Michael

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    31
    Beiträge
    795
    Nicht wirklich, aber du kannst das Programm ja so schreiben, dass er zB nicht in warteschleifen geht oder so, sondern diese mit hilte des Timers macht...

    Also dass der programm immer durchläuft. Und nicht irgendwo hängenbleibt. Und Zeitroutinen über eine Variable im Timer runterzählen lassen, und sie immerwieder mit if überprüfen...
    Gruß,
    Franz

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2006
    Beiträge
    153
    hmm....
    ok ich will dass machen!

    will PA0 -PA7 nacheinander leuchten (0,25s)
    gleichzeitig soll PB0 - PB3 nacheinander leuchten (0,50s)

    ah ja noch was ich programmiere in Assembler nicht in C!

    MFg
    Michael

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von Rage_Empire
    Registriert seit
    10.03.2005
    Ort
    Pforzheim
    Beiträge
    710
    nimm 2 AVRs, dann kannst du auch 2 Dinge gleichzeitig (realtime) laufen lassen

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    11.05.2005
    Ort
    Trimmis
    Alter
    30
    Beiträge
    47
    Auf www.avrfreaks.net gibt es ein Multitasking-Script. Natürlich nicht wirkliches Multitasking, sondern nur so Pseudo-Mässig.

    lg
    Und sie dreht sich doch...
    http://www.muasch.com
    http://robotik.muasch.com

    Definitiv kein Bascom-User

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    31
    Beiträge
    795
    Wenn du zB zwei sachen zeitgesteuert machen willst, und neben bei noch was anderes ausgeführt werden soll, dann kannst du das so machen...

    Dein Timer führt diese funktion 10 mal pro sekunde aus (zB!):

    Code:
    void TIMER ( void ){
    
    if( timervar1 ){ timervar1 --; }
    if( timervar2 ){ timervar2 --; }
    if( timervar3 ){ timervar3 --; }
    
    }
    In der Hauptfunktion kannst du dann die Sachen so steuern:

    Diese Funktion wird immer Durchlaufen:

    if( timervar1 ){ "ES WERDE LICHT" }else{ "ES WERDE DUNKEL" }

    Bei irgend ner Bedingung soll 10 Sekunden lang LICHT WERDEN:
    also setzt man timervar1 auf 100:

    timervar1 = 100;

    Solange nun timervar1 UNGLEICH 0 ist, leuchtet die LED.

    Und du kannst den Controller bequem was anderes machen lassen....

    EDIT1: Richtiges Multitasking gehd glaub ich nicht mal bei handelsüblichen PCs (ausser bei den DUAL CORE PROZESSOREN, da glaub ich geht es...)

    EDIT2: timervar1..3 sind globale Variablen!
    Gruß,
    Franz

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    34
    Beiträge
    1.780
    Naja, die Meisten meinen wenn sie von "richtigem" Multitasking reden das sog. "preemptive multitasking" wie es z.B. bei Desktop-Betriebssystemen zum Einsatz kommt.

    Der Vorteil dabei ist, daß quasi mehrere Programme völlig unabhängig voneinander laufen können. Die Programme bekommen dann jeweils für eine bestimmte Zeit die CPU ganz für sich allein, und müssen die Kontrolle auch nicht freiwillig wieder abgeben. Das ist natürlich sehr praktisch, denn selbst wenn ein thread hängen bleibt, laufen die anderen noch ganz normal weiter.

    Natürlich ist das wesentlich aufendiger zu realisieren, und man braucht ziemlich viel Speicher. (denn immer wenn einem thread die Kontrolle entzogen wird, müssen sämtliche Register und der komplette Stack irgendwo gesichert werden)
    So viele Treppen und so wenig Zeit!

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2006
    Beiträge
    153
    avr-freaks.net funktioniert nicht!

    MFG
    Michael

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    31
    Beiträge
    795
    Gruß,
    Franz

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    will PA0 -PA7 nacheinander leuchten (0,25s)
    gleichzeitig soll PB0 - PB3 nacheinander leuchten (0,50s)
    und wo liegt das Problem???

    Mache z.B. einen Timer mit 0,25s Zeitbasis.

    Beim erstem Überlauf veränderst Du PA und prüftst ob ein Merker gesetzt ist, wenn nein setzt Dir einen Merker.

    Beim zweitem veränderst Du PA sowieso und schaust ob Merker gesetzt ist und wenn ja änderst Du PB und löscht den Merker.

    und so weiter von vorn....

    Ist doch ganz Easy.

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

Seite 1 von 5 123 ... LetzteLetzte

Berechtigungen

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