Thank you for the git link. I have spent quite a bit of time learning USB (2.0) protocol for Host & Devices since I bought my P2. My goal is to learn the P2 using both spin2 (less) and pasm2 (more). My first project is to use two Logitech 3D joysticks to make it work using your USB Host libraries. This will help me to learn how other developers are coding and utilize existing libraries. I will have more questions during this journey and looking forward to get your and other developer's help. The first problem I was have is to how to connect my USB breakout board with P2 Edge. I couldn’t find any picture that shows, May be I haven’t search hard enough. I am trying to post a picture of my setup but somehow I can’t from my iPad. Anyway looking forward for some guidance. 🤓
If you have the official Parallax breakout you just kinda do this
but by the fact you're asking I assume you have some sort of other contraption.
The official board plugged in like that maps the pins as such:
P16: LED
P17: Power enable for upper port
P18: D- for upper port
P19: D+ for upper port
P20: LED
P21: Power enable for lower port
P22: D- for lower port
P23: D+ for lower port
The usbnew driver by default is set up to use the upper port (it currently only supports one root port per instance, the lower port goes unused. Multiple devices need to go through a USB Hub)
USB_BASE_PIN = 16
USB_ENABLE_OFFSET = 1 ' Set -1 if not present
USB_DMINUS_OFFSET = 2 ' Must end up on an even pin. D+ is always this +1
If you, say, just want the D-/D+ pair on P28/P29 and don't have an LED or a port protector chip, you'd use
The only real restriction is that D- must be on an even-numbered pin and D+ must be the next pin after that.
You could edit these values in usbnew.spin2, but the proper and elegant way that won't land you in developer hell is to use the constant override feature. See the example programs like hidpad_to_vga.spin2. That one should just work out of the box for connecting one (or up to 7 with an appropriate hub) of these Logitech sticks. Need to have a VGA breakout though to see it do anything.
@mashaikh23 said:
Don't jink my $7 logic analyzer ($15 for a pair) and working flawlessly with PulseView.
I have the same one, no shade. In action in another thread. However, Ubuntu's pulseview package is broken due to LTO, so I needed to install Debian's and now plasmashell thinks pulseview is touhou 10. This is completely irrelevant to anything, but the questions I have are infinite
@mashaikh23 said:
then for this board how or what pins should i use? Ok I can match the pin like you mentioned above for this board, right?
I mean the loose wire ends plugged into the breakout. If the 5V power pin touches any of the other pins, bad things might happen. Though this breakout has a protection chip that should tank the worst of it.
@mashaikh23 said:
then for this board how or what pins should i use? Ok I can match the pin like you mentioned above for this board, right?
I mean the loose wire ends plugged into the breakout. If the 5V power pin touches any of the other pins, bad things might happen. Thought this breakout has a protection chip that should tank the worst of it.
@Wuerfel_21 said:
Anyways, if you can dig up a VGA breakout, I guess you should try running the example code now.
i dont have a vga board so trying to comment out things to understand the code. what vga board do you have?
I have the Parallax one with VGA and a bunch of other things on it. Though with VGA you can kinda just poke wires into the port on the monitor if need be. With the default definitions it's like this: P24 is HSync, P25 is blue, P26 is green, P27 is red and P28 is Vsync.
If you're wondering why there's no demo that uses just the serial terminal... With the full 7 devices connected, there's quite a lot of data continuously updating and trying to print that to a scrolling terminal is slow and
disorienting (especially when driver debug messages are also enabled).
@Wuerfel_21 said:
Anyways, if you can dig up a VGA breakout, I guess you should try running the example code now.
i dont have a vga board so trying to comment out things to understand the code. what vga board do you have?
You can try the driver from my repository then: https://github.com/maccasoft/P2
it is the pasm-only version from which usbnew is derived, and uses only the terminal and debug statements (plus there are a number of emulators using it, if you want some examples).
It is a bit behind with the changes made to usbnew but should work more or less the same.
@macca said:
It is a bit behind with the changes made to usbnew but should work more or less the same.
For their particular application, it may not. I remember fixing a bug related to these newer Logitech sticks. 8AM brain can't remember what exactly it was.
@Wuerfel_21 said:
Anyways, if you can dig up a VGA breakout, I guess you should try running the example code now.
i dont have a vga board so trying to comment out things to understand the code. what vga board do you have?
You can try the driver from my repository then: https://github.com/maccasoft/P2
it is the pasm-only version from which usbnew is derived, and uses only the terminal and debug statements (plus there are a number of emulators using it, if you want some examples).
It is a bit behind with the changes made to usbnew but should work more or less the same.
Ooo BTW I found this tool (USB Device Tree Viewer V3.8.9) (see link below) gives me ton of information about the USB device when connected my Windows 10. Using this I am surprised my Logitech joystick is a Low-speed but USB 1.1 device. https://www.uwe-sieber.de/usbtreeview_e.html#download
@mashaikh23 said:
Using this I am surprised my Logitech joystick is a Low-speed but USB 1.1 device.
>
Higher USB spec version doesn't imply higher speed modes. This is a common misconception. I have some "USB 2.0 hubs" around. They indeed advertise version 2.0 in their device descriptor, but are only 12MHz full-speed devices. This is perfectly normal and allowed. But most people use "USB 2.0 Hub" to mean a high-speed hub. To be fair, they were actually advertising these as USB 1.1 hubs, to add to the confusion.
Trying to recall... Have any of the USB drivers been tested with a Kb/mouse wireless combo?
I seem to recall that previously only the kb would work, but it's been a while.
Comments
Thank you for the git link. I have spent quite a bit of time learning USB (2.0) protocol for Host & Devices since I bought my P2. My goal is to learn the P2 using both spin2 (less) and pasm2 (more). My first project is to use two Logitech 3D joysticks to make it work using your USB Host libraries. This will help me to learn how other developers are coding and utilize existing libraries. I will have more questions during this journey and looking forward to get your and other developer's help. The first problem I was have is to how to connect my USB breakout board with P2 Edge. I couldn’t find any picture that shows, May be I haven’t search hard enough. I am trying to post a picture of my setup but somehow I can’t from my iPad. Anyway looking forward for some guidance. 🤓
If you have the official Parallax breakout you just kinda do this
but by the fact you're asking I assume you have some sort of other contraption.
The official board plugged in like that maps the pins as such:
The usbnew driver by default is set up to use the upper port (it currently only supports one root port per instance, the lower port goes unused. Multiple devices need to go through a USB Hub)
If you, say, just want the D-/D+ pair on P28/P29 and don't have an LED or a port protector chip, you'd use
The only real restriction is that D- must be on an even-numbered pin and D+ must be the next pin after that.
You could edit these values in usbnew.spin2, but the proper and elegant way that won't land you in developer hell is to use the constant override feature. See the example programs like
hidpad_to_vga.spin2
. That one should just work out of the box for connecting one (or up to 7 with an appropriate hub) of these Logitech sticks. Need to have a VGA breakout though to see it do anything.Here is how I plugged my board in.
For this you just set
USB_BASE_PIN = 0
and leave the other values as they are.However, DO NOT POWER IT UP LIKE THIS. DO NOT. THE 5V COULD TOUCH THE DATA PINS AND BAD THINGS WOULD HAPPEN
Don't jink my $7 logic analyzer ($15 for a pair) and working flawlessly with PulseView.![:smiley: :smiley:](https://forums.parallax.com/resources/emoji/smiley.png)
then for this board how or what pins should i use? Ok I can match the pin like you mentioned above for this board, right?
I have the same one, no shade. In action in another thread. However, Ubuntu's pulseview package is broken due to LTO, so I needed to install Debian's and now plasmashell thinks pulseview is touhou 10. This is completely irrelevant to anything, but the questions I have are infinite
![](https://forums.parallax.com/uploads/editor/pb/d3gk37scr9cj.png)
I mean the loose wire ends plugged into the breakout. If the 5V power pin touches any of the other pins, bad things might happen. Though this breakout has a protection chip that should tank the worst of it.
Ok, got it. I removed it. Thanks
Anyways, if you can dig up a VGA breakout, I guess you should try running the example code now.
i dont have a vga board so trying to comment out things to understand the code. what vga board do you have?
I have the Parallax one with VGA and a bunch of other things on it. Though with VGA you can kinda just poke wires into the port on the monitor if need be. With the default definitions it's like this: P24 is HSync, P25 is blue, P26 is green, P27 is red and P28 is Vsync.
If you're wondering why there's no demo that uses just the serial terminal... With the full 7 devices connected, there's quite a lot of data continuously updating and trying to print that to a scrolling terminal is slow and
disorienting (especially when driver debug messages are also enabled).
You can try the driver from my repository then:
https://github.com/maccasoft/P2
it is the pasm-only version from which usbnew is derived, and uses only the terminal and debug statements (plus there are a number of emulators using it, if you want some examples).
It is a bit behind with the changes made to usbnew but should work more or less the same.
For their particular application, it may not. I remember fixing a bug related to these newer Logitech sticks. 8AM brain can't remember what exactly it was.
Great, thanks for the tip. I will check it out.
Ooo BTW I found this tool (USB Device Tree Viewer V3.8.9) (see link below) gives me ton of information about the USB device when connected my Windows 10. Using this I am surprised my Logitech joystick is a Low-speed but USB 1.1 device.
https://www.uwe-sieber.de/usbtreeview_e.html#download
>
Higher USB spec version doesn't imply higher speed modes. This is a common misconception. I have some "USB 2.0 hubs" around. They indeed advertise version 2.0 in their device descriptor, but are only 12MHz full-speed devices. This is perfectly normal and allowed. But most people use "USB 2.0 Hub" to mean a high-speed hub. To be fair, they were actually advertising these as USB 1.1 hubs, to add to the confusion.
Trying to recall... Have any of the USB drivers been tested with a Kb/mouse wireless combo?
I seem to recall that previously only the kb would work, but it's been a while.
Maybe now with hub support, they both would work?
Should work, yes.