USB host med PIC
USB host med PIC
Håller på att mixtra med joystick för att styra servon. Som jag har det nu så ansluter jag en joystick till en dator där jag snickrat ihop ett program som "omvandlar" värdena för x,y axlar på joysticken till "ASCII paket", vilket det sedan skickar via en vanlig serieport/RS232 till en PIC som styr servona. Allt funkar bra så långt.
Dock är det lite opraktiskt att vara beroende av en dator att släpa med sig för att joysticken skall funka, så jag har funderat på att bygga en liten USB host med en PIC18F4550 eller liknande PIC18 som har stöd för USB. När jag började söka på nätet efter lösningar så fann jag att i många inlägg att det tydligen är mer komplicerat att "bygga" en USB host än en USB device. Jag har fattat att man använder en standard kallad HID för detta. Dock behöver jag bara implementera stöd för joystick, jag är inte intresserad av andra enheter som tangentbord m.m. så jag funderar på om man kan banta ned implementationen av HID?
Innan jag kastar mig vidare in i detta tänkte jag bara höra om någon annan mekat med detta (att göra en USB host med en microkontroller alltså), och om det är en komplicerad historia om överhuvudtaget möjlig med en PIC18? I annat fall återstår alternativet att slakta joysticken och koppla in mig direkt på hårdvaran/givarna, vilket ju är synd eftersom den då blir oanvändbar för "normalt" bruk.
Dock är det lite opraktiskt att vara beroende av en dator att släpa med sig för att joysticken skall funka, så jag har funderat på att bygga en liten USB host med en PIC18F4550 eller liknande PIC18 som har stöd för USB. När jag började söka på nätet efter lösningar så fann jag att i många inlägg att det tydligen är mer komplicerat att "bygga" en USB host än en USB device. Jag har fattat att man använder en standard kallad HID för detta. Dock behöver jag bara implementera stöd för joystick, jag är inte intresserad av andra enheter som tangentbord m.m. så jag funderar på om man kan banta ned implementationen av HID?
Innan jag kastar mig vidare in i detta tänkte jag bara höra om någon annan mekat med detta (att göra en USB host med en microkontroller alltså), och om det är en komplicerad historia om överhuvudtaget möjlig med en PIC18? I annat fall återstår alternativet att slakta joysticken och koppla in mig direkt på hårdvaran/givarna, vilket ju är synd eftersom den då blir oanvändbar för "normalt" bruk.
Re: USB host med PIC
Diskussion om hur man implementerar USB i en mikrokontroller:
http://www.avrfreaks.net/index.php?name ... 34&start=0
Implementation av USB 1,5 Mbit/s i AVR:
http://www.obdev.at/products/vusb/download.html
http://www.avrfreaks.net/index.php?name ... 34&start=0
Implementation av USB 1,5 Mbit/s i AVR:
http://www.obdev.at/products/vusb/download.html
Re: USB host med PIC
PIC32 har USB2Go, och APIer i MCC32 för USB-host, har jag för mig. Tror inte om PIC18 har det.
Re: USB host med PIC
Jo för USB host på PIC behöver du gå upp till 16 eller 32 bitar.
AVR har några 8-bitars med host-stöd, men det var väl inte aktuellt?
AVR har några 8-bitars med host-stöd, men det var väl inte aktuellt?
Re: USB host med PIC
I princip kan du bra glömma det hela direkt. Det kommer sannolikt
inte att vara värt insatsen, om du ens får det att fungera alls.
USB är i grunden för att snacka mellan en "dator" (primärt en "PC")
med "klienter" (som t.ex din joystick).
inte att vara värt insatsen, om du ens får det att fungera alls.
USB är i grunden för att snacka mellan en "dator" (primärt en "PC")
med "klienter" (som t.ex din joystick).
Re: USB host med PIC
Om du inte ska ansluta mer än en joystick så skulle jag offra den, det sitter väl normalt ett par potentiometerar som du kan koppla till A/D omvandlaren i PIC;en. Så behöver du inte krångla med USB alls.
Re: USB host med PIC
Ok, låter som det enklaste är att tillsvidare ha kvar PCn som mellanhand eller slakta sticken.
Har dock inte riktigt förstått varför det inte skulle funka att ha en PIC18 med USB stöd som host? Om det är på grund av hårdvaran eller om mjukvaran skulle bli så komplex att den inte får plats? Hittade dock på en länk till några som verkar lyckats med att få till en mjukvarubaserad host på en Mega32 med hjälp av en SN74126N tristate buffer nedan om någon annan är intresserad.
http://courses.cit.cornell.edu/ee476/Fi ... index.html
Microchip själva verkar ju också mena att PIC18 familjen bara har device stöd enligt http://www.microchip.com/stellent/idcpl ... e=en537044
"The 8-bit PIC18 family supports USB device mode. The 16-bit PIC24F and 32-bit PIC32 products with USB support device mode, as well as embedded host and On-The-Go. All product families support up to (FS-USB) full-speed operation (12 Mbps)."
Tack för alla svar iaf!
Har dock inte riktigt förstått varför det inte skulle funka att ha en PIC18 med USB stöd som host? Om det är på grund av hårdvaran eller om mjukvaran skulle bli så komplex att den inte får plats? Hittade dock på en länk till några som verkar lyckats med att få till en mjukvarubaserad host på en Mega32 med hjälp av en SN74126N tristate buffer nedan om någon annan är intresserad.
http://courses.cit.cornell.edu/ee476/Fi ... index.html
Microchip själva verkar ju också mena att PIC18 familjen bara har device stöd enligt http://www.microchip.com/stellent/idcpl ... e=en537044
"The 8-bit PIC18 family supports USB device mode. The 16-bit PIC24F and 32-bit PIC32 products with USB support device mode, as well as embedded host and On-The-Go. All product families support up to (FS-USB) full-speed operation (12 Mbps)."
Tack för alla svar iaf!
Re: USB host med PIC
> ...varför det inte skulle funka att ha en PIC18 med USB stöd som host?
Det har så klart delvis med att resurserna är lite för begränsade för att
implementera en USB-host. Har du ens kollat vilka krav som ställs på
en USB-host ?
Dessutom är hela idén i grunden lite fel, USB var aldrig designat
för det du vill/försöker göra.
Det har så klart delvis med att resurserna är lite för begränsade för att
implementera en USB-host. Har du ens kollat vilka krav som ställs på
en USB-host ?
Dessutom är hela idén i grunden lite fel, USB var aldrig designat
för det du vill/försöker göra.
Re: USB host med PIC
Kan du tänka dig att använda en extern krets + PIC18 så verkar det vara möjligt:
http://www.circuitsathome.com/mcu/light ... hostpart-1
http://www.maxim-ic.com/datasheet/index.mvp/id/3639
http://www.circuitsathome.com/mcu/light ... hostpart-1
http://www.maxim-ic.com/datasheet/index.mvp/id/3639
Re: USB host med PIC
Om man skall köra med 12Mbps behöver PHY'n en klocka om 48 MHz, vilket PIC16/18 inte klarar, eftersom den divideras med 4 i en PIC16/18.
Re: USB host med PIC
Visst, men då använder man en extern USB-kontroller, till exempel FDTI's kretsar, och då är det liksom inte längre en PIC.
Re: USB host med PIC
iofs..
1,5 Mbit/s USB bör iaf gå att implementera ifall AVR 8-bit fixar det.
1,5 Mbit/s USB bör iaf gå att implementera ifall AVR 8-bit fixar det.