Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
projekte:usb-midi-controller [2014-12-02 22:13] root [USB-MIDI-Controller] |
projekte:usb-midi-controller [2014-12-07 00:00] (aktuell) |
||
---|---|---|---|
Zeile 8: | Zeile 8: | ||
* Uses the USI as I2C to communicate with the master | * Uses the USI as I2C to communicate with the master | ||
* Possibly replace the ATtiny with some cheap ATmega or some other MCU with multi-master I2C, 1 at least 7-bit ADC, and a free GPIO pin to get around having to use USI :) | * Possibly replace the ATtiny with some cheap ATmega or some other MCU with multi-master I2C, 1 at least 7-bit ADC, and a free GPIO pin to get around having to use USI :) | ||
+ | * Update: The USI is an ungodly mess. "Here's a shift register and half a counter, have fun." I've probably poured 15 hours of work into this, but I'm definitely switching. Probably to the cheapest ATmega I can find. | ||
* Clients are daisy-chainable, see [[projekte:usb-midi-controller#Communication]] | * Clients are daisy-chainable, see [[projekte:usb-midi-controller#Communication]] | ||
- | |||
===== Communication ===== | ===== Communication ===== | ||
* The host device acts as a slave and has address 1, all clients are I2C masters | * The host device acts as a slave and has address 1, all clients are I2C masters | ||
Zeile 21: | Zeile 21: | ||
- The device then enables the next device, either by pulling its RESET line high or enabling VCC | - The device then enables the next device, either by pulling its RESET line high or enabling VCC | ||
* MIDI messages are constructed by the clients and sent as-is. The host will buffer them until it has received the STOP, then forward them over USB. As all MIDI commands start with a set bit, this is an easy way to separate management and MIDI messages. | * MIDI messages are constructed by the clients and sent as-is. The host will buffer them until it has received the STOP, then forward them over USB. As all MIDI commands start with a set bit, this is an easy way to separate management and MIDI messages. | ||
- | * On collision, the device waits between 100 and 1000 microseconds and tries again | + | * On collision, the device waits until a STOP condition has been detected and tries again. |
A preliminary command table, with each length including the command byte | A preliminary command table, with each length including the command byte |