||What microcontroller plaform would suit this prototype
| br>Hi all,
I am a programmer with very limited experience with embedded systems (only Arduino really). I recently came up with an idea for a eurorack module which I would like to prototype. I'm hoping that someone can tell me what platform / development board would be a good start.
These are the specs I'm going for. For starters the minimum version is enough. If things go well I would eventually go towards the extended specs.
2 gate / trig inputs (for clock and run/gate signals)
8 gate / trig outputs
8 DC-coupled 12-bit outputs (14 or 16-bit would be a plus)
USB host port
USB device port.
Ability to remember settings / load last preset on startup
Hardware extended version:
2 to 4 DC-coupled 12-bit inputs (14 or 16 bit would be a plus)
A micro SD card slot for storing data.
Something like 4-10MB RAM to record voltages at the inputs and play back from recordings.
In the minimum version algorithms generate 1 clock or basic LFO (tri/square/saw) per output, so 8 in total. I don't expect much in terms of DSP processing.
In the extended version, the inputs need to stream to the outputs with some minimal processing in real-time with low latency. The sample rate doesn't need to be very high. The module is focussed on CV, not audio.
I would be comfortable working with C++, or C if necessary. I am also interested in using more modern languages like Rust but only if it seems suitable for this type of application. br> br>
| br>The ST series of ARM based microcontrollers would be a good choice. Most come with USB support. You can program them in C or C++. Most of the Mutable Instruments modules use these controllers and Émilie's source code provides good examples of how to work with many hardware devices.
The PIC32 series is also just as capable, but I don't know of anyone currently using them in a Eurorack module. br> br>
|The ST series of ARM based microcontrollers would be a good choice. |
I would second that. I am starting to venture away from the standard Atmega328 microcontroller myself and I see a lot of audio related applications using these chips.
That being said, you can do a lot with I2C compatible external chips for delegating specific IO stuff. Like, theres a chip which I'm using that gives me an additional 16 digital pins. My last project uses 5 of these chips, giving me.... an additional 80 digital pins! ahah. All running on an Atmega328 [/quote] br> br>
| br>Going with ARM based ST series chips are definitely different from the standard Arduino micro controllers. You'll have to learn direct register manipulation as Arduino / Teensy based have all of this wrapped. br> br>
| br>I'd say the only challenging part in these specs is the USB host aspect.
It seems like the Teensy 3.6 supports USB host, but I don't know how much work it requires on the software end.
Teensy 3.6: https://www.adafruit.com/product/3266
It seems also possible to do USB host via SPI using any micro: https://store.arduino.cc/arduino-usb-host-shield
Regardless of the micro, to get 8 channels and high resolution you'll probably need external DAC chips. A quick Mouser search suggests an AD5675 or AD5676 depending on which interface you prefere (I2C or SPI). br> br>
| br>Thanks everyone! Apparently I wasn't subscribed to my own topic, so I didn't notice the replies.
I'm interested in taking the more powerful route and learn developing for the ARM processors. The Teensy seems like a good choice. Its microprocessor PDF is 2224 pages. What am I getting myself into?
What confuses me is the relation between Arduino as a hardware platform, its libraries and their relation with Teensy.
It seems that Arduino also has ARM hardware (Genuino zero and MKR zero for example). Would that in essence be the same as using a Teensy 3.6?
I found this thread about the USB host support
It eventually points to this experimental library
If I understand correctly that library supports various platforms and I could also use the Arduino ARM hardware for it.
The MKR zero appears to be a sensible choice too, but
the teensy has more i/o including analog so I guess it makes sense to start with that.
The Genuino zero on the other hand has this in its description:
|The board is powered by Atmel’s SAMD21 MCU, which features a 32-bit ARM Cortex® M0+ core. One of its most important features is Atmel’s Embedded Debugger (EDBG), which provides a full debug interface without the need for additional hardware, significantly increasing the ease-of-use for software debugging. |
That sounds really attractive... Would the other boards have something similar you think? br> br>
| br>I think it makes sense to do some proper studying on this. There's so little I fully understand about embedded systems / hardware.
This book on ARM seems like a good start.
And this book is more generic and focussed on the software side it seems.
In case you have better suggestions I'd love to hear about it. br> br>
|cackland wrote: |
|Going with ARM based ST series chips are definitely different from the standard Arduino micro controllers. You'll have to learn direct register manipulation as Arduino / Teensy based have all of this wrapped. |
I've been looking at ST's ARM products for just that reason; the Arduinos seem way too packaged-up for my taste. I want to write registers. But I've been a bit twiddler since the 1970s. ;-) br> br>
| br>Ah I think I missed that point. So using the ST's ARM products would be fundamentally different from using the Arduino or Teensy based ARM boards, and the latter two are comparable because they use the same dev tools / helper libraries? br> br>
| br>The more contemporary Arduino boards are using the SAMD21G18 - it is a very capable chip, and needs minimal supporting circuitry, but as mentioned above you would need some external devices to get the DAC you want.
I have a little bit of experience with this chip, the worst part of working with it is bootloading, but once you have cracked that you are good to go. You can use a Raspberry Pi as a debugging interface in place of some of the more expensive programmers like the SAM-ICE. There is a great open source project called OpenOCD that will help you get there. I hope this is of some use, I am a little drunk right now... br> br>