hi Dirk,
die blockierende variante funktioniert nun (auch für zwei HC-SR04), an der nicht blockierenden variante arbeite ich noch...(ist die eigentlich vorteilhaft, oder halt nur eine variante?)
Code:#include "RP6ControlLib.h" #include "RP6Control_MultiIOLib.h" double dauer_1, dauer_2, distanz_schleife_1, distanz_schleife_2; void trig_schleife(void) { PORTC |= (1<<PC6);//Trig high _delay_us(12); PORTC &= ~(1<<PC6);//TRIG auf low } int main(void) { initRP6Control(); multiio_init(); initLCD(); DDRC |= (1 << PC6);//Trig als Ausgang PORTC &= ~(1<<PC6);//TRIG auf low DDRC &= ~(1<<PC5);//Echo_1 als Eingang PORTC &= ~(1<<PC5);//ECHO_1 pullup AUS (Echo auf LOW) DDRC &= ~(1<<PC3);//Echo_2 als Eingang PORTC &= ~(1<<PC3);//ECHO_2 pullup AUS (Echo auf LOW) dauer_1 = 0; distanz_schleife_1 = 0; dauer_2 = 0; distanz_schleife_2 = 0; startStopwatch2(); startStopwatch3(); while(1) { trig_schleife(); loop_until_bit_is_set(PINC, PC5); setStopwatch2(0); loop_until_bit_is_clear(PINC, PC5); dauer_1 = getStopwatch2(); distanz_schleife_1 = (dauer_1*34.3)/2; //Werte ausgeben writeString(" dauer_1: "); writeDouble(dauer_1, DEC, 2, 2); writeString(" ms"); writeString(" distanz_1: "); writeDouble(distanz_schleife_1, DEC, 3, 2); writeString(" cm"); writeChar('\n'); mSleep(500); trig_schleife(); loop_until_bit_is_set(PINC, PC3); setStopwatch3(0); loop_until_bit_is_clear(PINC, PC3); dauer_2 = getStopwatch3(); distanz_schleife_2 = (dauer_2*34.3)/2; //Werte ausgeben writeString(" dauer_2: "); writeDouble(dauer_2, DEC, 2, 2); writeString(" ms"); writeString(" distanz_2: "); writeDouble(distanz_schleife_2, DEC, 3, 2); writeString(" cm"); writeChar('\n'); mSleep(500); } return 0; }







Zitieren

Lesezeichen