USB serial in Forth, progress!
A while back, an article was posted about the lack of USB on STM32F103 µCs, when it comes to Mecrisp Forth, that is. Unfortunately, getting the built-in USB device-mode hardware working is quite a...
View ArticleLet's start with a Blue Pill
If you search for “stm32f103c8t6 board” on eBay, you will get lots of hits for what is essentially a single product, to be called the “Blue Pill” from now on: The price of these boards is absolutely...
View ArticleUSB serial is a good way to go
Note: let’s use “F103” as shorthand to avoid typing “STM32F103C8T6” all the time The F103 has a built-in ROM-based boot loader, so there’s no risk of ever damaging it, but it’s quite limited since it...
View ArticleWe need a toolchain and library
Now that the connections and uploading have been dealt with, let’s turn to generating code. First of all, we need a C/C++ compiler: this one. GCC is now at version 5.0, but 4.8 is also fine (there have...
View ArticleLED blinks and serial echoes
Compiling software for the F103 is very easy but – as so often – does take a little preparation. In this case, we will need set up a few build files and make sure they are correct for the F103. But...
View ArticleHooking up an RFM69 radio
It’s time to step things up a bit. Let’s create a wireless node, with an RFM69 attached to an F103 µC, and then see if we can make it sing… We’re going to need two nodes, if we want to actually test...
View ArticleFancy serial with a SerPlus
So far, to upload new code to a Blue Pill, you had to change a jumper, press reset, perform the upload, change the jumper back, and press reset again - this will quickly become very tedious! So why not...
View ArticleStop staring at that screen!
Embedded software development can usually be characterised by the following diagram: In other words: a “host” computer with a cross-compiler, where you enter code, compile it, and upload it to a...
View ArticlePeeling off layers of complexity
As you know, compilers generate code. They take one or more source files and turn them into an executable. In the case of embedded software development, the compiler is actually a cross-compiler...
View ArticlePolish notation and tiny words
Ok, so what is this “Forth” thing like, as programming language? One way to answer this question, is to point to the Forth in 7 easy steps article, published a while back on this weblog. Go ahead and...
View ArticleLet it burn, then press CTRL-C
We’re about to try out Forth on real hardware. The implementation used here at JeeLabs is Mecrisp Forth by Mattias Koch. It’s fully open source (GPL3), it’s well-supported, it’s robust, it’s available...
View ArticleMaking an LED blink (and fade)
Just like C-based code benefits from a runtime library with utility functions, Forth can benefit from a set of pre-defined words to talk to the hardware peripherals built-into every F103 µC. This...
View ArticleCutting the serial cord, sort of
There’s a hardware USB device peripheral in every F103 chip. It has been quite a long journey, but the code is now finally at a stage where it can be used as serial console for Mecrisp Forth. You will...
View ArticleWorking on the JeeNode Zero
The JeeNode v6 was created several years ago, to combine the convenience of the then-still-upcoming Arduino IDE with low-power wireless communictation: It all worked – and still works – really well,...
View ArticleSome specs and comparisons
To get an idea of the differences between the original JeeNode v6 and the new JeeNode Zero, we can first of all view them side by side: No more through-hole parts - there are almost no µCs available...
View ArticleThis node speaks Forth (and C)
If you’ve been following the weblog for a while, you may have noticed that there’s a strong Forth wind blowing nowadays at JeeLabs. The JeeNode Zero is designed for use with Forth. Setting up a Mecrisp...
View ArticleTaking the JNZ rev3 for a spin
Let’s make the JeeNode Zero do some simple things. Like blinking LEDs in a continuous loop: The code for this was actually written step by step, and later saved in a file called ex/leds.fs: forgetram \...
View ArticleJNZ testing and availability
At the time of writing this (end Dec 2016), there have been three prototyping rounds for the new JeeNode Zero. The current “rev3” board is getting close to the intended final release - the STM32L052 µC...
View ArticleHey, there's a radio in there!
The Forth driver for the RFM69 on the JeeNode Zero is in flib/spi/rf69.fs. It is normally included in core.fs and therefore always available from flash memory. It’s very simple to use: call rf-init to...
View ArticleUltra low-power and coin cells
Let’s explore the current consumption of a JeeNode Zero a bit and see how we can reduce it. The following measurements were all made with a low-cost Voltcraft VC170-1 multimeter, in series with the +5V...
View Article