Миландр. Неожиданное поведение CAN.

У контроллеров Миландр 1986ВЕ9х довольно много небольших проблем, описанных в errata, но так же есть и не описанные. Об одной из таких проблем и поговорим. Здесь не будет кода, только поток мыслей.

Cover Image
  • Из чего состоит проблема?
  • Проблема ли это?
  • Как решить этот вопрос?

Проблема проявляется следующим образом.

Несколько буферов настроены на отправку ответа на запрос RTR. Несколько буферов на приём. Из одного буфера периодически отправляется пакет (обычный пакет данных).

Имеет несколько ситуаций:

  1. Если мы получали RTR запрос и после него решили отправить какие-то данные в простом пакете, то замечаем такую картину - отправляется пакет данных, а за ним отправляется ответ на RTR запрос (хотя никакого запроса сейчас небыло).
  2. Если мы не получали RTR запросов или получили после них просто пакеты данных (в нём не установлен флаг RTR), то при отправке лишнего пакета не наблюдается.

Автоматизация инкремента версий в keil

Опишу небольшой заголовочный файлик, который помогает мне не заботиться о том, что бы у каждой вновь скомпилированный прошивки была новая версия.

Люблю Visual Studio за механизм, позволяющий инкрементировать версию собранного проекта, и также сильно ненавижу Keil за отсутствие таковой возможности .

Для чего это нужно? Представим ситуацию, когда очень много устройств, а ПО всё время дорабатывается, или же прошивкой новой версии занимается другой человек, ... много может быть причин, но не всегда можно отследить в каком устройстве какая версия зашита. Да и не всегда при сборки проекта вспоминаешь что нужно увеличить номер версии.

Стало интересно?

Немного о форматировании кода и другие советы

Некий свод советов по оформлению кода, которые помогут легче читать и поддерживать код, а также спасут от некоторых ошибок.

Данная заметка это некий свод советов по оформлению кода, которые помогут легче читать и поддерживать код, а также спасут от некоторых ошибок, своего рода компиляция многих источников которые были прочитаны за время профессиональной деятельности и некоторых своих домысливаний.

Делаем плагин для Bludit. Отправка ссылки на новую страницу в телеграмм.

Делаем простой плагин для Bludit, что бы отправлять ссылки на статьи в телеграмм канал.

Cover Image

Я думаю многие заметили, а кто не заметил, то узнают сейчас, что я использую для сайта CMS Bludit. Предлагаю загуглить. Это простая система управления контентом, не использует базу данных, всё храниться в тектовых файлах, что и плюс и минус одновременно. Работает довольно шустро и имеет возможность расширения функционала - это то, о чем сейчас и поговорим.

Будем делать плагин для автоматической отправки ссылки на страницу в телеграмм канал, личный чат или групповой чат.

Данная заметка будет в виде небольшого туториала. Буду рассмотрены несколько моментов: установка keil v5 и настройка для работы с микроконтроллерами различных производителей на примере STMicroelectronics и АО "ПКК Миландр".

Установка Keil.

Одним Keil нравится, другие его презирают, другие просто его не использовали ни разу. Я себя отношу к первой группе людей, меня он в принципе устраивает многим, хороший компилятор, поддержка многих семейств микроконтроллеров, удобная отладка. Из минусов разве что бедный текстовый редактор, который можно сравнить с notepad++, который за счет большого числа плагинов и то имеет более продвинутый функционал. Но всё же есть подсветка синтаксиса, индикация ошибок, какое никакое, но автодополнение и навигация по коду. И ещё он платный, что не мало важно, хотя и имеется бесплатная версия с ограничением размера кода(прошивки) в 32 килобайта.

Указатели на функции в Си.

Описание и пояснения по указателям на функции и переменные;

Решено написать эту маленькую заметку, ибо уже несколько раз мне задавали вопрос, что это и зачем. Помню и сам не знал этого, хотя вполне себе мог писать простенькие программы.

Что такое указатели и как их готовить вы наверное уже в курсе, если нет, то быстренько объясню.

Указатель - это переменная, которая содержит в себе адрес другой переменной, на которую указывает. Если проводить грубую аналогию с файловой системой в Windows, то указатель - это ярлык, а файл на который он указывает - переменная, размышляя дальше можно сказать что функция - это программа на компьютере, а ярлык для запуска программы - указатель на функцию.

Объявляются указатели следующим образом:

uint16_t *pointer_ui16 = &variable;
void *pointer_Void
char *str = "Строка";