PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SRF10 stürzt ab???



NemesisoD
18.10.2008, 23:26
Hallo zusammen,

ich habe gerade meinen SRF10 inbetrieb genommen. Ich habe ihn in einer Entfernung von ca. 150 cm von einer Wand ausgerichtet.

Habe folgenden Code benutzt:



while(1)
{
ser_puts("Starten\n");
i2c_start_wait(0xE0+I2C_WRITE);
i2c_write(0x00);
i2c_write(0x51);
i2c_stop();

result = 0xFF;

ser_puts("Warten\n");
while(result == 0xFF)
{
Delay1ms(1);
i2c_start_wait(0xE0+I2C_WRITE);
i2c_write(0x00);
i2c_rep_start(0xE0+I2C_READ);
result = i2c_readAck();
i2c_stop();
}


ser_puts("Abholen\n");
i2c_start_wait(0xE0+I2C_WRITE);
i2c_write(0x02);
i2c_stop();
i2c_start_wait(0xE0+I2C_READ);
distance = (i2c_readAck() << 8);
distance += i2c_readAck();
i2c_stop();
ser_puts("Fertig\n");
printf("Entfernung: %d\n",distance);

Delay1ms(1000);
}

Dann habe ich ihn angeschmißen und war sehr glücklich, denn auf meinem Monitor erschieht 149 cm. Dieses Programm lief einige Minuten, und ich habe mir das "rauschen" ein wenig angeguckt.
Doch dann habe ich einmal ein Blatt Papier in ca. 20 cm Entfernung zum SRF gehalten, und plötzlich habe ich keine Antwort mehr bekommen. Das letzte was auf meinem Monitor zusehen war war: "Abholen".

p.s. diese "Abholen" etc. Texte habe ich zur Fehler findung eingefügt.

Kann mir einer sagen woran es liegt???

Danke

linux_80
19.10.2008, 02:23
Hallo,

hast du schonmal probiert, statt der Warteschleife, die dauernd beim SRF10 anklopft, einfach mal eine Sekunde zu warten, und dann den Wert zu holen ?
Evtl. überschneidet sich da was auf dem I2C-Bus, bzw. der SRF bekommt nur die Hälfte mit nachdem er wieder am I2C lauscht und ist verwirrt :-k

NemesisoD
19.10.2008, 19:14
Also,

ich habe die Schleife auch schon durch eine delay_ms ersetzt und ca. 1 sek gewartet.

Habe gerade man die Hex, welche in BASCOM geschrieben wurde draufgeladen, und damit läuft der SRF.

Ich habe daraufhin den Ablauf vom Bascom Programm und meinem angeguckt, aber ich sehe da keine Unterschiede und bei mir läuft es nicht.

Im Forum habe ich einen Beitrag gefunden wo jemand seinen Source für den SRF10 gepostet hat, und auch dieses Programm sieht identisch mit meinen aus. Ich nutze die I2cmaster lib von Peter Fleury.

Ich finde diesen blöden Fehler einfach nicht.

Gruß
Micha