AVRASM: Диспетчер задач RTOS 2.0 (псевдо кооперативная ОС)

AVR
Отрефакторил код «Диспетчера задач RTOS» (псевдо кооперативной ОС), оптимизировал и универсализировал, добавил новые фичи, декларировал чёткое API, и опубликовал на GitHub… Фактически, весь код был переписан сызнова, по прототипу DI HALTа.

Operating system placement


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

AVRASM: Библиотека Подпрограмм общего назначения "GENPROCLIB.INC"

AVR
Библиотека «Подпрограмм общего назначения» содержит самые необходимые процедуры, нужные практически в каждом проекте: для Записи/Чтения памяти EEPROM; для Временной Задержки; и др.


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

AVRASM: Библиотека процедур для интеллектуальной обработки ВВОДА в МК: событий от Кнопок и Энкодеров (часть 2: порядок внедрения и использования)

AVR
Большинству микроконтроллерных устройств требуется поддерживать интерфейс с пользователем-человеком: для вывода используются светодиоды или дисплеи, а для ввода — обычно, традиционные Кнопки и Энкодеры.
Данная реализация «Библиотеки процедур для интеллектуальной обработки ВВОДА» написана на языке ассемблера, для компилятора AVRASM. Соответственно, она предназначена для разработки программных прошивок (firmware) на языке ассемблер, для микроконтроллеров Atmel AVR (8-bit).



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

По следам одного бага

Для многих программистов начавших путь в эмбеддед с Си рано или поздно встает вопрос: а нужно ли учить ассемблер? И правда зачем? Ведь объективно Си гораздо удобнее ассемблера.
Признаться честно, для меня такого вопроса никогда не стояло, так как волею судьбы я начал изучение программирования именно с ассемблера и до сих пор об этом ни капли не жалею. В этой небольшой статье я хочу привести пример того, как знание ассемблера мне помогло отловить баг, который иначе я возможно ловил бы очень долго.



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

AVRASM: Библиотека процедур для интеллектуальной обработки ВВОДА в МК: событий от Кнопок и Энкодеров (часть 1: авторская методика и реализация)

AVR
Микроконтроллерное устройство может работать исключительно в автономном режиме: получать сигналы с датчиков, и выдавать управляющие импульсы, иногда оно ещё взаимодействует с ЭВМ или другими микроконтроллерами… Но большинству микроконтроллерных устройств требуется поддерживать интерфейс с пользователем-человеком: для вывода используются светодиоды или дисплеи, а для ввода — традиционные Кнопки и Энкодеры, редко используются и другие экзотические устройства ввода
В данной работе будут рассматриваться только традиционные инструменты ввода: «цифровые Кнопки / Клавиатуры» и «инкрементальные Энкодеры», поскольку именно они используются почти всегда.

Содержание:


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

AVRASM: Библиотека базовых Макроопределений "MACROBASELIB.INC"

AVR
Библиотека «базовых Макроопределений», расширяющая стандартный набор ассемблерных инструкций микроконтроллеров Atmel AVR (8-bit AVR Instruction Set), и рекомендующая парадигму программирования: с хранением «модели прикладных данных» в ОЗУ и использованием нескольких «временных регистров»…


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

AVRASM: Шпаргалка по стандартным инструкциям ассемблера AVRASM. Система команд AVR (идея)

На основе оригинального документа Atmel: «AVR Instruction Set Manual (Rev.0856H–AVR–07.2009) (ENG).pdf» (это не самая последняя ревизия документа, но она содержит 99% всей информации и более компактна, чем последняя)

Скомпоновал только нужные страницы, с самой необходимой информацией, и распечатал себе такой некий «Quick Reference Guide»: «Celeron — Шпаргалка по AVRASM. Система команд AVR (распечатать на А4 двухстороннем, скрепить в левом-верхнем углу).pdf»


Читать дальше
  • +1
  • 15 сентября 2013, 22:05
  • Celeron
  • 2

uRTOS в режиме кооперативной ОС

uRTOS

В предыдущей статье была рассмотрена работа ОС uRTOS в вытесняющем режиме. С тех пор кое-что в системе изменилось, исходник был тщательно перелопачен, перекомпонован, дополнен комментариями. Также в ОС была добавлена возможность работы в кооперативном режиме. Остановимся на этом чуток подробнее.

Читать дальше
  • +12
  • 13 апреля 2013, 01:03
  • uRTOS
  • 1

Запретный плод GOTO сладок!

Доброго времени суток!

Какое Ваше отношение к оператору goto в языках С/С++? Скорее всего, когда Вы учились программировать, Вы его использовали. Потом Вы узнали, что это плохо, и Вы о нем позабыли. Хотя иногда при сложной обработке ошибок… нет-нет, там try … throw … catch. Или же для выхода из вложенных циклов … не-ет, там флаги и куча сложностей. Или когда вложенные switch … нет-нет-нет, там те же флаги.
И все-таки, иногда в ночной тиши Вы допускали в свое подсознание грешную мысль – «а почему бы не использовать вот тут goto? И программа вроде как стройней будет, и оптимально выходит. Да-а, было бы хорошо… Но нет – нельзя, забыли!».
А почему так оно?
Под катом – небольшое расследование и мое, основанное на многолетней практике и разных платформах, отношение к этому вопросу…
Особо любопытные и читатели Хабра уже возмутились — это кросспост с с Хабрахабра! Согласен — я там когда-то написал эту статью. Увидел, что она вызвала резонанс. Решил поделиться с читателями и этого ресурса.


Читать дальше
  • +8
  • 26 сентября 2012, 18:26
  • PICC