Bei der Programmierung habe ich diesen Source Code gefunden:
Code:uint16_t getAbstand(uint8_t sensor) { //Ultrschallsensoren abfragen uint8_t tmp_sreg; tmp_sreg = SREG; cli(); uint16_t ergebnis; DDRC |= sensor; //Ausgang high PORTC |= sensor; _delay_us(20); PORTC &= ~sensor; //Pin auf Eingang setzen DDRC &= ~sensor; while(!(PINC & sensor)); //auf Sensorantwort warten TCNT1 = 0; //Counter Register auf 0 setzen while(PINC & sensor); //warten bis Signalende ergebnis=TCNT1; //Signallänge auslesen ergebnis=ergebnis*20; //Abstand berechnen SREG=tmp_sreg; return (uint16_t) ergebnis/29; }
Dazu habe ich mir Gedanken gemacht ob der so richtig ist weil hier anstatt durch 58 durch 29 geteilt wird? :/
der code ist von robo junior und der meinte auch dass ein Prescaler von 64 benutzt wird und das ergebnis dann in mm ist, in wie fern beeinflusst denn die Prescaler Angabe das Ergebnis?







Zitieren


Lesezeichen