also ich hab mir die zeit genommen. Vorausgeschickt - es funktioniert nur wenn am echo-pin (ICS) umgesteckt wird. Aber es kann durchaus an meinen programmierkünsten liegen. Von den timern verstehe ich nämlich immer noch wenig bis nix...
Bild  

folgendes habe ich jetzt gemacht:

die funktionen um PC5 und PC6 erweitert:

Code:
/********************* ULTRASCHALL & HC-SR-04 ******************************/

uint16_t distanz_PC5 = 0;
volatile uint16_t zeit_PC5 = 0;
volatile uint16_t timestamp_last_PC5 = 0;

uint16_t distanz_PC6 = 0;
volatile uint16_t zeit_PC6 = 0;
volatile uint16_t timestamp_last_PC6 = 0;




ISR(TIMER1_CAPT_vect)
{
//Wenn steigende Flanke
    if(TCCR1B & (1<<ICES1))
    {
//Flankenerkennung auf fallend
        TCCR1B ^= (1<<ICES1);
//aktuelen timer-wert speichern
        timestamp_last_PC5 = ICR1;
        timestamp_last_PC6 = ICR1;
    }
//fallende Flanke
    else
    {
//Flankenerkennung auf steigend
        TCCR1B ^= (1<<ICES1);
//Laufzeit = aktueller timerwert - vorheriger timerwert
        zeit_PC5 = ICR1 - timestamp_last_PC5;
        zeit_PC6 = ICR1 - timestamp_last_PC6;
    }

}



/*************** trig ***************************/

void trig_PC5(void)
{
    PORTC |= (1<<PC5);//Trig high
    _delay_us(12);
    PORTC &= ~(1<<PC5);//TRIG auf low
}

void trig_PC6(void)
{
    PORTC |= (1<<PC6);//Trig high
    _delay_us(12);
    PORTC &= ~(1<<PC6);//TRIG auf low
}

/***************** messung_SR_04 ********************/

void messung_SR_04_PC5 (void)
{
    DDRC |= (1 << PC5);//Trig als Ausgang
    PORTC &= ~(1<<PC5);//TRIG auf low

    DDRD &= ~(1<<PD6);//Echo als Eingang
    PORTD &= ~(1<<PD6);//ECHO pullup AUS


//Timer konfigurieren
    TCCR1A = 0; // normal mode, keine PWM Ausgänge
//Noise Canceler aktivieren, Flankenerkennung auf steigende, Prescaler auf 64
    TCCR1B |= (1<<ICNC1) | (1<<ICES1) | (1<<CS11) |(1<<CS10);

//ICP Interrupt aktivieren
    TIMSK |= (1<<TICIE1);

//Globale Interrupts aktivieren
    sei();
    distanz_PC5 = (zeit_PC5*4)/58;

}


void messung_SR_04_PC6 (void)
{
    DDRC |= (1 << PC6);//Trig als Ausgang
    PORTC &= ~(1<<PC6);//TRIG auf low

    DDRD &= ~(1<<PD6);//Echo als Eingang
    PORTD &= ~(1<<PD6);//ECHO pullup AUS


//Timer konfigurieren
    TCCR1A = 0; // normal mode, keine PWM Ausgänge
//Noise Canceler aktivieren, Flankenerkennung auf steigende, Prescaler auf 64
    TCCR1B |= (1<<ICNC1) | (1<<ICES1) | (1<<CS11) |(1<<CS10);

//ICP Interrupt aktivieren
    TIMSK |= (1<<TICIE1);

//Globale Interrupts aktivieren
    sei();
    distanz_PC6 = (zeit_PC6*4)/58;

}
die variablen im hauptprogramm:

Code:
extern volatile uint16_t zeit_PC5, zeit_PC6;
extern uint16_t distanz_PC5, distanz_PC6;

und das ist die eigentliche abfrage:
Code:
 case 2://
                setLEDs(0b0010);
                writeString_P("\n\n HC-SR-04 PC5_trig & PC6_trig\n\n");
                writeChar('\n');
                initRP6Control();
                multiio_init();
                initLCD();

                setCursorPosLCD(1, 0);
                writeStringLCD("HC-SR04 messung");
                mSleep(1500);


                while(1)
                {

                                    //Messung starten
                    messung_SR_04_PC5 ();
                    mSleep(100);
                    //Signal auslösen
                    trig_PC5();
                    _delay_ms(50);

                    //Werte ausgeben

                    writeString("zeit_PC5:      ");
                    writeIntegerLength(zeit_PC5, DEC, 4);
                    writeString("     distanz_PC5:    ");
                    writeIntegerLength(distanz_PC5, DEC, 4);
                    writeChar('\n');
                    mSleep(2000);

                    //Messung starten
                    messung_SR_04_PC6 ();
                    mSleep(100);
                    //Signal auslösen
                    trig_PC6();
                    _delay_ms(50);

                    //Werte ausgeben

                    writeString("zeit_PC6:      ");
                    writeIntegerLength(zeit_PC6, DEC, 4);
                    writeString("     distanz_PC6:    ");
                    writeIntegerLength(distanz_PC6, DEC, 4);
                    writeChar('\n');
                    mSleep(2000);


                    /**************************/
                    uint8_t key_1 = getMultiIOPressedButtonNumber();
                    key_1 = getMultiIOPressedButtonNumber();
                    if(key_1 != 0) break;

                    /**************************/
                }

                break;