Thank you. The maximum stable speed I have reached is 71680 bps, 8 KB/s.
I don't remember all the exact tests, but with pullup resistors, pulldown resistors, transistors on some of the problematic pins, the result was very bad. The best thing has been with direct wires and the same scheme as:
https://github.com/foobarflies/pianette
The tests have been done on 5 psx model 5002, 7002, 9002 and psone, all of them PAL.
Since I lose bits, the most perfect result so far, without data loss in transmission, is to use only 4 bits of 1 byte, as well as maximum 7 bits of 1 byte.
I would appreciate any help on the best cable to build, as well as protocol or even best suited MCU, but best suited to the current project, i.e. ultra low budget (arduino nano).
The option to detect disconnection of the controller has been implemented since the first serial port test, and can be seen in the initial menu, indicating to press the O button, instead of the X button. In the video test, out of laziness I sent the X command instead of O, and that's why the 10-second wait is displayed.
The first speed tests, from 0 to 1, use a buffer of transistors or optocouplers associated with the side buttons, which are the easiest to solder, sending 4 bits. It was an initial proof of concept, which worked without a single failure, although excessively slow. This option would now be deprecated.nocash wrote: ↑October 29th, 2022, 4:15 am Uh, and what is that drawing with L1,L2,R1,R2 buttons about? I hope you don't put your data into that 4bit slot? You can simply transfer a continous bitstream (except the first byte; which is reserved for selecting whether the data goes to the joypad, the memory card, or to your cable).
For speeds 0 - 3 , I encapsulate the data in SPI messages (0x01 0x42 xxx) in digital control mode.
For speeds 8 - 11 the same, but with analogue command mode (0x73).
Both options work without a single problem, but slowly, about 1920 bps. All these options work not only in real psx, but also in emulator with a usb controller converter. Let's say, that this option currently, I also have it deprecated.
The emulators do not implement custom SPI, so the development can only be tested on a real machine.
The 12 -32 speeds I use a custom SPI message, and that's where I get the 71680 bps.
The reads from the PADSIO port I'm syncing with every fps, i.e. 50 fps or 60 fps, and I'm working in the standard 250 Khz SPI mode, both on the PSX and ARDUINO side. I guess to get the 2Mbyte/s I should change the PADSIO speed on the PSX and raise the SPI speed on the ARDUINO from 500 Khz to 8 Mhz. I guess I should stop synchronizing with the video, and be in loop mode reading constantly from the PADSIO port, and when I finish reading everything, I should dump the video. Am I right?
Have you done any kind of test like this? Any help would be appreciated.