Hallo inka,
hier erst einmal eine Betrachtung der Rechengeschwindigkeit und der Zeit am Rad.

Gute Nachricht (oder doch nicht, da es keine Erklärung für dein Problem liefert).

Ich habe mal die AD-Wandlergeschwindigkeit nachgerechnet.
Folgendes ist da rausgekommen (ATmega8-Doku von der CD):
Code:
Ab Seite 193 in der Doku
- Wandlerzeit zwischen 65 und 260 us
- prescaler Clock 50-200 kHz für 10 Bit
                   > 200 kHz für < 10 Bit
- prescaler bits in ADPS im Register ADCSRC
- normale Wandlung in 13 ADC-Clock's
    erste Wandlung in 25 ADC-Clock's
- bei 'free running' sofortiger Start einer weiteren Wandlung

- prescaler auf Seite 205
  ADPS2-0 Faktor Frequenz bei 8MHz
  --------------------------------
        0    2   4000000
        1    2   4000000
        2    4   2000000
        3    8   1000000
        4   16    500000
        5   32    250000
        6   64    125000
        7  128     62500
Es gibt 2 verschiedene Einstellungen des Prescalers in den Asuro-Funktionen.
- Init(): Der Prescaler wird auf 6 (Teiler 64) gesetzt.
- Encoder_Init(): Der Prescaler wird auf 7 (Teiler 12 gesetzt.

Für die weitere Betrachtung nun der 128-Teiler:

- ADC-Clock: 8Mhz / 128 = 62,5 kHz
- ADC-Conversion: 62,5 kHz / 13 Clocks = 4808 Wandlungen pro Sekunde
- 2 Räder: 4808 / 2 Seiten = 2404 Wandlungen pro Sekunde pro Rad
- Zeit pro Wandlung pro Rad: 1 / 2404 = 416 us


Für deine Hardware (22 Löcher/22 Hindernis) ergibt sich folgendes:
- 1 - Max. Asuro Geschwindigkeit: 50 cm/sec
- 2 - Rad-Umfang: ca. 12 cm
- 3 - Umdrehung / sec: 4,16
- 4 - Getriebe Rad/Odo-Scheibe: 1/5
- 5 - Odo-Scheiben-Umdrehung / sec: 5 * 4,16 = 20,8
- 6 - Löcher/Hindernis / Umdrehung: 44
- 7 - Messpositionen / sec: 44 * 20,8 = 916
- 8 - Mindestens 2 Messungen erforderlich: 1832 Messungen / sec
- 9 - Zeit pro Messung: 1 / 1832 = 546 us


Es sieht so aus, dass die AD-Wandlerzeit mit 416 us so eben ausreicht, um die Zeit am Rad mit 546 us so gerade abzudecken.
Da ich von maximaler Asuro-Geschwindigkeit ausgegangen bin, ist auf alle Fälle genug Zeit bei niedrigeren Geschwindigkeiten vorhanden.

Fazit: Eben keine Erklärung, warum es bei dir nicht geht.
Über die Asuro-LIB sollte es möglich sein, deine 22-Löcher-ODO-Scheibe so gerade noch zu bearbeiten.

Aber:
Das Messprogramm von mir schafft die 22-ODO-Scheibe definitiv nicht mehr.
Da in dem Programm pro AD-Kanal immer 2 Messungen gemacht werden, alle 4 Sensoren (Rad, Linie / Rechts, Links) permanent bearbeitet werden, vervierfacht sich die Messzeit der oben angegeben Zeit von 416 us auf 1664 us.
Außerdem enthält das Messprogramm 'künstliche' Pausen zwischen den einzelnen Messungen, so dass die Messzeit noch länger wird.

Fazit Messprogramm:
Alle Werte, die dir bei den Tests 2, 3 und 4 geliefert werden, sind falsch.
Somit sind auch die im Test 2 ermittelten Werte für die MY_ODO_xxx_VALUE_[L|R] nicht korrekt.
Deshalb würde ich jetzt sagen, dass deine Mühe, die Werte aus dem Messprogramm für mich zusammenzustellen, mit Sicherheit überflüßig war. Trotzdem war's ja ein Versuch wert.

Es bleibt somit wohl bei der Turn()-Funktion, in der ihr ja gerade die Variablen-Längen betrachtet. Von mir dazu später Kommentare.

Gruß Sternthaler