Embedded Systems
14.3K subscribers
1.09K photos
236 videos
1 file
749 links
News, articles, guides, analytics, projects and startups from the embedded industry.

Topics of the channel:
◽️ machine learning
◽️ internet of things
◽️ embedded software
◽️ advanced electronics
◽️ new engineering ideas

⤵️ Share and subscribe!
Download Telegram
👍2
🎬 Pointers in C and C++ (full course)

https://youtu.be/zuegQmMdy8M

#video #clean_c #cpp #programming
🖥 PID controller implementation by using C++

Short article that gives plain and simple explanation on work of PID controller (widely used in control systems). Provides the C++ code with explanations, all the necessary formulas, etc.

More information...

#programming #PID #control #cpp #beginner
This media is not supported in your browser
VIEW IN TELEGRAM
🎚 ClearCore – An Arduino compatible Industrial I/O and Motion Controller

Teknic, a US-based manufacturer of servo motion control components, has designed ClearCore, a Microchip SAME53 Arm Cortex-M4 based industrial I/O and motion controller that can be programmed with the Arduino IDE for quick prototyping, or Atmel Studio 7 with a more advanced C++ API for more complex projects.

ClearCore offers four motion axes, 24-volt compatible analog and digital I/O, support for I/O expansion modules, as well as serial and/or Ethernet connectivity via RJ45 ports. Multiple ClearCore can also be daisy-chained for larger applications.

Specifications:
▫️ Microchip: SAME53 Arm Cortex-M4F microcontroller clocked at up to 120 MHz, with 512 KB flash, 192 KB of SRAM
▫️ Storage: MicroSD card slot
▫️ Power Supply: 12-24V DC via 3-pin terminal block
▫️ Connectivity: 1x 10/100M Fast Ethernet RJ45 port
▫️ Dimensions: 12.7 x 8.9 x 2.54 cm

More information:
Review article
Product page

#boards #cortex #cpp
🧠 Flashlight: Fast and flexible machine learning in C++

Flashlight is a new open source machine learning (ML) library, written entirely in C++, that was built by FAIR to power groundbreaking research by enabling teams to rapidly and easily modify deep and ML frameworks to better fit their needs.

More information...

#articles #machine_learning #software #programming #artificial_intelligence #cpp #libraries
🎬 Modern C++ in Embedded Systems

Good lecture about programming in modern C++ for embedded systems from Michael Caisse. He is a regular speaker at various conferences and is passionate about teaching and training. Michael is the owner of Ciere Consulting which provides software consulting and contracting services, C++ training, and Project Recovery for failing multidisciplinary engineering projects.

https://youtu.be/c9Xt6Me3mJ4

#video #programming #cpp
🎬 What Actually is Embedded C/C++? Is it different from C/C++?

Short analytical video. There's a lot of misinformation out there about what embedded C actually is, how it is (or isn't) different from C, and author made this video to clear things up.

https://youtu.be/KQBBWvY-s0o

#video #programming #cpp
👍1👎1
🎬 Top 5 Library Additions in C++23

This survey presentation provides students with a broad overview of the changes and a deep dive on a few facilities. The first part of the talk will be an outline of all the C++23 library facilities - in 23 minutes or less. From there we'll dive deep into 5 libraries as chosen by audience participation with approximately 13 minutes per topic.

High probability topics based on prior presentations are:
▫️ std::format and std::print and range formatting
▫️ some presentation of range algos and range view topics
▫️ std::expected
▫️ standard modules

The tutorial will be up to date with the latest working draft will include pointers to current implementations as well as the state of compiler support.

https://youtu.be/ZSbLute3IUU

#video #programming #cpp
👍11
🎬 Message Handling in Embedded: a Declarative, Modern C++ Approach

In embedded systems, messages usually arrive asynchronously and need to be efficiently parsed. Often the structure and semantics of a message packet depend on the value of a series of bits within the message. In event driven designs, messages are filtered and routed to proper handlers.

This talk will dive into a declarative approach to solving common problems with message handling: bit mapping fields, filtering, and dispatching to handlers. The solution is sensitive to small footprint embedded targets yet fairly flexible.

https://youtu.be/LdPgNFR7OL8

#video #cpp
👍7
This media is not supported in your browser
VIEW IN TELEGRAM
📟 ArduinoJSON: Efficient JSON serialization for embedded C++

ArduinoJson is not limited to Arduino; it works with any C++ project. Moreover, it’s compatible with C++98, so it doesn’t require a modern C++ compiler, which means you can use it with your old vendor toolchain.

Compared to the “official” Arduino_JSON library:
▫️ ArduinoJson is twice smaller,
▫️ ArduinoJson runs almost 10% faster,
▫️ ArduinoJson consumes roughly 10% less RAM.

Finally, ArduinoJson is open-source and uses one of the most permissive licenses so you can use it on any project.

More information...

#arduino #libraries #cpp
👍5
📃 C++ Templates for Embedded Code

Templates are a powerful feature of the C++ language but their syntax can be complex. This causes some developers to not use them, while others are concerned that templates might cause bloat to the compiled code.

The author explains how templates work and how you may use them in your code. Although the examples provided are for the Arduino Uno and Adafruit Feather M0, the concepts will work with any platform and with all modern C++ compilers.

More information:
Part 1: basics and function templates
Part 2: template classes and specialisation

#articles #programming #cpp
👍12
💻 Simple and Exponential Moving Averages in Embedded C++

Digital filtering is a handy tool for removing noise from an ADC signal. Digital filters come in two varieties: FIR and IIR. The simple moving average and the exponential moving average are two simple examples to let you get started.

In this article, you will look at two types of low pass filters one having an FIR and the other an IIR. The article also provides a repository which contains a couple more filter types.

If you learn about a few different filters (IIR high pass, Biquad), you can use this approach to have an excellent toolbox for manipulating all types of signals.

More information:
The main article
The repository with code

#articles #programming #cpp
👍10
💻 Consistent Error Handling in C++

Error handling in firmware is a difficult task. If you decide to ignore errors, the best you can expect is a deadlock, but you could also damage the hardware.

When reviewing existing code, you can often find boolean return values or a system of error codes. The problem with these systems is the lack of readability. It is hard to say whether true is the result of a successful call or means an error.

In the article, author explains different methods to handle errors in your firmware. Although the provided examples are for the Arduino Uno, the concepts will work with any platform and with all modern C++ compilers.

More information...

#articles #programming #cpp
👍11
💻 Write Less Code using the “auto” Keyword

The auto keyword was introduced with C++11. It reduces the amount of code you have to write, reduces repetitive code and the number of required changes. Sadly, many C++ developers are not aware of how useful this keyword is. Especially embedded code can gain a lot by its usage.

In this article, author will try to explain a number of useful cases of the auto keyword, using Arduino example code. The same principles are valid for any embedded environment which is using a modern C++ compiler. The C++11 standard is eight years old, and meanwhile, every C++ compiler should support it.

The examples are written for Arduino or Adafruit SAMD boards using the Arduino IDE. The toolchain for these boards use a compiler which supports more features explained in this article. Using auto with AVR code is possible too, just give it a try.

More information...

#articles #programming #cpp
👍10
💻 5 techniques for writing memory safe C++

Memory-safe programming languages can help solve specific problems and make memory-related bugs less likely, but they aren’t a catch-all. You can still end up with memory issues and bugs in a memory-safe language as one that isn’t. So memory-safe languages are another tool developers can use to solve a problem.

Many of the bugs memory-safe language help developers avoid can also be avoided using C/C++ if the developers pay attention to what they are doing and follow industry best practices and processes. Let’s examine five C++ techniques that can help developers improve memory safety. These are not a complete list, but they are examples of how C++ shouldn’t just be tossed aside for a new kid on the block. Best practices can make code memory safe.

More information...

#articles #programming #cpp
👍6👎3
💻 Units of Measurements for Safe C++ Variables

In your program code, you often deal with unitless values. You can add the units of measurements in the variable or function name, or by adding a comment, but there is still the risk you accidentally make wrong conversions.

The article will describe how to handle units of measurements for common time values using a custom template class. Author also explain how you use user-defined literals, so you can write values like 100_ms in your code.

The example code will only work with 32-bit processors, like the SAM D21 used in the Arduino Zero or Adafruit Feather M0 platform. You can adapt the code to compile on the AVR toolchain for Arduino Uno and similar, but this is not part of this article.

More information...

#articles #programming #cpp
👍7