In a previous post, the assignment of priorities was discussed. There are a couple of axioms involved. One must mention at least these two: No resource sharing, locks or busy-waits. Static priorities (i.e. the task with the highest static priority that is runnable immediately preempts all other tasks, and the task priority does not change […]
ADC
In order to (attempt to) control things, we need to find out what is going on, we need to measure and quantize: Sensors are the senses of electronics. Without senses, we are deaf and blind. Most micro-controllers we find today, incorporate an Analog-to-Digital-Converter (ADC) peripheral. This ADC enables us to link electronic sensors, which output […]
AC generation experiments
Power with green inspiration. A couple of weeks ago, an electricity blackout in our neighborhood was announced by the power company. We thought this was the ideal time for some experimentation with ‘green’ off-the-shelve products and also explain a bit about the inspiration for the energy harvester project. The various “domain knowledge gathering” experiments (e.g. […]
Real-time scheduling: assigning priorities
Real-time scheduling in practice In one of our previous items we talked about Real-time scheduling. Now, we want to show how priorities could be assigned in practice and how deterministic system response can be designed. Deterministic response needs to take into account the worst case scenario: everything is happening at once, at the worst possible […]
Debounced Buttons
A button-driven handbrake Buttons (or switches, or keys) are quite common in the world of the embedded systems. In most cases buttons trigger a software action and – in our context – we will use buttons for configuring the settings of the charge controller. We can also use the buttons as a debugging utility. The […]
Real-time scheduling
Definition A real-time operating system is a system that schedules execution of tasks in a timely deterministic manner, and is scalable. The scheduler follows a set of algorithms that determine which task executes at each moment. Preemptive priority-based scheduling is a mandatory property of the operating systems we evaluate for use in our application. A […]
Driving LEDs by GPIO: finally resolved!
MCU pin configuration, GPIOs and a word on software architecture
Basic peripheral setup: pin configuration All MCUs have pins. They might come in different package types such as QFP (Quad Flat Package – Figure left) or BGA (Ball Grid Array – Figure right). But for us, embedded software engineers, pins or balls, we don’t really mind: MCUs have pins and we need to configure them. […]
The energy harvester is ready for iteration 1
Iteration 0 overview A few months passed since the start of our energy harvester project and, given our limited project time, we’re making a steady progress. Implementing a new product in a new domain introduces technological uncertainties, and therefor, we proposed a top-down, bottom-up development approach which is part of an iterative engineering process. At […]

Recent Comments