A new documentation site
There’s quite a bit of new Forth code in the embello repository on GitHub, and more being added all the time - so it’ll become increasingly important that this code gets documented.There are many tools...
View ArticleThe JNZ rev4 PCBs are in!
The PCB panels are in! They are produced by PCBcart, and arranged as 10 x 3 units:With a nice blue soldermask + gold plating, just like all the other official boards from JeeLabs.And here’s a close-up...
View ArticleGetting started with a JNZ
One of the features of the JeeNode Zero, is that it takes minimal effort to get started: hook it up via any USB serial interface, using any terminal emulator you like, and you’re all set to go.Here’s a...
View ArticleInstalling more drivers in flash
An application written in Mecrisp Forth consists of a number of different parts:The Mecrisp kernel itself: this is 20 KB of Matthias Koch’s hand-craftedassembly code, turning a µC into a Forth compiler...
View ArticleSetting up a remote node
To try out RF communications, we need to go through a number of steps:hook up two JeeNode Zero boards, so we can develop on both in parallelwork out the code needed for the receive and send nodeslower...
View ArticleHow all those JNZs are tested
One of the requirements of the JeeNode Zero rev4, is that each one has to be tested and then end up with the proper software loaded onto it. The obvious way to do this is to connect each board over...
View ArticlePost-mortem of a bug
As everyone knows, the later a bug shows up in production, the more trouble it is to fix…A few weeks ago, a batch of fresh JeeNode Zero rev4 boards was assembled, in itself the result of quite a bit of...
View ArticleConnecting a rotary encoder
This exploration is about connecting a rotary encoder switch for use as an infinitely adustable up/down controller. The basic idea is that there are two switches inside, which generate pulses. In the...
View ArticleCutting the rotary cord
Before moving on to the topic of this article, let’s figure out the problem that came up in the previous one, where adding an OLED display made the rotary encoder readout unreliable.The problem is...
View ArticleMaking an always-on device
It’s all nice and well, but a JeeNode Zero which needs to remain tethered to a host to set it up after each reset is not very useful. Fortunately, this can be fixed using a simple recipe:add these two...
View ArticleSeveral years on a coin cell?
So far, the power consumption of the rotary encoder node has been optimised by taking the current draw from 5.0 mA to 45 µA - that’s an estimated coin cell battery life of 6 months.Unfortunately, this...
View ArticleFaster uploads through SPI
It turns out that a ROM-based serial upload with Folie takes about 22 seconds for a standard Embello install (Mecrisp + always/board/core). While this is fine for occasional re-flashing, it adds quite...
View ArticleEvery possible connection
The Raspberry Pi does not really need an introduction: Linux plus some tinkering pins - who could possibly ask for more? It has all the features needed to create a flexible and powerful programming /...
View ArticleSetting up the Pi software
To turn the Raspberry Pi into a general-purpose uploader / debugger for ARM STM32 chips, we need to set up some software.First of all - the OS. DietPi is a very practical little distribution these...
View ArticleLet's try out the multi-tasker
There’s been a multi-tasker hiding in the Embello repository for some time now. It’s a small variation of the one provided as part of the Mecrisp distribution, also on GitHub.The multi-tasker lets us...
View ArticleSometimes, timers are easier
Multi-tasking is a great mechanism, but there is a drawback: each task needs its own stack. In the case of Forth, it’s even worse because each task needs both a return stack and a data stack.In its...
View ArticleStay busy, but also sleep a lot
One of the examples in the multi.fs code contains this little gem:: sleep ( -- ) [ $BF30 h, ] inline ; \ WFI Opcode, enters sleep mode task: lowpower-task : lowpower& ( -- ) lowpower-task activate...
View ArticleSD cards with FAT files
Those little plastic µSD-to-SD card adapters, of which you may have a bunch lying around since they are often included with new µSD cards, make excellent µSD card sockets:There are many libraries (in C...
View ArticleInterrupts, tamed at last
Before going into interrupts, why they’re needed, and why they are tricky, let’s first look into an example which does not use interrupts: writing a pass-through USB-to-serial application.Note that...
View ArticleTying SPI and DMA together
If you consider µCs to be incapable of any “serious” data handling, then you’ll be in for a treat.The following design was created for an upcoming project, which needs a fairly high-speed path for...
View Article