Hallo zusammen, Ich versuche den Lego Ultraschall Sensor über meinen atmega8 anzusteuern. Lego hat sogar ein Datenblatt zur Verfügung gestellt mit dem I2C communication protocol (http://www.legoengineering.com/knowledgemanager/getattachment.php?data=MTU0fEFwcGVuZGl4IDctTEVHTyBNSU5EU1RPUk1TIE5YVCBVbHRyYXNvbmljIFNlbnNvciBJMkMgY29tbXVuaWNhdGlvbiBwcm90b2NvbC5wZGY%3D). Aus dem Datenblatt werde ich aber leider nicht ganz schlau. Die Adresse des Sensors ist 1 und das stimmt auch, ich bekomme ein ACK wenn ich die Adresse SLA+W über den Bus schicke. Wenn ich jetzt zum Beispiel den Sensor in den "continuous measurement" Zustand versetzen möchte, muss ich da ein 0x41 und 0x02 nacheinander schreiben? Und wenn ich die product ID lesen möchte muss ich da ein 0x08 schreiben und dann 8 bytes auslesen? Ich habe auch Probleme zu verstehen, wie ich mehrere bytes lese und schreibe. Im TWI Artikel http://www.mikrocontroller.net/articles/AVR_TWI steht fürs MTM START TWDR = SLA+W DATEN TWDR = masterByte1 START (unlogisch, da müsste doch DATEN sein?) TWDR = masterByte2 START (unlogisch, da müsste doch DATEN sein?) STOP MRM ist mir ganz unklar: START TWDR = SLA+R DATEN und jetzt mehrere bytes auslesen? Muss ich da noch etwas schicken? Und woher weiss der Slave von welchem Speicher er lesen soll? Also wenn ich den Sensor Wert gemäss Datenblatt lesen möchte unter Adresse 0x42?? übrigens: START: TWCR = (1 << TWINT) | (1 << TWSTA) | (1 << TWEN); DATEN: TWCR = (1 << TWINT) | (1 << TWEN); STOP: TWCR = (1 << TWINT) | (1 << TWEN) | (1 << TWSTO); Vielen Dank für eure Hilfe. Gruss Lynn
Hi, ich versuche auch gerade den Sensor zum laufen zu bekommen, aber auf einem SunSpot, der jedoch auch mit einem atmega und einem arm läuft. Das Problem mit dem Sensor ist, das der nicht das Standard I2C Protokoll verwendet. Hier ein paar links, die vielleicht weiterhelfen: http://www.picaxeforum.co.uk/showthread.php?t=17307&highlight=nxt&page=4 (hier gibt es code, der funktionieren soll. Ist aber leider für Picaxe) http://arduino.cc/forum/index.php?topic=62899.0 (...Because there is a bug in the firmware, you have to sent a extra low pulse at SCL...) Falls du es hinbekommst, würde ich mich freuen, wenn du die Lösung hier posten würdest. Viele Erfolg!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.