- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 9 von 9

Thema: [Arduino Uno] - Multitasking und Serielle Befehle

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.05.2005
    Ort
    Berlin
    Beiträge
    316
    Hallo,

    da stellt sich mir ersteinmal die Frage: Was für eine Aktualisierungsrate brauchst du?
    Ein Ansatz ist, mit einem Timer z.B. alle 10ms einen Interrupt zu erzeugen. Die ISR ruft dann nacheinander alle benötigten Funktionen auf. Stichwort dazu: Kooperatives Multitasking

    Dann gibt es noch "leistungsfähigere", kompliziertere Ansätze. Steht ebenfalls in dem Wiki-Artikel.

    Ein paar Fragen hätt ich noch:
    1. Wo ist deine Main-Funktion?
    2. Wo kommt dein "incomingByte" her?
    3. Wie kannst du einen Bytewert auf >255 setzen?

    Und ein paar Anmerkungen zur leserlichkeit des Codes:
    Die Lesbarkeit des Codes erhöht sich deutlich, wenn du einheitliche Notationen verwendest.
    Beispiel: Variablennamen beginnen immer mit einem Kleinbuchstaben, Methoden immer mit einem Großbuchstaben. Globale Variablen werden zudem mit einem führenden Unterstrich gekennzeichnet.

    Das ist alles Geschmackssache, jeder macht das, was ihm am besten gefällt. ABER man sollte sich durchgängig an seine Notation halten. Noch ein Stichwort: Ungarische Notation. Bin ich zwar auch kein riesen Fan von, ist aber durchaus sinnvoll.

    MfG

  2. #2
    Benutzer Stammmitglied Avatar von neo3000
    Registriert seit
    17.11.2006
    Ort
    linz
    Alter
    36
    Beiträge
    37
    Hallo,
    Danke schonmal für die Tipps zum Code schreiben. Habe den neuen Code nochmal oben eingefügt. Diesmal ohne Servo. PWM ist erstmal nur für eine LED.
    Wie gesagt meine Befehle werden im Arduino zu Integer umgewandelt und mit IF abgefragt.
    PWM: Ich sende für PWM1 3150. Arduino empfängt diesen Wert und rechnet: 3150 - 3000(für PWM Pin9) = 150
    Ich sende für PWM2 4050. Arduino empfängt diesen Wert und rechnet: 4050 -4000(für PWM Pin11) = 50

    Mein problem ist so wie auch schon oben beschriebeen dass ich die Befehle nur hintereinander ausführen kann.
    Sende ich nun über mein VB.net Programm durch einen "timer" abwechselnd alle 2sec den befehl für LED ein bzw aus schalten und über stelle
    zeitgleich den PWM1 wert mit einer Trackbar ein so setzt immer wieder eines von den beiden aus oder bleibt hängen.
    Suche nun eine Möglichkeit für Multitasking ab Arduino. Ein Beispielcode wäre ganz toll.

    Besten Dank im voraus.
    -----------------------------------------
    Danke,
    Mit freundlichen Grüßen aus Leonding

    Markus

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Das Problem beim Arduino ist, das ähnlich wie in Bascom ein Großteil der Routinen in Librarys gefasst ist.
    Hier Änderungen vorzunehmen ist schwierig. Wenn du C kannst ist es einfacher den ganzen Code selbst neu zu schreiben.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  4. #4
    Benutzer Stammmitglied Avatar von neo3000
    Registriert seit
    17.11.2006
    Ort
    linz
    Alter
    36
    Beiträge
    37
    Was genau meinst du, das ich dafür neu schreiben muss ?!?
    -----------------------------------------
    Danke,
    Mit freundlichen Grüßen aus Leonding

    Markus

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Weist du wie der UART im Uno arbeitet? Ist er mit ISR oder ohne?
    Weist du wie die einzelnen Funktionen die du aufrufst arbeiten?
    Es ist das gleiche Problem wie im BASCOM, solange die einzelnen Funktionen sich nicht gegenseitig beeinflussen und stören, eine tolle Sache da man mit wenigen Zeilen ein komfortables Programm hat.
    In dem Moment in dem sich die Funktionen gegenseitig stören, hat man zwei Möglichkeiten, man klaubt die Funktionen auseinander und sieht nach wo es hakt, oder schreibt sich die Funktionen selbst neu.
    Also in die Arduino Materie vertiefen oder selbst neu schreiben.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  6. #6
    Benutzer Stammmitglied Avatar von neo3000
    Registriert seit
    17.11.2006
    Ort
    linz
    Alter
    36
    Beiträge
    37
    OK, werde ich machen. Danke.
    -----------------------------------------
    Danke,
    Mit freundlichen Grüßen aus Leonding

    Markus

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Zitat Zitat von neo3000 Beitrag anzeigen
    OK, werde ich machen. Danke.
    Man kann auch versuchen alle x ms alle möglichen Werte in einmem Rutsch zu holen und in ein Arry ab zu legen und diese dann in der Main "in Ruhe" auszuwerten.

    Gruß Richard

Ähnliche Themen

  1. ARDUINO ARDUINO l293D + MegaservoLib
    Von m1ch15inner im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 2
    Letzter Beitrag: 11.07.2011, 11:50
  2. Multitasking
    Von Exodus im Forum AVR Hardwarethemen
    Antworten: 44
    Letzter Beitrag: 22.06.2006, 16:18
  3. serielle befehle empfangen
    Von Keksdose im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 06.08.2005, 17:25
  4. Multitasking für den Asuro
    Von Giwo im Forum Asuro
    Antworten: 9
    Letzter Beitrag: 05.06.2005, 02:32
  5. Multitasking
    Von FancanTeik im Forum Software, Algorithmen und KI
    Antworten: 11
    Letzter Beitrag: 25.04.2005, 08:16

Stichworte

Berechtigungen

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

Solar Speicher und Akkus Tests