Кольцевой буфер на С++ для МК.

Кольцевой буфер (КБ)(Ring Buffer) — структура данных типа FIFO (First In First Out — первым вошел, первым вышел), находит очень широкое применение в том числе при программировании МК. Кольцевые буферы часто используют для организации различных очередей сообщений и буферов приёма-передачи различных коммуникационных интерфейсов. Популярность КБ обусловлена тем, что это один из самых простых и эффективных способов организовать FIFO без использования динамической памяти. Существует множество разновидностей КБ, о них можно почитать, например тут en.wikipedia.org/wiki/Circular_buffer Рассмотрим одну очень быструю и компактную реализацию КБ на С++.


Читать дальше

О чём писать?

Есть следующие темы для будущих статей:
  1. Самый быстрый кольцевой буффер для МК на С++
  2. Радио модуль Rfm70
  3. Забудте о printf, или форматный вывод для МК на С++
  4. Тестирование ПО для микроконтроллерных систем
  5. Еще одна статья по моей «библиотеке для работы с портами» — вней много чего изменилось с момента первой публикации.
  6. Универсальный способ обработки команд ИК ДУ.
Есть какие-нибудь пожелания? В каком порядке их лучше писать?

AVR, С++ и умные указатели

AVR, С++ и умные указатели

Как известно МК AVR построены по Гарвардской архитектуре, что значит МК имеет различные шины для памяти программ — flash, eeprom и ОЗУ. Многие МК имеют различные шины для разных типов памяти, это даёт возможность, например, одновременной выборки команд и доступа в ОЗУ. Однако в большинстве современных МК при этом все различные виды памяти отображаются в единое адресное пространство. В AVR же и шины разные и отображаются они в разные адресные пространства. Это создаёт определённые неудобства при программировании на Си/Си++ поскольку эти языки подразумевают единое адресное пространство и работа, например, с константами хранящимися в памяти программ осуществляется не очень прозрачно.


Читать дальше