Hallo Leutz,
nachdem ich mich überzeugt habe, dass mein SRF05 unter BÄHSCOM funktioniert, wollte ich das mal in C umsetzen.
Ich scheitere aber anscheinend an der Umschalterei beim Auslösen und Messen auf einem Pin.
Jedenfalls hängt sich die Funktion in der while-Schleife auf, anscheinend kommt kein Signal (auch wenn das Ding 20cm vor einer Wand steht!).Code:/*PSEUDOCODE*/ /* SRF05 an PB2 */ void doUltra() { static int counter = 0; DDRB |= (1<<PB2); // Ausgang PORTB |= (1<<PB2); // High /* Messvorgang? */ _delay_us(20); /* min 10µs sind gefordert */ PORTB &= ~(1<<PB2); // Low DDRB &= ~(1<<PB2); // Eingang PORTB |= (1<<PB2); // High (interner Pullup?) */ while( PINB & (1<<PB2) ); // auf Signal warten???? while(!(PINB & (1<<PB2)) // Zählen wielange High counter++; return counter; }
Das jetzt hier keine Zeit gemessen wird, sei mal vernachlässigt.
Hat jemand einen fertigen Code dafür? Wäre für jeden Tipp dankbar.
thx4answer
Banzai







Zitieren

Lesezeichen