## c't-Projekte - Mailinglisten

[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

### Re: [ct-bot] ->Klappe

Absender: Timo Sandmann
Datum: Mo, 26.01.2009 10:11:18

    Hallo Frank,

    Am 24.01.2009 um 20:03 schrieb Frank Menzel:

>     Hallo Timo,
>     zu dem Punkt: " if (pos == DOOR_CLOSE && sensDoor == 0) {
>     		return;	// Klappe ist bereits geschlossen
>     	}"

>     Ich habe sie auskommentiert aber dann geht gar nichts. Gleich nach
>     flashen gibt er nur noch ein sich immer wiederholendes Klicken von

> `sich-keine Anzeige, nichts geht mehr. Wieder die Zeilen rein, alles` `geht`

>     wieder. Wieder auskommentiert-ticken. Also habe ich die Zeilen drin
>     gelassen.

`o.O was geht denn da ab? Du kommentierst einen if-Block aus, der` `sowieso nie ausgeführt wird und die Firmware funktioniert schon nicht` `mehr, bevor die entsprechende Funktion überhaupt erst aufgerufen wird?` `Hast du das mit einem frisch vom SVN geholten Projekt gemacht oder mit` `einem, das schon eigene Änderungen drin hatte?`

>     Die Änderung des Aufrufens von bot_servo(data... zu bot_servo(NULL...
>     hat aber die Lösung gebracht und er kommt damit zu Ende, kein endloses
>     Ticken mehr.

    Mit dem "Ticken" meinst du jetzt das Servo-Geräusch?

`Der Nachteil dieser Variante ist natürlich, dass der Aufrufer sofort` `weiterläuft und nicht erst, wenn das Servoverhalten fertig und der` `Servo an seiner Endposition angekommen ist. Das ist also keine` `dauerhafte Lösung.`

>     Bei der ursprünglichen Version ohne NULL-Aufruf, also noch mit dem

> `endlosen Ticken nach Einfangen, ist mir noch folgendes aufgefallen:` `Wenn`

>     Objekt eingefangen ist, leuchtet ja die gelbe LED und es kommt das
>     endlose Ticken. Wenn ich aber den bot nun mit dem eingefangenen Objekt

> `ein wenig zurückschiebe und die LED verlischt, dann hört auch das` `Ticken`

>     auf und das Verhalten kommt zum Ende.

`Verwendest du Version 1 von bot_catch_pillar()? Die hat ja so etwas im` `Code:`

    if (sensTrans == 0) {
        VORWÄRTS;
    } else {
        KLAPPE_ZU;
        STATUS = ENDE;
    }

`Wenn jetzt (warum auch immer) das STATUS = ENDE; nicht ausgeführt` `wird, gibt's ne Endlosschleife, die den Servo immer wieder "Klappe zu"` `ausführen lässt (Servo ist ewig aktiv und Verhalten wird nie beendet).` `Das wäre genau das, was du beschrieben hast, hätte aber nichts mit dem` `Servo-Code zu tun. Da im Code der Status auf Ende gesetzt wird, dürfte` `das aber eigentlich gar nicht passieren. Es ist halt nur auffällig,` `dass dieses Szenario genau zu deinem Fehlerbild führt.`

    Gruß,
    Timo

- Antworten:
  - RE: [ct-bot] ->Klappe
    - From: Menzel, Frank IT-OO4

- Voriger (Datum): [ct-bot] ->Klappe, Frank Menzel
- Nächster (Datum): RE: [ct-bot] ->Klappe, Menzel, Frank IT-OO4
- Voriger (Thread): [ct-bot] ->Klappe, Frank Menzel
- Nächster (Thread): RE: [ct-bot] ->Klappe, Menzel, Frank IT-OO4
- Indizes:
  - Datum
  - Thread