Sometimes, we need an easy way to test and verify that our board works correctly, especially if we are using breadboards and cables. The following simple FreeRTOS thread is able to echo each incoming CAN frame. To use this thread you must enable FreeRTOS using the ST’s CubeMX software which will generate the appropriate startup source code and afterwards you have to include some extra libraries that can be found in the blog (please check…

In a previous post we saw a simple CAN library to handle the CAN interfaces of STM32 board. However one basic issue that we had to solve is the frames buffering (especially when we receive the frames). This issue came up by the processing time that each frame needs and the limitation that the receive interrupt routine should be as fast as possible. For that reason, the following source code presents an incoming CAN Frames…

Dynamic resources allocation has become even more attractive as a research direction with commodity computing gaining momentum and bringing new requirements regarding elasticity and flexibility and with the growing importance of cloud computing.  The aim is to deliver high-performance computational while leveraging on other aspects, such as energy consumption. Admittedly, heterogeneity comes at the cost of greater design and management complexity. A promising approach to address the difficulties posed by this scenario is to exploit…

The Controller Area Network (CAN, also known as CAN Bus) is a vehicle bus standard designed to allow electronic control units and devices to communicate with each other in applications without a host computer. STM32F779-Eval board has 3 CAN interfaces, however only the two of them have their own clock (master). For that reason the following library provides some C methods to activate and use those CAN interfaces. Beware that each CAN interface requires its…

I have recently been playing with UART and DMA, although i’m still getting my head around it,. DMA allows you to transfer large amounts of data through the system without getting the processor core involved. Rather than the CPU laboriously reading a byte, the writing a byte from one buffer to another, you’d give the DMA controller a pointer to the start of a source buffer, a pointer to the start of the destination buffer,…

Are you in need of an additional memory larger than EEPROM? Although EEPROM is a very easy and effective way of storing data on the board, the built in EEPROM only offers only a few bytes of storage. When working with larger or more advanced projects we may need to store additional data so an external memory solution. For that reason, MicroSD card enables you to do this quickly and easily. The following library provides…

Backpropagation is one of the several ways in which an artificial neural network (ANN) can be trained. It is a supervised training scheme, which means, it learns from labeled training data. In simple terms, BackProp is like “learning from mistakes. “The supervisor corrects the ANN whenever it makes mistakes.” Initially, all the edge weights are randomly assigned. For every input in the training dataset, the ANN is activated, and its output is observed. This output…

In linear algebra, functional analysis, and related areas of mathematics, a norm (l-norms) is a function that assigns a strictly positive length or size to each vector in a vector space—save for the zero vector, which is assigned a length of zero. A seminorm, on the other hand, is allowed to assign zero length to some non-zero vectors (in addition to the zero vector). L1-Norm loss function is known as least absolute deviations (LAD). $latex…

An array $latex a $ is called beautiful if for every pair of numbers $latex a_i $, $latex a_j $, ($latex i \neq j $), there exists an $latex a_k $ such that $latex a_k = a_i * a_j $. Note that $latex k $ can be equal to $latex i $ or $latex j $ too. Input First line of the input contains an integer T denoting the number of test cases. T test cases…

The 3020 CNC router is a popular Chinese machine for a good reason. For around 500EUR, you can have a simple CNC with a rigid all-aluminum frame, three decent stepper motors, and pretty good resolution. However, a major disadvantage of this CNC is the out-of-date electronic parts. The motor controller is using a parallel port which is not available in any new computer(PC). For that reason, it is recommended to upgrade the motor controller to…