Hardware:
-Asuro
->Atmega8
->externer Quarz 8Mhz
-Ultraschallsensor SRF05

Hier ist mein aktuellster Code:
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
  }
}
Ich erhalte in meiner UART Konsole bei ca. 12cm Abstand einen Wert von ca. 250,
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???