So I'd look for heatsinks in the 10-12 mm range.
Thank you!
I really have no idea how long you could expect your board to last if running it that far beyond the absolute max voltage.
Last edited:
So I'd look for heatsinks in the 10-12 mm range.
I really have no idea how long you could expect your board to last if running it that far beyond the absolute max voltage.
Can’t it be overclocked without increasing the voltage? I mean, increasing the voltage asks for more electrons charging or discharging the parasitic gate capacitances of the mosfet switches, so that alone increases already the power dissipation without forcibly speeding up things, while increasing the clock frequency would require faster switching times, which would, at least in theoretical physics, ask for smaller charges, rather obtainable by lowering the threshold voltages through lowering the supply voltage.
But as I said, that’s pure theory, just thinking out loud...
Can’t it be overclocked without increasing the voltage?
I've been wondering whether if we give the users easy methods to change the clock speed
...
I considered making F_CPU a variable. I even wanted to make it a C++ object with operator overloading, so you could just assign a number to it and the ARM clock would change. But there is a universe of Arduino code which expects F_CPU to be a preprocessor symbol, doing stuff like "#if F_CPU > 16000000UL". Don't see how we can make it anything else without breaking all that code.
One of the really awesome features of this new chip is nearly everything that needs to run at a consistent speed clocks from PLL2 (fixed 528 MHz) or PLL3 (fixed 480 MHz). So unlike Teensy 3.6 where the baud rates on Serial1 & Serial2 change, we get all 8 serial ports in this new chip running from PLL3 or directly from the crystal. Likewise for I2C, CAN, audio, and many other things (most of that huge clock tree) we get stable clocks to pretty much all important peripherals separate from the ARM clock on PLL1.
781 matches across 135 files
420 matches across 41 files
If most of the devices have new clock sources and are not F_CPU or F_BUS depended: Don't libs need corrections anyway? And which code will still need F_CPU/F_BUS after that?
I would be careful with this, as I have seen forum posts of people running out of space on a Teensy LC and 3.2... So I would not assume we can or should significantly grow things, especially on the lower end.I would add: it is time to implement core functions that manage clock speeds and remove all conditional compiling for libraries. All teensies ave sufficient program space, so conditional compiling is not necessary anymore.
This change has only to be done ones.
It should also be easy to provide instructions for new users for to change from conditional compiling to conditional run-time execution.
I would be careful with this, as I have seen forum posts of people running out of space on a Teensy LC and 3.2... So I would not assume we can or should significantly grow things, especially on the lower end.
But maybe that would make sense to allow this on the higher end boards like 3.5/3.6 and now the 4.0
If it were me, I would probably still leave F_CPU and the like as #defines, which are set to the values specified by the user in the IDE, but then maybe introduce a set of system variables or object(s) with the current F_CPU (F_CPU_CURRENT?), which can be updated. As mentioned looks like many of the devices on the 4.0 may not be effected by changes made to CPU speed, so hopefully most of the code on this new chip will not need to look at the F_CPU, but for the vast majority of programs that don't change speeds should just work.
+1 with Kurt. T_LC is special and small, T_3.2 is great for Audio but stored samples in Flash or whatever can quickly fill 256 KB. Also larger code means more cache misses - even the 1062 only has 32 KB instruction cache - and the T_3.6 next best is much smaller. #define code is an abomination - but serves a real purpose in this world keeping down code bloat and keeping incompatible things apart.
Paul has the best idea so far of how all this is coming together. So far __IMXRT1052__ is only in github_CORES:: makefile, pins_arduino.h.
Paul has the best idea so far of how all this is coming together. So far __IMXRT1052__ is only in github_CORES:: makefile, pins_arduino.h.
Where's the problem ? T3.x can stay as they are (otherwise you'd make all existing code incompatible), T4 - is new![]()
Question is how can one combine flexibility of changing clock speed with rigidity of Arduino F_CPU usage.