MEGA MULTIPASS V1.0
author: pugbutt
2 layer board of 3.55 x 2.60 inches (90.2 x 66.0 mm)
Uploaded:
November 05, 2022
Shared:
November 05, 2022
Total Price:
$46.15
This project uses an ATmega2560 as a multifunction bus peripheral for homebrew retro computers. Features: 8-bit, 22 kHz stereo audio, micro SD card, dual gamepad connectors (Sega Genesis, 6-button), 512KB RAM for sound samples, etc., AUX connector for I2C, Serial UART, PWM, etc.
At around 16 MIPS at 16 MHz, this CPU is likely to greatly outperform most of the vintage CPU’s this card is intended to be used with. It may be useful to have it perform some floating-point math, etc., on behalf of the main CPU. Despite its speed, the latency of pin-change interrupts is too high to connect this MCU directly to a classic computer bus. Instead, a couple of latches are used: one for reading, and one for writing. These allow the card to look like a single byte in the memory map of the system. This byte may be read or written to communicate with the card. (An 8-bit bidirectional parallel interface.)
An IRQ output is supplied, which may optionally be used to get the system’s attention when a timer expires, new data is available, etc.
I have the firmware started, and the most complete feature so far is the sound. Inspired by the TurboGrafx 16’s sound, it’s capable of driving 8 channels of arbitrary-waveform oscillators, sample playback, direct DAC output from host CPU, pans, and fades. I want to add a LFSR noise generator for percussive sounds, a very small library of drum and synth samples in ROM, the ability to store/play samples from the onboard 512KB SRAM chip, and increase the sample rate to 44.1 kHz, but these features aren’t yet implemented.
I intend to put the code up on GitHub soon. Please let me know (caiannello on geezer male) if you’d like to be notified when this happens, and I will do so.
SCHEMATIC HERE
Geek on! Craig I., pugbutt.com
This project uses an ATmega2560 as a multifunction bus peripheral for homebrew retro computers. Features: 8-bit, 22 kHz stereo audio, micro SD card, dual gamepad connectors (Sega Genesis, 6-button), 512KB RAM for sound samples, etc., AUX connector for I2C, Serial UART, PWM, etc.
At around 16 MIPS at 16 MHz, this CPU is likely to greatly outperform most of the vintage CPU’s this card is intended to be used with. It may be useful to have it perform some floating-point math, etc., on behalf of the main CPU. Despite its speed, the latency of pin-change interrupts is too high to connect this MCU directly to a classic computer bus. Instead, a couple of latches are used: one for reading, and one for writing. These allow the card to look like a single byte in the memory map of the system. This byte may be read or written to communicate with the card. (An 8-bit bidirectional parallel interface.)
An IRQ output is supplied, which may optionally be used to get the system’s attention when a timer expires, new data is available, etc.
I have the firmware started, and the most complete feature so far is the sound. Inspired by the TurboGrafx 16’s sound, it’s capable of driving 8 channels of arbitrary-waveform oscillators, sample playback, direct DAC output from host CPU, pans, and fades. I want to add a LFSR noise generator for percussive sounds, a very small library of drum and synth samples in ROM, the ability to store/play samples from the onboard 512KB SRAM chip, and increase the sample rate to 44.1 kHz, but these features aren’t yet implemented.
I intend to put the code up on GitHub soon. Please let me know (caiannello on geezer male) if you’d like to be notified when this happens, and I will do so.
SCHEMATIC HERE
Geek on! Craig I., pugbutt.com