Hi all,
perhaps it is right to think about handling of complexity.
Teensy hardware is enabling to do rather complex projects due to its big memories and due to it's high speed. The usage of libraries enables to do complex projects in given time and with small knowledge of details. (I am very thankful that they exist!) Actually it is hopefully not necessary to know how these work. I think most customers use them as black boxes.
Let me first introduce my perspective a little bit: I am a somewhat advanced user of microcontrollers for many years. I can at least read assembler and have done some assembler code in the past. I see myself as a hobbyist, who has projects in mind. Cause to take the time to write this, is that I have lost several frustrating days to find out, why my project stopped to work.
I select the microcontroller for a new project with the following in mind:
Will I be able to complete this project? (Hardware, Libraries, Documentation)
Fun of doing it?
Cost of the project?
I have found, that a good way at least for me to deal with complexity of my projects is to use multitasking, multithreading or multiple cores. TeensyThreads is a step in this direction, but it is not really supported.
A) So I would like to suggest, that Teensy should see some sort of Multitasking as part of the core software (and hardware?) in future.
In my recent project, I find, that very powerful libraries try to implement very very many possibilities. It is possible to use different pins and different SPI busses. While this is great in theory, it is impossible to make sure, that all the possible combinations will work. And I am something like too stupid to read the impressing documentation of exFAT library. ( I was not even able to find the mode-parameter for file.open() so I use something from the examples. ) I think, it is not easy to get and give good answers to questions in this forum, because authors do know their own library, but perhaps not the others in detail. And it is a lot of work to describe a project and to read the description.
B) So my second suggestion would be to reduce the number of possibilities by defining one "Reference Setup".
Define which SPI-channel and which pins shall be used to connect SD-card, which to connect displays,... On the software side there seem to exist several file systems. Choose one of these as reference. I think, a file system is to be seen as part of core with Teensy. The benefit would be, that software could be tested well against this setup. And documentation could focus on this setup. This "Reference Setup" must be very visible in the Teensy documentation. Like with all sorts of standardisation there will be complaints of people, who do find it better, to have their different solution. So the answer is, that the "Reference Setup" is guidance for tests of libraries and a solid starting point for user projects. Someone, who has a different idea can swap (or add) his part of the configuration into the Reference Setup and test it. For questions in the forum, the user can write, I use the Reference Setup with the following differences/additions and have this code:....
So now I am curious, for other thoughts and comments.
Best regards, Christof
perhaps it is right to think about handling of complexity.
Teensy hardware is enabling to do rather complex projects due to its big memories and due to it's high speed. The usage of libraries enables to do complex projects in given time and with small knowledge of details. (I am very thankful that they exist!) Actually it is hopefully not necessary to know how these work. I think most customers use them as black boxes.
Let me first introduce my perspective a little bit: I am a somewhat advanced user of microcontrollers for many years. I can at least read assembler and have done some assembler code in the past. I see myself as a hobbyist, who has projects in mind. Cause to take the time to write this, is that I have lost several frustrating days to find out, why my project stopped to work.
I select the microcontroller for a new project with the following in mind:
Will I be able to complete this project? (Hardware, Libraries, Documentation)
Fun of doing it?
Cost of the project?
I have found, that a good way at least for me to deal with complexity of my projects is to use multitasking, multithreading or multiple cores. TeensyThreads is a step in this direction, but it is not really supported.
A) So I would like to suggest, that Teensy should see some sort of Multitasking as part of the core software (and hardware?) in future.
In my recent project, I find, that very powerful libraries try to implement very very many possibilities. It is possible to use different pins and different SPI busses. While this is great in theory, it is impossible to make sure, that all the possible combinations will work. And I am something like too stupid to read the impressing documentation of exFAT library. ( I was not even able to find the mode-parameter for file.open() so I use something from the examples. ) I think, it is not easy to get and give good answers to questions in this forum, because authors do know their own library, but perhaps not the others in detail. And it is a lot of work to describe a project and to read the description.
B) So my second suggestion would be to reduce the number of possibilities by defining one "Reference Setup".
Define which SPI-channel and which pins shall be used to connect SD-card, which to connect displays,... On the software side there seem to exist several file systems. Choose one of these as reference. I think, a file system is to be seen as part of core with Teensy. The benefit would be, that software could be tested well against this setup. And documentation could focus on this setup. This "Reference Setup" must be very visible in the Teensy documentation. Like with all sorts of standardisation there will be complaints of people, who do find it better, to have their different solution. So the answer is, that the "Reference Setup" is guidance for tests of libraries and a solid starting point for user projects. Someone, who has a different idea can swap (or add) his part of the configuration into the Reference Setup and test it. For questions in the forum, the user can write, I use the Reference Setup with the following differences/additions and have this code:....
So now I am curious, for other thoughts and comments.
Best regards, Christof