Hi,
vorweg erstmal - mein erstes Projekt mit dem µC^^.
Probleme hab ich beim Auslesen der Zeit die der Ultraschallsensor zurück schickt.

Der Code:
Code:
#include <18F4550.h>
#use delay(clock=20000000)
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#include <lcd.c>
#int_timer1
int i;
int u;
int z;
int t;
void main()
{
    setup_timer_1(t1_internal);               // Start timer1 
    enable_interrupts(int_timer1);            // Timer1-Interrupt freigeben
    enable_interrupts(global);               // alle Interrupts freigeben
	lcd_init();

	while(1)
	{
		printf(lcd_putc,"\f");
		printf(lcd_putc,"Welcome");
		if(!input(pin_a4))
		{
			output_high(pin_e0);
			delay_us(50);
			output_low(pin_e0);
			set_timer1(0);
			for(u = 0; u <= 250; u++)
			{
				if(input(pin_e1))
				{
					z=1;
				}
				if(!input(pin_e1)&&z==0)
				{
					set_timer1(0);
				}
				if(!input(pin_e1)&&z==1)
				{
					i = get_timer1()/290;
					u = 251;
					z=0;			
				}
				delay_us(100);
			}
			printf(lcd_putc,"\n");
			printf(lcd_putc,"Messung gestartet");
			lcd_gotoxy(1,2);
			printf(lcd_putc,"%u cm Abstand",i);
			delay_ms(500);
		}
	i = 0;
	delay_ms(50);
	}	
}
Gedacht hab ich mir das im Grunde so:
Auf Pin E0 leg ich 50µs das Signal an (ich will den SRF05 im SRF04 kompatiblen Modus betreiben^^). Danach sollte die messung eigentlich gestartet werden...
Alle 100µs überprüft er ob der E1 (da wo das Echo Signal anliegt) auf 0 geht. Falls dies das erste mal der Fall ist wird der Timer auf 0 gesetzt. Wenn dies das zweite mal geschieht wird der Wert vom Timer ausgelesen.
Fragt mich nicht wo ich die /290 her hab... stand glaub irgendwo im Datenblatt. Nur leider funktioniert das nicht so wie ich mir das gedacht habe^^ Könnte mich vllt jemand über meinen Denkfehler aufklären?
Danke schon mal
mfg
TDK