The SAMD21 has a rise and fall time of 15ns on general purpose IO pins (datasheet page 876). That means that the absolute maximum theoretical fundamental frequency that you could generate through any means would be 33.3MHz.
Actually generating such a frequency though could not be done in software and you'd need a timer or the SPI interface to even approach ...
@Majenko's comment suggesting using a toothbrush handle as a lever reminded me of auto trim levers. I remembered I had some, and have done some quick testing. They give a little more strength I would say, but not much (if any) more control than using fingers.
First, we must make sure the "-fno-exceptions" compiler flag is overwritten with "-fexceptions". In addition, we must link a separate library that includes the compiler support functions for stack unwinding.
Navigate to C:\Users\<UserName>\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12 and create a new file platform....
I think I found a workaround. It relies on the fact that on simple program architectures such as the one used on most microcontrollers, the heap grows upwards while the stack grows backwards.
const int MIN_FREE_STACK = 512;
void* mallocEx(int size)
void* stackPtr = alloca(4); // This returns a pointer to the current bottom of the stack
This is a partial answer, for now, mostly with regard to:
Why does malloc() never return NULL?
So, the Due appears to use Newlib as its libc implementation; that is the systems C (standard and some non-standard) runtime that includes malloc(), or the greater part of malloc() anyway. The Newlib malloc() relies on an sbrk() function which is ...
In my understanding all ic in general can be hardwired but at a cost which is that some greater expense is incured say time or additional accessories also the datasheet and instruction set are a big must