xrtm4e
13.05.2012, 16:31
Hi,
habe folgende Funktion um die Distanz vom SRF05 zu messen:
uint16_t getAbstand() {
uint8_t tmp_sreg;
tmp_sreg = SREG;
cli();
uint16_t ergebnis;
DDRA |= (1<<PA0);
PORTA |= (1<<PA0);
_delay_us(20);
PORTA &= ~(1<<PA0);
DDRA &= ~(1<<PA0);
while(!(PINA & (1<<PA0)));
TCNT1 = 0;
while(PINA & (1<<PA0));
ergebnis=TCNT1;
ergebnis=ergebnis*20;
SREG=tmp_sreg;
return (uint16_t) ergebnis/29;
}
Ich verwende einen Pin (PA0) für Ausgabe und Eingabe. Wenn ich das Signal sende leuchtet die LED am Sensor, möchte ich mir das Ergebnis der Funktion auf einem LCD anzeigen lassen bekomme ich immer den Wert 0 zurück. Was ist an der Funktion falsch?
Gruß
habe folgende Funktion um die Distanz vom SRF05 zu messen:
uint16_t getAbstand() {
uint8_t tmp_sreg;
tmp_sreg = SREG;
cli();
uint16_t ergebnis;
DDRA |= (1<<PA0);
PORTA |= (1<<PA0);
_delay_us(20);
PORTA &= ~(1<<PA0);
DDRA &= ~(1<<PA0);
while(!(PINA & (1<<PA0)));
TCNT1 = 0;
while(PINA & (1<<PA0));
ergebnis=TCNT1;
ergebnis=ergebnis*20;
SREG=tmp_sreg;
return (uint16_t) ergebnis/29;
}
Ich verwende einen Pin (PA0) für Ausgabe und Eingabe. Wenn ich das Signal sende leuchtet die LED am Sensor, möchte ich mir das Ergebnis der Funktion auf einem LCD anzeigen lassen bekomme ich immer den Wert 0 zurück. Was ist an der Funktion falsch?
Gruß