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???
Lesezeichen