2022-03-07 02:06 PM
Hello
I am planning to start a Hardware MIDI Control Surface design that incorporates a large quantity of rotary encoders, so I am searching for a prototype / evaluation board that has the most potential for GPIO_EXTI (external / attached interrupts).
Cost of the board isn't a major factor (within reason), although the board doesn't need every mod con under the sun. USB / Ethernet desirable. On the brainier side of the MCU spectrum.
Would be grateful for help
thanks
2022-03-07 02:31 PM
There's going to be a limit of 16, which you can achieve on most boards. Nucleo boards will be the cheapest, availability is also a consideration as many are perpetually sold out.
NUCLEO-F429ZI is in stock and relatively cheap.
Rotary encoders can also be serviced by timers.
2022-03-07 02:59 PM
Hi TDK
Thanks for your answer.
I think there is something in the spec that I must have misread.
I was sure that some where some one said their boards were capable of much more interrupts
something crazy like 168 external or attached interrupt. I must be wrong.
I was also told recently the teensy prototyping boards have up to 64 digital pins available that all could be configured to be used as interrupts.
From a hardware midi control surface designers perspective, I would prefer to lean towards using a MCU that has higher spec than trying to engineer around the problems that using a lesser board would make.
I have one of those Nucleo 767zi's,, which i brought a few years ago but never got around to using it.
2022-03-07 03:06 PM
(almost?) All GPIO pins can be configured as EXTI, but not at the same time. Limit of 16.
You could go a long way with a software based polling method if the board is dedicated to reading encoders.
2022-03-07 05:04 PM
Or use a CPLD/FPGA, or CPU with an FPGA fabric, with banks of encoder
2022-03-07 05:05 PM
Sure, thanks for the info.
I was a bit confused, as recently was told that using polling in conjunction with multiplexers was too slow for using with lots of encoders, and that GPIO configured as attached or external interrupts was a speedier method.
The problem was however I started by using basic Arduino boards, such as the UNO.
and the Uno's have just two pins that can be used as external interrupts.
The guy who was teaching his course on how to create midi controllers recommended using teensy
which mostly have STM32 MCU's onboard. The Teensy people claim that it is possible to use all digital pins for external interrupts. they don't say how many can be used at the same time.
btw,
I think the following spec on a page associated with a project called Zephyr is where I got the idea that loads of the pins could be used for interrupts, although, i may have also misinterpreted this thinking that as it is x amount capable, then that equals x amount simultaneously, rather than simply 16 out of x.
https://docs.zephyrproject.org/2.6.0/boards/arm/nucleo_f767zi/doc/index.html
If it is true that I can only use 16 pins for interrupts per STM32 MCU,
I guess I will have to look into alternative methods if there are problems with the simple polling method
16 interrupts would give me 8 rotary encoders without inc buttons
I have been told multiplexers are too slow for real time use
so. I was wondering what the other options are?
If polling is too slow, perhaps connecting more than one MCU together
in order to achieve the desired amount of interrupts?
Like I say, the amount of real time rotary encoders needed is on the extreme side,
as hardware digital mixing consoles do generally have more knobs than almost anything
else there is in the universe. 🙂
2022-03-07 05:08 PM
Thanks for the info
I will have to read up on CPLD/FPGA etc.
As to be honest with you, I am at hobbyist level in terms of embedded / electronic engineering.
Have A Degree in Sound engineering, so know what I want as the outcome, just trying to figure out how to get to the outcome
thanks again
2022-03-07 08:53 PM
Well, if it is only interrupt from falling or rising edge, explore timer channels as well, you will get morr than just 16 pins. It is sometime called timer input capture.
2022-03-08 05:48 AM
Normal human controlled encoders dont require interrupt from pins.
Simple code is setup one timer interrupt every Xms and handle GPIO inputs from many encoders...
With little calculations on 100MHz MCU you can handle encoders on all available pins...
2022-03-08 11:58 AM
Thanks to eveyone for their help
i will have to do some study
thank again