Versions - pyroesp/PlayStation-1-Reset-Mod GitHub Wiki
Proof of concept and improvements:
ATMEGA328P, aka Arduino Nano - Polling (Arduino IDE 1.8.9):
This is the first working proof of concept that was done on an Arduino Nano.
The program used a polling method to read data and cmd between PS1 and controller every rising edge of the clock signal.
ATMEGA328P, aka Arduino Nano - INT interrupt (Arduino IDE 1.8.9):
The code is similar except that instead of a polling loop, the INT interrupt is used on the SS signal and CLK signal.
I can't actually remember if this ever worked, I'll have to look at my twitch vod.
ATMEGA328PB - SPI interrupt (Atmel Studio 7.0):
The ATMEGA328PB has two SPI modules. This version uses those SPI modules to read data and command.
This version is the original way I wanted to program this, but couldn't because I didn't have enough SPI modules, and is much more stable than the previous ones.
*Note: The ATMEGA328PB is pin compatible with the ATMEGA328P, which means you can replace it on an Arduino Nano. That is what I did.
Final version
PIC16F18325 - SPI interrupt (MPLABX IDE v5.25):
I looked at the cheapest microchip microcontroller that had two SPI modules. The 16F18325 was the first one that popped up in the search IIRC.
I adapted the ATMEGA328PB - SPI interrupt to work with the PIC mcu.
- V1.0 was the first release but had an I/O bug
- V1.1 fixed above IO bug
- V1.2 added support for the xStation by adding a new reset combination