hallo fabqu,
danke für die schnelle und ausführlich Antwort! Ist wirklich toll gelungen!
zu den Pullups (10): hier meinte ich die Pullups, die das Board benutzt zum Anschluss ans Arduino-TWI. Meist werden ja ca. 4k7 pullups verwendet. Wenn ich allerdings weitere i2c-Komponenten an denselben Bus anschließen will, könnte es sein, dass diese andere Pullups benötigen (im Extremfall 47k-82k) - gesetzt den Fall, dass die von dir verwendeten i2c-Komponenten das überhaupt vertragen. PCF8574 z.B. tun das durchaus, PCF8591 auch. Mein Steckenpferd ist aber u.a. auch das Anbinden von Lego-NXT-Sensoren, die auf Bitbanging I2C ausgelegt sind und oft nur mit 47k-82k Pullups funktionieren - die würde ich u.U. gern an denselben Bus mit dranhängen, an dem auch das Muxerboard hängt. Aber auch eine Pixy-Cam könnte ich mir gut zusätzlich vorstellen an diesem Bus zum Muxer, die dann aber wieder Standard-I2C mit Standard-Pullups braucht (hier sind, meine ich, allerdings bereits 4k7 Pullups fest eingebaut, man müsste dann andere, die zum Muxer-SDA/SCL führen, ggf. disablen können.
zu 6): Da ich mit den pwms durchweg DC-Encoder-Motoren antreibe, interessieren mich diese vorrangig als Enable-Pins für Motortreiber.
Mit Mosfets kenne ich mich nicht aus, ich verwende durchweg fertige Motortreiber-H-Brücken für 12-15V mit knapp 100W Dauerleistung. Denkst du, ich kann meine Motoren direkt an die Mosfets anschließen (vorwärts/rückwärts-Betrieb, ähnlich wie mit L293/L298) ?
Ansonsten bräuchte ich pro pwm-pin 4 weitere normale (in1/2 für die H-Brücken und je 2 für Encoder). Käme man insgesamt auf 12 Motoren (4-5 vom Arduino Due direkt, 7-8 vom Muxer-Board), wäre das ideal, dann könnte ich nämlich ein 2. Huckepack-Mega-Board als Motor-Multiplexer einsparen. Das würde allerdings bedeuten: 7-8 pwm-Muxer-Pins plus 28-32 normale Muxer-Digi-pins, was ja dann wohl locker ausreicht, auch schon ohne die Mosfets.
Trotzdem würde mich die Leistungsfähigkeit dieser Mosfets schon interessieren, wenn ich mir auch momentan noch gar kein spezielles Einsatzgebiet vorstellen kann (außer eben Motorantrieb).
zu 1.): Bleibt die Frage der Programmierbarkeit mit Sketch
- hier meinte ich aber: wie man die neuen Ports über die Programmierung des Arduino anspricht. Ideal wäre es, wenn die "remote"-Muxerpins mit Nummern angesprochen werden könnten z.B. ab 100 oder 128 aufwärts), die sich dann im Arduino-Sketch-Programm genauso verwalten lassen wir die lokalen Arduino-Pins.
Also z.B.:
uint8_t ISRab |= (digitalRead(2) << 1) | digitalRead(3); // liest die lokalen Dpins 2 und 3 für einen Motorencoder
// während
uint8_t ISRab |= (digitalRead(102) << 1) | digitalRead(103) // die 2. und 3. Dpins auf dem Muxer-Board liest.
Wie das ganze über I2C ausgeführt wird, müsste dann ein Wrap um eine I2C-Funktion leisten können.
Da das ganze zeitkritisch ist, müssten alle 24 DPins für Encoder (4 lokal, 8 auf dem Board) mindestens alle 250-500µs über IRQs (IRQ1 per DueTimer) ausgelesen werden können.
Denkst du, das Board bzw. der i2c-Bus für die ganzen Pins ist dazu schnell genug? Es sind zwar nur 4kHz für die Encoder-Pins. aber der ganze Rest an Daten hängt ja auch noch dran.
Ich hoffe, die Fragen sind nicht allzu speziell oder gar zu abwegig... :-/
Lesezeichen