Hallo! Ich habe vor mir ein Projekt, bei dem es gilt, mit dem NGW100 mittels I²C Werte von vier ADXL345 Beschleunigungssensoren auszulesen. Nun habe ich noch nie mit I²C gearbeitet, und leider kaum eine Ahnung wie genau dies vonstatten gehen soll. Was ich bis jetzt herausgefunden habe ist dass man besser die I2C-GPIO Funktionen verwenden sollte, da die Atmel-eigene Implementierung sehr mangelhaft sein soll. Weiterhin sollte durch die Verwendung von I2C-GPIO eine freie Wahl der verwendeten Pins möglich sein, soweit ich es in Erfahrung bringen konnte. Nun verwenden diese vier Sensoren alle die selbe ID, was ja bedeuted, dass sie innerhalb des Netzwerkes wohl nicht einzeln ansteuerbar sein werden. Hier taucht meine erste grundlegende Frage auf: Kann man diese trotdem irgendwie auf einfache Weise ansteuern, oder sollte man einfach mittels ein paar Transistoren zwischen den einzelnen Sensoren TWI durchschalten (Sie werden nicht gleichzeitig benötigt)? Weiterhin habe ich eben, da ich noch nie mit I²C gearbeitet habe, die Frage, ob mit jemand ein Beispiel der Ansteuerung eines solchen Gerätes geben könnte. Rein theoretisch müsste es doch nur zuerst ein Öffnen des I2C sein, daraufhin ein finden des richtigen Devices, dann ein paar Werte auf das Gerät schreiben (zum Einstellen des Sensors) und zuletzt die Werte der verschiedenen Achsen auslesen. Leider habe ich praktisch soetwas noch nie angewendet. Im Grunde genommen wird dies der Hauptteil des Programmes, das von dem Controller erledigt werden soll, aufgrund der gemessenen Werte sollte dann nur noch ein Motor ein oder ausgeschalten werden, je nach dem vorab berechneten Wert. Also der Soll-Wert wird mit dem Ist-Wert verglichen, um dann den Ist Wert auf den Soll Wert zu bringen. Vom Prinzip her also einer Servo-Steuerung sehr ähnlich, nur sollen eben vier Motoren angesteuert werden. Diese Ansteuerung sollte aber wohl mittels GPIO kein allzu großes Problem darstellen. Sollte also jemand bereit sein, mir Codebeispiele von I²C auf einem AVR32 Gerät zu senden, wäre ich demjenigen sehr dankbar. Auch für jeglichen weiterführenden Link wäre ich zudem dankbar! Auf jeden Fall schonmal Danke im Voraus!
>Ich habe vor mir ein Projekt, bei dem es gilt, mit dem NGW100 mittels >I²C Werte von vier ADXL345 Beschleunigungssensoren auszulesen. Nun habe >ich noch nie mit I²C gearbeitet, und leider kaum eine Ahnung wie genau >dies vonstatten gehen soll. Da fällt mir ein alter Spruch ein: Was nützen 10000V in den Armen wenn in der Birne das Licht nicht leuchtet? SCNR;)
Ich verstehe wohl deine Aussage nicht ganz xD I2C ist zwar neu für mich, aber wenn ich es nie versuche wird wohl nie irgendetwas damit zu stande kommen. Also grundlegende Kenntnisse von I2C sind schon vorhanden, zum Beispiel wie es funktioniert und so weiter, nur eben habe ich es noch nie angewendet, ich habe nur theoretische Kenntnisse, und die nützen fast nichts... Hat sonst keiner eine Hilfestellung zu dem Ganzen? Ich stehe einfach nur momentan irgendwie auf der Leitung, und die Dokumentation von I2C GPIO hilft mir irgendwie einfach nicht sinnvoll weiter... xD
Ich geh mal davon aus dass du Linux drauf laufen lässt. http://www.e-reflexes.de/oxy_blog/?cat=3 http://www.e-reflexes.de/oxy_blog/?tag=i2c-scanner AVR32412: 32-bit AVR AP7 Linux TWI driver AVR32408: 32-bit AVR AP7 Linux GPIO driver
Prinzipiell brauchst du keine fertigen libs. Allein anhand des Datenblattes von zb den mega8 kann mal sich das schritt fuer schritt selbst zusammen wuerfeln. Beitrag "TWI / I2C einf. MASTER SLAVE Beispiel(Assembler) ATmega8" Wenn die i2c slaves die selbe Adresse haben und du von diesen lesen willst, dann geht das nicht wenn die am selben bus haengen. (Eigentlich hat man an manchen ICs noch 3 pins die man extern auf high oder masse legen kann um zb die letzten 3 bits der adresse festzulegen.) Du muesstest dann die SDA Leitung von dem jeweiligen Sensor trennen.
Danke für die Antworten! Die ersten beiden Links sind schonmal sicher sehr hilfreich, vor allem der I2C Scanner. Was den zweiten Beitrag betrifft, hast du sicher Recht, man muss keine Bibliothek verwenden. Aber das ist doch wohl der eigentliche Sinn von Bibliotheken: Man kann sie verwenden, und sie ersparen viel Arbeit :) Falls sonst noch jemand gute Links kennt, nur her damit :) Ich bin für jeden weterführenden Link sehr dankbar. Das Beispiel mit dem Auslesen der Temperatur vom Attiny24 ist schonmal sehr nahe an meinem Anwendungsfall, das sollte mir auf jeden Fall sehr schnell weiterhelfen :) Was das Ändern der Adresse betrifft: Es ist möglich durch setzen von 5V auf einen Pin die Adresse auf eine Alternativadresse zu ändern! Durch deinen Anstoß habe ich das Datenblatt nach soetwas durchsucht, und eben auch etwas gefunden. Nun müsste ich nur noch zwischen 2*2 Sensoren wechseln, was nur 4 Transistoren bedeuted, oder eben einfach mittels I2C-GPIO verschiedene i2c devices machen, die auf verschiedenen Ausgängen liegen (wenn ich dafür intelligent genug bin, wenn nicht, gibts ja immer noch Transistoren xD). Auf jeden Fall Danke an Euch!
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.