Hallo ich bin gerade bei einem Projekt einen WLAN gesteuerten Roboter zu entwickeln. Das geht soweit ganz voran. Jetzt bin ich gerade dran einen Ultraschalsensor (SRF05) zu integrieren.
Der soll als Schutz dienen, das der Roboter nich gegen Wände färt. Nach mehreren entwürfe und Test hab ich bis jetzt noch nicht geschaft den SRF05 richtig anzubinden. Ich nutze das Atmel Evalutions-Board V2.0.1 mit addon Board.
Meine µController ist der AtMega32. Zum Debbugeen benutze ich das Atmel Studio 4.18 mit dem JTAG Adapter von OLMEX. Ich selbst bin noch eine Anfänger. Der Roboter selbst läuft mit dem RN-Control-Board und einem WLAN-Modul.
Mein bestreben ist erst ein kleines Test Programm zum laufen zu bringen und wenn das auf beide Umgebungen funktoniert wird das in meinen Roboter integriert.

So jetzt zu meinen Testprogramm:

Code:
#include <stdlib.h>
#include <stdio.h>
#include <avr/io.h>
#include <inttypes.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <util/twi.h>
#include <stdint.h> //definiert den Datentyp uint8_t 



volatile unsigned int ergebnis = 0, erg = 0, over = 0, i=0;



ISR(TIMER0_OVF_vect)
	{
		over++;
	}



int main(void)
{
	
	 DDRD |= 0xFF;	//LEDs zum Testen


	 TIMSK |= (1<<TOIE0); // Enable overflows interrupt
	 sei();

	
	
  while (1)
  {     

		
		 if( i ==200) // nur zum Testen 
		{

		

        DDRA |= (1<<PA2);              // PC2 Ausgang  --> beim Debbugen geht er 0-3 mal durch und danach bleibt das Programm hier hängen 
    	PORTA |= (1<<PA2);             // PA2 High
    	_delay_us(20);                 // warte 20 µSekunden
    	PORTA &= ~(1<<PA2);           // PA2 Low
    	DDRA &= ~(1<<PA2);            // PC2 Eingang

			

	while(!(PINA & (1<<PA2)));   //warte auf Echo Signal
    	TCCR0 = (1<<CS01);            // starte timer Prescaler 8
    	TCNT0 = 0;                    // setze Timer1 auf 0



     	while((PINA & (1<<PA2)));    //warte auf Echoende
     	ergebnis = TCNT0;
     	TCCR0 &= ~(1<<CS01);           // Stoppe timer
	

		erg = ((over * 256)+ ergebnis) / 58 ;  //Berrechnung in cm

		
		PORTD = erg ;  // LED ausgabe
		

		i= 0;
		}
		
	erg = 0;
    ergebnis = 0;
	 over = 0;
	 
	i++;
     _delay_ms(100);            //warte 100ms
  }
}


Das Messen funktioniert ganz gut und ich bekomme immer die richtige Entfernung angezeigt. Nur das macht er 0-3 mal und danach bleibt er in der ersten while schleife hängen.
Ich selbst hab 2 SRF05 und habt das gleiche Problem mit beiden. Ich Teste das Programm auch auf dem Atmel Evalutions-Board V2.0.1 und auf dem RN-Control-Board.
Bei beiden Umgebung bleibt es hängen.

Kann mir irgenwer helfen bei meinem Problem.

Vielen Dank für eure Hilfe und Unterstützung.

Maurerson