Main Content

ATMega1284P Guitar and Music Effects Pedal

I have ported the Arduino Uno ATMega328 Pedalshield (as developed by Electrosmash and in part based on work at the Open Music Lab) to the ATMega1284P which has eight times more RAM than the Uno (16kB versus 2kB). An additional unexpected benefit is that the Mega1284 build has a much lower noise component - to the extent that when I compare the Uno and the Mega1284 using the same support circuitry it is not unreasonable to describe the Uno as “noisy” and the Mega1284 as “quiet”. The larger RAM means that a much longer delay effect can be obtained - and that is demonstrated by the Arduino sketch example that I have included. The background breathing noise when using the Tremelo effect is also (almost) absent with the ATMega1284.

I started by bread-boarding the Uno-based pedalSHIELD as in the Electrosmash specification but I did not have the same RRO OpAmp as specified. As a result I ended up with a circuit which I considered to give acceptable results. The details of this Uno version are given in appendix 2.
This same circuit was then ported to the ATMega1284 - surprisingly apart from the non-essential changes such as assigning the switches and LED to a different port, and allocating 12,000 kB instead of 2,000 kB of RAM for the delay buffer, only one essential change had to be made in the source code, namely changing the Timer1/PWM OC1A and OC1B outputs from Port B on the Uno to Port D (PD5 and PD4) on the ATMega1284.
I later discovered the excellent modifications to the electrosmash circuit by Paul Gallagher and after testing, this is the circuit I will present here - but then also with modifications: substitution of the Uno with the Mega1284, using a Texas Instruments TLC2272 as the OpAmp, and because of the excellent noise performance of the Mega1284, I could also raise the low-pass filter frequency level.
It is important to note that although development boards for the ATMega1284 are available (Github: MCUdude MightyCore), it is an easy exercise to buy the bare (bootloader-free) chip (buy the PDIP version which is bread-board and strip-board friendly), then load the Mark Pendrith fork of the Maniacbug Mighty-1284p Core Optiboot bootloader or the MCUdude Mightycore, by using an Uno as the ISP programmer, and then loading sketches again via the Uno to the AtMega1284. Details and links for this process are given in appendix 1.
I would like to acknowledge the three most important sources from which further information can be obtained and will give links to their websites and the end of this article: Electrosmash, Open Music Labs, and Tardate/Paul Gallagher”

Link to article