Hello everyone,
I am a new user, new to the Teensy world currently waiting delivery of my Teensy 3.2, but not new to the Arduino world. I have made several projects using Arduinos which I find really handy and low cost plus small and easy to fit dimensions. I am mainly using Nanos which offer the best cost-to-capabilities ratio.
BUT... There are several problems with AVRs I am facing:
1) My serious projects are running out of sketch size. 32KB when 3-4 libraries used (almost always modified for the best by me) is really small. Libraries usually use half of the flash available. Note that I am a senior software engineer and I write code for a living for almost 15 years so I know all of the best practices by reusing code,always using the proper variable size etc. Still, each project has its own requirements and that's why there are different processors in the market, right? Why not use a Mega? Speed is 16Mhz and the board is huge for my projects, plus it is more expensive than the macho Teensy! Why not use Due? Same reason...
2)Speed! 16Mhz is not that bad but I believe that in 2017 it is kind of slow, especially when the processor is used in a network with other, faster processors and is keeping them back.
3)To continue from No2, speed is the issue again but not from the scope of Mhz but from really, really sucking IDE commands or libraries. I know that sometimes speed is sacrified for user friendy commands etc, but most of the commands are horibly slow. Take analogRead() for example, or even digitalRead()!
4)IDE standard Libraries! An example that took me several months of frustration in order to realize what was going on is the wire library not having a timeout and reset when the first happens.. Mercy! Serial library not having TX ring buffer? When sending for example 10 bytes @ 115200bps it was slowing the code for several msecs!
5)The Arduino forum. The so called "gurus" are really arrogant and cocky most of the time. I don't know if they are tired of reading the same things but if you are a newbie, YES, you will ask silly questions! You will do that even if you have read thousands of datasheets because probably you have understood less than the half of it and because you don't have the experience to understand empirically what you read. No one was born an embedded developer or electronics engineer. If you didn't have a question you wouldn't ask in a forum. That's why forums exist. I am a member in several forums for more than 18 years and I have never experienced such a behaviour elsewhere. Forums are supposed to help, not making you want to give up!
So what I would expect from a Teensy are the following (+questions):
1)Are the "native" IDE commands optimized? I mean does analogRead() for example waits for the result to show up or does it let the rest of the code execute freely and then gathers its result and shows up? Can I do direct digital port reading like I do with the Arduino or is it a different story? Are those things documented anywhere? I am really afraid of the standard functions..
2)What about the most popular libraries? Is the Serial library optimized? Can it output data without delaying the whole code like a pig?
3)Specifically for the I2C library are the mechanisms described above included? For the unsupported libraries, how easy is it to modify them to run on Teensy? Is there a library for the MAX31855 for example?
As for the forum I just hope for the best....
Thank you all for let me share my thoughts with you!
I am a new user, new to the Teensy world currently waiting delivery of my Teensy 3.2, but not new to the Arduino world. I have made several projects using Arduinos which I find really handy and low cost plus small and easy to fit dimensions. I am mainly using Nanos which offer the best cost-to-capabilities ratio.
BUT... There are several problems with AVRs I am facing:
1) My serious projects are running out of sketch size. 32KB when 3-4 libraries used (almost always modified for the best by me) is really small. Libraries usually use half of the flash available. Note that I am a senior software engineer and I write code for a living for almost 15 years so I know all of the best practices by reusing code,always using the proper variable size etc. Still, each project has its own requirements and that's why there are different processors in the market, right? Why not use a Mega? Speed is 16Mhz and the board is huge for my projects, plus it is more expensive than the macho Teensy! Why not use Due? Same reason...
2)Speed! 16Mhz is not that bad but I believe that in 2017 it is kind of slow, especially when the processor is used in a network with other, faster processors and is keeping them back.
3)To continue from No2, speed is the issue again but not from the scope of Mhz but from really, really sucking IDE commands or libraries. I know that sometimes speed is sacrified for user friendy commands etc, but most of the commands are horibly slow. Take analogRead() for example, or even digitalRead()!
4)IDE standard Libraries! An example that took me several months of frustration in order to realize what was going on is the wire library not having a timeout and reset when the first happens.. Mercy! Serial library not having TX ring buffer? When sending for example 10 bytes @ 115200bps it was slowing the code for several msecs!
5)The Arduino forum. The so called "gurus" are really arrogant and cocky most of the time. I don't know if they are tired of reading the same things but if you are a newbie, YES, you will ask silly questions! You will do that even if you have read thousands of datasheets because probably you have understood less than the half of it and because you don't have the experience to understand empirically what you read. No one was born an embedded developer or electronics engineer. If you didn't have a question you wouldn't ask in a forum. That's why forums exist. I am a member in several forums for more than 18 years and I have never experienced such a behaviour elsewhere. Forums are supposed to help, not making you want to give up!
So what I would expect from a Teensy are the following (+questions):
1)Are the "native" IDE commands optimized? I mean does analogRead() for example waits for the result to show up or does it let the rest of the code execute freely and then gathers its result and shows up? Can I do direct digital port reading like I do with the Arduino or is it a different story? Are those things documented anywhere? I am really afraid of the standard functions..
2)What about the most popular libraries? Is the Serial library optimized? Can it output data without delaying the whole code like a pig?
3)Specifically for the I2C library are the mechanisms described above included? For the unsupported libraries, how easy is it to modify them to run on Teensy? Is there a library for the MAX31855 for example?
As for the forum I just hope for the best....
Thank you all for let me share my thoughts with you!