also ich habs jetzt mit meinen bescheidenen möglichkeiten versucht:

Code:
#include "RP6ControlLib.h"
#include "RP6Control_MultiIOLib.h"

uint16_t anfang, ende, dauer, distanz_schleife;

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



void messung_SR_04_schleife (void)
{

    startStopwatch2();

    anfang=getStopwatch2();

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

    DDRC &= ~(1<<PC5);//Echo als Eingang
    PORTC &= ~(1<<PC5);//ECHO pullup AUS (Echo auf LOW)
//    PORTC |= (1<<PC5);//Echo auf high

        while(1)
        {
            if ( PINC & (1<<PC5) )
            {
                ende = getStopwatch2();

                dauer = (ende - anfang);
                distanz_schleife = (dauer*4)/58; //das stimmt noch nicht!

                break;
            }

        }
}


int main(void)
{

    initRP6Control();
    multiio_init();
    initLCD();

    while(1)
    {
//Messung starten
        messung_SR_04_schleife ();

//Signal auslösen
        trig_schleife();
        _delay_ms(50);

//Werte ausgeben

        writeString("anfang:  ");
        writeIntegerLength(anfang, DEC, 4);

        writeString("  ende:  ");
        writeIntegerLength(ende, DEC, 4);

         writeString("  dauer:  ");
        writeIntegerLength(dauer, DEC, 4);

        writeString("  distanz:  ");
        writeIntegerLength(distanz_schleife, DEC, 4);
        writeChar('\n');
        mSleep(200);

    }

    return 0;
}
der code läuft einmal durch und gibt vier mal "0000" aus. Ich habe es bereits mit zeitmessung mit stopwatch zu ergründen versucht, danach bleibt der code in der " if ( PINC & (1<<PC5) )" abfrage hängen...


Habe ich einen logischen fehler eingebaut, stimmt die reihenfolge der programmteile nicht, oder ist schlicht die abfrage des ports falsch? Ich wüsste nicht wo ich noch nachlesen soll, oder was ich noch probieren kann...