Макросы для читаемости

При программировании STM32 производитель контроллеров предлагает использовать библиотеку Standart Peripherial Libray, но мне не нравится то количество кода, которое приходится писать, чтобы инициализировать вывод для выполнения каких-либо функций. Так же код, на мой взгляд, получается не особо читаемым. При поиске способа исправить эти недочёты вспомнились «макросы Аскольда Волкова», названные так по имени автора.

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

Блокнот: размещение файлов в памяти.

Если проект выдаёт что-либо наружу сложнее нескольких светодиодов, то надо это как-то хранить. И для этого придумали понятие файл: это именованная область данных на носителе информации. Самый простой способ — разместить в памяти. Но даже тут возможны варианты.

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

Microchip купила Atmel.

AVR
Вроде как плохо, но с другой стороны обещают продолжать выпуск контроллеров, к тому же с LifeTime у Микрочипа всё хорошо.
Документ
Письмо

О терморезисторе замолвите слово...

Доброго.
Нашёл у себя в детальках NTC терморезисторы EPCOS, и захотел оценить, насколько точно можно с их помощью измерять температуру. Я не буду склонять или разубеждать использовать терморезисторы, это каждый для себя пусть решает сам. Кому любопытно — смотрите под катом.NTC full range

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

Codesourcery CodeBench Lite больше не распространяется бесплатно

Собственно, новость в заголовке. По ссылке можно прочитать следующее:
Sourcery CodeBench Lite releases for ARM EABI, ARM GNU/Linux, ARM AARCH64-Linux, IA32/IA64 GNU/Linux and ELF are no longer available.
Самый «православный» путь — собирать самому из исходников. Для ленивых ( как я) на сайте CooCox-a есть ссылка, чтобы скачать в другом месте. Теперь на сайте Canonical Ltd.
UPD: Искал именно их сборку, чтобы было как в комплекте, по которому осваиваю ARM. Соответствия всё равно не получилось. Узнал много из комментариев.

Программные задержки для STM8

Доброго здравия, All.

Ковыряю STM8 контроллеры, и часто сталкиваюсь с тем, что нет каких-то мелочей, к которым привык. На этот раз такой мелочью стали программные задержки. Например, в AVR-LibC была для этого delay.h.

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

Собственно, файл брать здесь.
27.11.2014 Не упомянул компилятор, для какого тестировал — COSMIC. Зато теперь работает и для SDCC.

Кухонный таймер на ATTiny13

Мир вам!
Сразу ответы на вопросы:
— велосипед изобретал, так как жена попросила. Механический для неё тикает громко. :)
— "ATTiny13 — это же такая древность!" А куда мне его девать ещё, если он за несколько лет никуда не пригодился? К тому же в единственном экземпляре.


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

1-Wire: алгориттма поиска ROM, реверс

Одолела тут детская болезнь — «написать свой 1-Wire с преферансом и куртизанками», точнее с определением количества устройств на шине. Готовые проекты, которые нашёл, не являются библиотеками по принципу «подключил и пользуйся», только как примеры. (Здесь тоже этого нет — возможно, позже). Сам алгоритм описан в AN187.

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

Поменьше математики процессору, или оптимизация расчётов.

Досталась горстка дохлых ноутбучных батарей, тех самых, что на литиевых габарита 18650 собраны. По этому случаю делаю тут измеритель фактической ёмкости акумуляторов, чтобы хоть как то отбраковать их. Хочется видеть цифры по итогу в удобоваримом формате. А поскольку делаю на ATTiny26 (Не пинать! Ну, завалялся у меня.), то тащить вычисления с точкой накладно. Сел, помозговал — решаемо. Материал под катом может кому-то показаться очевидной истиной, может оказаться кому-то не востребованным, но надеюсь — большинство хоть что-нибудь подчерпнут для себя. Для нетерпеливых итог:
(1)(1)
Для тех, кто не боится формул — ниже.

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

i2c (slave) расширитель на ATMega

AVR
Потребовалось тут из основной задачи на ARM-e под Linux дрыгоножество неспешное, а ног под GPIO сконфигурировано всего 3 шт! Разумеется, можно пересобрать ядро соответствующим образом, но поскольку в данном вопросе пока слаб, решил поставить расширитель i2c. Когда понял, что в городе я микросхем не найду, и посмотрел цены — понял, что ATMega весьма неплохое решение в данном случае! Попутно выяснил параметры для AVRDUDE, чтобы шить через Arduino бутлоадер.
Очень сильно помог этот материал в разборках с TWI, он же «квадратная шина» i2c.
Возникла заминка — как получить доступ не только регистрам PORTB, но и к остальным, а в идеале — ко всей периферии? Если делать в лоб — сравнивать адрес, потом обратиться к нужному регистру — много кода, ненаглядно, и никакой гибкости. Подумал, поспрашивал на форумах — на местном камрады почти готовое решение дали — используем указатель, значение которого вычисляется, и уже через него читаем-пишем в нужный порт.
В общем, кому надо — пользуйтесь. Мега прикидывается 24cXX, адресация начинается с PINB, дальше — по даташиту. Кому хочется адресации по даташиту — поправьте строку
#define BASEPORT PORTB-2

на такую:
#define BASEPORT PORTB-5

В этом случае адреса будут соответствовать описанию от Atmel.
Ещё момент — не уверен, что будет доступна периферия в верхних адресах, например — UART.
Скриншот терминала с проверкой ниже.

i2c-tools
  • 0
  • 20 августа 2013, 06:47
  • Hoksmur
  • 1