Hardware:
-Asuro
->Atmega8
->externer Quarz 8Mhz
-Ultraschallsensor SRF05
Hier ist mein aktuellster Code:
Ich erhalte in meiner UART Konsole bei ca. 12cm Abstand einen Wert von ca. 250,Code:#include <stdlib.h> #include <stdio.h> #include <avr/io.h> #include <inttypes.h> #include <util/delay.h> #include "asuro.h" int main(void) { Init(); uint16_t ergebnis; char buffer [20]; //Doofe Frage: Was macht die Zahl in den eckigen Klammern??? ergebnis = 0; while (1) { DDRC |= (1<<PC3); // PC3 Ausgang PORTC |= (1<<PC3); // PC3 High _delay_us(20); // warte 20 µSekunden PORTC &= ~(1<<PC3); // PC3 Low DDRC &= ~(1<<PC3); // PC3 Eingang while(!(PINC & (1<<PC3))); //warte auf Echo Signal TCCR1B = (1<<CS11); // starte timer Prescaler 8 TCNT1 = 0; // setze Timer1 auf 0 while((PINC & (1<<PC3))); //warte auf Echoende ergebnis = TCNT1; TCCR1B &= ~(1<<CS11); // Stoppe timer itoa(ergebnis, buffer, 10); //übersetze (int)ergebnis in ASCII ergebnis = 0; SerPrint("\n\r Ergebnis: \n\r"); SerPrint(buffer); //übertragung des Ergebnisses über RS232 _delay_ms(500); //warte 500ms } }
wenn ich nun den Abstand vergrößere dann wird dieser Wert kleiner bis er 1 beträgt.
Vergrößere ich wieder den Abstand zähl er den Wert wieder bis auf ca. 250 u.s.w..
Ist das nicht ein komisches Verhalten???







Zitieren

Lesezeichen