- LiFePO4 Speicher Test         
Ergebnis 1 bis 3 von 3

Thema: Rp6 Programm Debuggen + ACS u. Bumper Handler # Multithreadi

  1. #1

    Rp6 Programm Debuggen + ACS u. Bumper Handler # Multithreadi

    Anzeige

    Praxistest und DIY Projekte
    Hallo zusammen,
    bin seit heute stolzer Besitzer eines RP6.
    Da ich mit der Elektronik noch nicht ganz so fit bin hab ich mich für dieses Modell entschieden, damit ich mich erst mal auf die Programmierung konzentrieren kann.

    Jetzt zu meinen Fragen:
    a) Gibt es Möglichkeiten Programme die man geschrieben hat direkt zu debuggen?
    In meinem Programm passieren da ein paar Abläufte die ich so noch nicht ganz nachvollziehen kann. Über einen Debugger würde ich mich da viel leichter tun.

    b) Ich versuche gerade ein Programm zu schreiben um folgendes zu tun:
    - Wenn IR Sensor links was erkennt - nach rechts drehen und weiterfahren
    - Wenn IR Sensor rechts was erkennt - nach links drehen und weiterfahren
    - Wenn ein Bumper getroffen wird - zurücksetzten, drehen und weiterfahren

    An sich eine relativ einfache Funktionalität.
    Den Status von Bumper und ACS frage ich über die selbe Callback ab.
    D.h. die set-Methoden für Bumper und ACS zeigen auf die gleiche Methode.
    In der Callback selbst lasse ich dann die Bewegung "nicht blockierend" ausführen - damit bei entsprechender Statusänderung gleich wieder der Vorwärtsgang eingelegt werden kann.

    Aktuell erkennt der Robbi zwar das Hinderniss und Dreht sich, allerdings fährt er dann nicht weiter.
    Die entsprechende moveAtSpeed() Methode wird laut Terminal - Ausgabe auch aufgerufen und danach nix mehr.

    Woran kann es liegend das er nix macht bzw. sollte die moveAtSpeed() nicht endlos laufen?
    Macht es vielleich Sinn die ACS Sensoren analog (wenn das möglich ist) abzufragen?
    Ist der Handler als ausführende Methode überhaupt geeignet?

    c) Grundsätzliche Frage: Ist auf dem RP6 (nur Basis) Multithreading möglich, wenn ja - muss ich was spezielles beachten?

    Danke und Gruß
    Tobias

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Zu a: So ohne weiteres nicht. Du könntest dir aber auf dem LCD ausgeben lassen was er grad tut.

    Zu b: Musst mal dein Programm posten.

    Zu c: Über Timer bzw. Interrupts liesse sich sowas (ähnliches) wohl machen. Müsstest mal genau schreiben auf was du hinaus willst.

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Glückwunsch zum RP6:)

    Multithreading kann der Mega32 des RP6 nicht. Um trotzdem mehrere Aufgaben quasi gleichzeitig ausführen zu können verwendet die Library des RP6 ein Task-System. Hier ist auch die Ursache für deine moveatspeed-Problem angesiedelt:

    https://www.roboternetz.de/phpBB2/viewtopic.php?t=55540

    Debuggen kann man scheinbar in der Simulation von AVR-Studio, das habe ich allerdings noch nicht selbst ausprobiert. Ich mache es eher klasisch indem ich an Schlüsselstellen des Programms Ausgaben an das Terminal sende.

    "Musst mal dein Programm posten.", aber wenn möglich auf das Problem reduziert und kommentiert;)

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Berechtigungen

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

Solar Speicher und Akkus Tests