PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Auto Detecting Parallel Architecture



RedBaron
22.05.2011, 03:09
Moin,

mindsensors liefert u.a. Sensoren mit I2C-Schnittstellen (z.B. den Beschleunigungssensor)
mit "Auto Detecting Parallel Architecture" (Dokument: http://www.mindsensors.com/index.php?module=documents&JAS_Document_op=downloadFile&JAS_File_id=278).

Weiß jemand, was das genau ist und wie es funktioniert? Ich habe einige bereits einige Zeit gegoogelt, aber nichts gefunden.

Das Vergeben der Bus-Adresse kann nicht gemeint sein. Die wird separat behandelt. Ich nehme an, dass es um die Pullup-Widerstände beim I2C-Bus geht.

Viele Grüße
Red baron

PICture
22.05.2011, 05:39
Hallo RedBaron!

Die "Auto Detecting Parallel Architecture" habe ich in deinem Link nicht gefunden. Beim I2C-Bus ist eine Komunikation eines Masters mit mit nur einem Slave möglich, also keine paralelle in Echtzeit.

RedBaron
22.05.2011, 12:14
... stimmt, der Link geht aktuell wirklich nicht. Klappt wohl nur so lange, wie die Browser-Session lebt. Im Dokument steht folgender Satz:

"Supports Auto Detecting Parallel Architecture (ADPA) for sensors. This means that CMPS-Nx can coexist with LEGO or third party digital sensors on a single NXT port. This enables user to employ several sensors on the same port without the need of external sensor multiplexer, reducing the overall size and cost."

Es geht höchstwahrscheinlich nicht um das Protokoll. Meine Vermutung ist:
Der Mindstorms ist kurzschlussfest. Dies wird erreicht, indem alle Pins über relativ hohe Eingangswiderstände abgesichert sind. Demzufolge müssen die Pullup-Widerstände des I2C-Bus ebenfalls hochohmig sein, ansonsten können die Leitungen nicht verlässlich auf Massepotential gezogen werden. Es sind 82kOhm Widerstände vorgesehen.
Weiterhin sind die Pullup-Widerstände bei den Slaves angebracht. Das funktioniert problemlos, wenn anjedem Port nur ein Slave hängt. Wird jedoch mehr als ein Slave angeschlossen, bringt jeder Pullup-Widerstände mit. Spaätestens beim dritten Slave schafft es der Mindstorms nicht mehr die Leitungen auf Masse zu ziehen. Ich nehme an, ADPA schafft hier Abhilfe, indem die Pullups nur bei Bedarf zugeschaltet werden, d.h. wenn kein anderer Slave bereits Pullups installiert hat. Wie kann man detektieren, ob bereits Pullups vorhanden sind?

vg
Red Baron

PICture
22.05.2011, 12:24
Hallo!

Ohne Schaltplan kann ich nicht konkret helfen, aber normaleweise hat I2C-Bus nur 2 pull-ups an seinen Enden.


Wie kann man detektieren, ob bereits Pullups vorhanden sind?

Ich würde am Busanschlüssen von jedem Slave ohne Spannungsversorgung ein Widerstand zu VCC mit Ohmmeter messen ?

Mir ist einfache (z.B. in SMD) nicht ausprobierte Schaltung eingefallen mit Stromverstärkung ß den Transistoren, die deine Probleme lösen könnte (siehe Code).




VCC
+
.-|----------.
| | |
|.-. |
|| | |
|| | SLAVE |
|'-' |
| | |
+-----+---|-+ |
| | | |
|< | '------------'
I2C Bus o------+-| T1 |
| |\ |
| | |
| === |
| GND |
| |
>| ___ |
T2 |-|___|-+
/|
| R
===
GND

(created by AACircuit v1.28.6 beta 04/19/05 www.tech-chat.de)