"Has it really been a year?" isn't a question - it's the name of the latest release. It's been more than a year since the last release, and there are certainly many reasons for that.
There were so many changes in the build infrastructure ("modular build"), supported by modularization and some generalizations, that there have been no less than four pre-releases.
The motivation behind it was a number of STM8 eForth applications that each required some kind of "board support" in drivers, vocabulary selections, peripherals usage and whatnot while the STM8 eForth core itself hardly changed at all.
On the other hand, configuration options for the following things have improved by a lot:
- Binaries through "modular build": it's now trivially easy to create a downstream GitHub repository with build automation
- Peripherals abstraction for timers and serial interfaces used in the core: it's now possible to use any 16 bit timer for ticking the background task, both UARTs of STM8S High Density µCs can be used
- STM8L devices received more love (e.g. simulated serial interface, peripherals abstraction)
- Most of the code for anything "non-core" (e.g. board I/O) is now in include files and variants can be put in a board folder where it has precedence
And feature creep, of course. I'll have to spend some time to document all new features ;-)
Now there is finally some stability as the following POCs showed the desired results:
- stm8ef-modbus since 2.2.24.pre3
- W1209 Data-Logging Thermostat since 2.2.24.pre3
- XY-LPWM since 2.2.24.pre4 (timers and 7S-LED code)
- stm8l051led since 2.2.24 (simulated serial interface and other things for STM8L)
It's safe to say that STM8 eForth is now quite mature and that it will support a range of applications with little effort. Future developments are planned for exploring options in less frugal systems.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.
Thanks for all the all the effort you have put in this project. It has become very useful indeed. I now have several STM8 applications operating.
I recently made a PCB for a solar charge controller to use on hiking trips, designed around STM8L051. It has an i2c OLED display to show voltages and currents and two push buttons to start interrupt tasks. It seemed to work at first, but the interrupt tasks stopped functioning and I still don't know why. But your latest release (2.2.24) seems to have solved the issue.
Btw, is there a way to use openocd/gdb to step trough forth code? I can get assembly translations but link addresses and word names are also translated into mnemonics. Or is there a better way to debug forth?
Are you sure? yes | no
Hi Eelco, it's always a please to see that it can be put to good use, or at least it creates some fun! STM8L is still a big construction area - I'm only now learning the fine print in the manual (clock tree config in the initialization sequence, fun things like ADC tIdle...).
When I was in the hot debug phase of the STM8 core openocd/gdb was still experimental. Usually I did pin debugging, logic analyzing and other types of sleuthing. Once in a while I used uCsim. Luckily the patterns of execution and stack usage are rather regular and interactive approaches are often successful. The STM8L peripherals are more software driven then the STM8S' and things can get ugly. If you gain experience with openocd/gdb I would love to hear about it.
Are you sure? yes | no
My question is why didn't you just bump it up to 2.3.0?
Are you sure? yes | no
Well, that has something to do with the eForth versions out there - C.H. Ting's last version was "STM8EF, Version 2.1, 13jul10cht" - I pumped that to 2.2 (once) and started counting. Dr. C.H. still "owns" the semantics as long as it's an eForth ;-)
Are you sure? yes | no
That makes me wonder what kinds of feeping creatures I can add to zeptoforth. ;)
Are you sure? yes | no
It shouldn't be too hard to find some. These critters come in all shapes and sizes.
Are you sure? yes | no
My latest feeping creatures are a set of math routines; however, they are not complete, as sin doesn't work (and neither does a bunch of stuff based on it) and ln, well, is slow, so I'm told, but I don't really understand the example code I was given for a better ln at the moment.
Are you sure? yes | no
The STM8 here gets to do humble table lookups and interpolation - that way many problems can be solved using simple '+' and "*/". Functions of multiple variables, of course, require exponentially more memory, and there is a point where more math should be built in.
Are you sure? yes | no