## c't-Projekte - Mailinglisten

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

### [ct-bot] Abstandsberechnung in sensor_abstand

Absender: Achim Pankalla
Datum: Fr, 25.08.2006 19:37:49

    hallo,

`beim experimentieren mit den realen bot ist mir aufgefallen, das die` `abstandswerte bei größeren distanzen öfter mal auf null springen. die` `ursache war schnell gefunden, dies passiert immer, wenn die werte der` `sensoren sehr klein werden, aber noch nicht kleiner als zb` `SENSDISTOFFSETLEFT. dabei ist mir nun auch aufgefallen, das durchaus` `eine division durch null entstehen könnte. dies habe ich auch bei meinen` `bot mir logausgaben feststellen können.` `nun frage ich mich, ob jemand weiss warum der prozessor das so` `wegsteckt. ein reset macht das programm anscheinend nicht!` `wird das über die fusebits gesteuert oder wird nur ein irq ausgelöst und` `dann gehts weiter. wenn jemand mir eine antwort geben könnte, spare ich` `mir das durchsuchen von unterlagen und foren, man ist ja faul ;-) .` `anbei ein patch, um das springen der distanzwerte auf null und auch div` `durch 0 zu verhindern.`

    viel spass allen weiterhin.
    mit freundlichen grüssen
        achim

    Index: Changelog.txt
    ===================================================================
    RCS file: /ctbot/ct-Bot/Changelog.txt,v
    retrieving revision 1.95
    diff -u -r1.95 Changelog.txt
    --- Changelog.txt	22 Aug 2006 10:07:24 -0000	1.95
    +++ Changelog.txt	25 Aug 2006 17:21:05 -0000
    @@ -1,5 +1,7 @@
     CHANGELOG fuer c't-Bot
     ======================
    +2006-08-25 Achim Pankalla [achim.pankalla@xxxxxx]: Verhindert in sensor_abstand den Wert Null und eine Division durch Null.
    +
     2006-08-04 Benjamin Benz [bbe@xxxxxxxx]: motor_low_pc.c Bugfix

     2006-08-16 Felix Beckwermert [felix@xxxxxxxxxxxxxx]: sensor.c -- buf-fix (aus forum): Klammern bei dHead ergaenzt
    Index: sensor.c
    ===================================================================
    RCS file: /ctbot/ct-Bot/sensor.c,v
    retrieving revision 1.18
    diff -u -r1.18 sensor.c
    --- sensor.c	22 Aug 2006 10:07:24 -0000	1.18
    +++ sensor.c	25 Aug 2006 17:21:06 -0000
    @@ -105,14 +105,17 @@
      * @param right Rechter Rohwert [0-1023]
      */
     void sensor_abstand(uint16 left, uint16 right){
    +	if(left  == SENSDISTOFFSETLEFT)  left++;
    +	if(right == SENSDISTOFFSETRIGHT) right++;
    +
     	sensDistL = SENSDISTSLOPELEFT / (left - SENSDISTOFFSETLEFT);
     	sensDistR = SENSDISTSLOPERIGHT / (right - SENSDISTOFFSETRIGHT);

     			// Korrigieren, wenn ungueltiger Wert
    -	if (sensDistL > SENS_IR_MAX_DIST || sensDistL<0)
    +	if (sensDistL > SENS_IR_MAX_DIST || sensDistL<=0)
     		sensDistL=SENS_IR_INFINITE;

    -	if (sensDistR > SENS_IR_MAX_DIST || sensDistR<0)
    +	if (sensDistR > SENS_IR_MAX_DIST || sensDistR<=0)
     		sensDistR=SENS_IR_INFINITE;

     }

- Antworten:
  - AW: [ct-bot] Abstandsberechnung in sensor_abstand
    - From: Frank Menzel
  - Re: [ct-bot] Abstandsberechnung in sensor_abstand
    - From: Benjamin Benz

- Voriger (Datum): [ct-bot] Nutzung des EEPROM, Achim Pankalla
- Nächster (Datum): AW: [ct-bot] Abstandsberechnung in sensor_abstand, Frank Menzel
- Voriger (Thread): [ct-bot] Nutzung des EEPROM, Achim Pankalla
- Nächster (Thread): AW: [ct-bot] Abstandsberechnung in sensor_abstand, Frank Menzel
- Indizes:
  - Datum
  - Thread