PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Srf02 an C-control Mega 128



Tenorm
07.02.2008, 10:18
Ich hab mir neulich den srf02 zugelegt und ordnungsgemäß am Applicationboard (I2C) angeschlossen. Ich hab´n ganz simples Programm in Compact C geschrieben, dass eigendlich nur mal den Bus zum laufen bringen soll. Der Compiler bemerkt keinen Fehler, aber die Softwear hängt sich dann immer auf...hat jemand ne Idee???

Gruß

Tenorm
07.02.2008, 10:50
Ich hab jez nochmal nachgemessen: zwischen den I2C-Ports fließt kein Strom, ich vermut mal, dass der SEnsor nen Bestimmten startbefehl oder sowas braucht...

Ich brauch dringend nen Tipp, hab fast alles ausprobiert...

Tenorm
25.02.2008, 14:39
Bei mir will der SRF nicht so richtig; ich schreibe ihm die Adresse, das Register, den Befehl aber ich bring ihn nicht mal zum messen... Hat überhaupt schon mal jemand gepack, einen Baustein der c-control pro serie mit einem SRF (über I2C, nicht die Sensoren die über PWM funktionieren) zum messen zu bringen?
Freu mich über JEDEN Tipp

Gruß

Tenorm

T.J.
25.02.2008, 14:43
hätte es nicht ein thread auch getan?

Hubert.G
25.02.2008, 20:22
Wenn sich im I2C die Software aufhängt, dann wartet sie zumeist auf eine Antwort. Probier mal einen anderen I2C Baustein, RAM oder so etwas, ob du den zu laufen bringst.

Tenorm
26.02.2008, 19:15
Da haperts ja...die meisten Bausteine (zumindest die von Conrad) laufen, ohne übertreibung, perfekt und zwar ohne dass man sich tagelang hinsetzt und dem Modul eine Antwort zu entlocken versucht. Langsam glaub ich, dass das garnicht gehen kann. Vielleicht ist das Programmcode und der SRF einfach nicht füreinander bestimmt.

Freu mich auf weitere vorschläge :)

Tenorm

Robotniks
26.02.2008, 21:34
Hallo Tenorm,

hast du die I2C 2K2 Pullup Widerstände mit rein ?
Wie sieht dein Code aus?

Tenorm
01.03.2008, 14:16
Nein, aber ich habe die internen Pullups aktiviert, hier mein Code:

void main(void)
{
I2C_Init(I2C_100kHz); // I2C-Schnittstelle mit 100kHz initialisieren

Port_Write(24,1); // Pullup an Port D0 ein
Port_Write(25,1); // Pullup an Port D1 ein

while(true)
{
I2C_Start();
I2C_Write(0xE0); // Adresse
I2C_Write(0x00); // Register
I2C_Write(0x51); // Befehl
}
}

Danke schon mal im vorraus

Tenorm

Robotniks
02.03.2008, 00:20
Hi,

die internene Pullups haben einen Widerstand zwischen 20 und 50K das kann nicht gehen. Du benötigst 2k2 ! Also extern einbauen....