Att skriva en programvara som kan dra nytta av ett smalt urval av devices är nog ett stort projekt. Jag sitter precis och modifierar källkod för _en_ USB-device (AudioClass). Bara det är nog jobbigt... Jag tror inte att det finns något företag som sätter sig ner och skriver en stack för en USB-host. Men om du har mycket fritid över så varsågod!
Någon kanske redan frågat i tråden, men vad är det du ska använda den till? Datormöss snackar ju PS/2 också, vilket är mycket lättare att skriva kod för...
Edit: Oj va pessimistisk jag lät. =) Inte illa menat alls, vill bara säga att det är ett stort jobb som förmodligen tar lång tid...
Jag ska använda det till några synthar som saknar MIDI-interface. Det finns alltså bara en USB-port. Jag vill kunna koppla dem till egenbyggda synthar utan att blanda in datorn.
Nu har jag ingen erfarenhet av USB på den här nivån, men det är alltså inte så att man kan läsa av signalerna som kommer från t.ex MAX3421E som sodjan länkade till ?
Det fungerar alltså inte såhär:
Initiera och sånt...
Hitta USB-devicet
Ta emot det som skickas från devicet
Gör nåt med informationen...
Problemet med syntharna är att du inte vet högnivå-protokollet över USB. Skulle tro att varje synth har sitt eget överföringsformat även om de har USB som gemensam nämnare.
Det innebär att du måste göra ganska mycket reversed-engineering på informationen. Vilket visserligen är ganska spännande!
Finns något program (kommer dock inte på namnet just nu) som du kan köra på datorn som loggar alla datapaket som skickas via USB. Det kan man använda för att försöka avkoda protokollet..
SPI och RS232 jämfört med USB-HOST (som jag bara sneglat lite på)
är väl ungefär som att jämföra ett radiostyrt modellflygplan med en rymdfärja...
Om det handlar om att du vill få ut midi ur ett sådant där USB-anslutet PC-keyboard så är det nog 100ggr enklare att köpa ett nytt klaviatur med midi-port. ELLER så öppnar du det keyboard du har och stoppar in lite egen elektronik före USB-interfacet. (byter all elektronik i värsta fall)
bearing:
Sant, men den delen brukar gå ganska fort. Man kan ju trycka/vrida på synthen och låta informationen från USB'n visas på en LCD eller skickas till ett terminalprogram på datorn. Sedan är det bara lägga in rätt data i PIC-koden.
B1n4ry:
Nej nej nej, jag har redan fullt med synthar och det skulle inte lösa problemet med att jag vill bygga in en USB-host i mina egentillverkade synthar/kontrollers.
"100ggr enklare att köpa ett nytt klaviatur med midi-port."
Allt fler synthar/klaviaturer görs med USB-portar. Det är därför som jag vill bygga in USB-anslutning i mina projekt.
B1n4ry skrev:SPI och RS232 jämfört med USB-HOST (som jag bara sneglat lite på)
är väl ungefär som att jämföra ett radiostyrt modellflygplan med en rymdfärja...
Är väl en ganska stor överdrift!
USB nackdel är väl att det krävs en del insikt om hur saker funkar. Sedan är det inte extremt komplicerat i princip.
Vad som komplicerar USB är också att man just har abstraherat upp saker i operativsystemet med protokollstackar mm så att man måste göra drivrutinger som sköter kommunikationen.
Det finns en del sätt där man kan göra kommunikationen på en lägre (och i viss mån mer lättförståelig) men det är inte helt kompatibelt med t.ex. windows (tänker på libusb-win32).
Jimmy, jag säger: Kör på!!! Den där MAX3421E verkar helt ok...
Det är väl antagligen en hel OSI-modell inblandat i ett USB-system, så ju fler lager som kan skötas automatiskt av färdiga kretsar destå bättre, antar jag.
Men om jag kopplar upp USB-synth --> Maxim-kretsen --> PIC --> MAX232 --> Dator, och loggar all data som Maxim-kretsen ger i ett terminalprogram på datorn.
Sedan tittar på skärmen när jag inte gör något alls, trycker ner en knapp, släpper upp knappen.
Räcker inte det för att kunna se vilken data PIC-programmet behöver för att kunna läsa av knappen? Trycker man på en annan knapp så ser man ju vilken data som ändras (beroende av knapp) och vilken som är statisk (hör till själva USB-komunikationen.)
Eller har jag fel? Som sagt, jag är helt ny på detta.