Переходим от Arduino к программированию ATtiny13 на C

ATtiny13
Программирование Arduino даёт не только огромный простор для фантазии и возможностей, но, как и любой фреймворк, одновременно навязывает свой стиль и ограничивает возможности.
Поэтому, если чувствуется, что Arduino становится тесноват — можно не только перейти на 32-битные контроллеры (например, STM32), но и попробовать более низкоуровневое программирование контроллеров.

Уходя ближе «к железу» — программировать придётся на более близком к железу уровне — и если это не ассемблер, то уж язык программирования Си — точно.
Пример подобного программирования уже приводился в статье Arduino/CraftDuino и WinAVR — программируем на чистом С.
У такого стандартного программирования микроконтроллеров есть существенное преимущество перед использованием Arduino-вских скетчей.
Однако, за низкоуровневый полный контроль и возможность использовать все ресурсы микроконтроллера, приходится расплачиваться долгим и внимательным изучением документации (datasheet-а) на микроконтроллер.
Т.е., если у вас ещё не было опыта работы с конкретным микроконтроллером — то вместо быстренького набрасывания скетча для решения своей задачи — вам придётся потратить дополнительное время на изучение мат. части.

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

Для примера, возьмём меленький, простой и дешёвый контроллер ATtiny13.

( Читать дальше )
  • 0
  • 8 сентября 2015, 16:30
  • admin
  • 1

Своя среда разработки (MellowAVR)

Привет всем, я сново с вами :)

Сегодня я хотел бы написать о своей проге на Питоне, как ни странно, я не люблю Ардуино, не знаю почему, но меня, как ценителя GCC — псевдо С бесит. Я написал свою IDE для удобной работы с AVR. Дело в том, что я не оч люблю Виндовс, а использую GNU/Linux Ubuntu и прочие дистрибутивы и мне после перехода с Windows стало трудно программировать AVR, не хотелось использовать готовые IDE под всеобщее использование типа CodeBlock или eclipse, так как мне всего то нужно собрать проект и прошить.

Я решил сначала писать на С++, но оказался слишком жирным для моих целей. Потом я решил взять Питон, потому что давно хотел поднять свой скилл в нем. Использовал я библиотеку pyQt для интерфейса программы, написал парсер makefile, парсер для поиска файлов проекта (*.c/*.h) и библиотеку для работы с avr-gcc.

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

Работа с EEPROM в AVR-GCC

Перевод очень хорошей статьи от Dean Camera на русский язык. В ней содержатся пояснения о самой EEPROM, работа с встроенной библиотекой eeprom.h, приведены примеры для записи\чтения byte, word и block, работа с EEMEM. В статье рассматривается компилятор AVR-GCC. Это больше адаптация, нежели перевод. Часть текста я выкинул, посчитав лишним, где-то добавил от себя. Статья рассчитана на тех, кто не работал с EEPROM и хочет на простых примерах научиться с ним работать.



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

Класс-родитель для устройств на базе SPI, или веселый и удобный C++ для AVR

Мне всегда нравилась идея объектно-ориентированного программирования. Это очень удобно и легко, особенно, когда программа раздувается до больших размеров, или есть несколько очень похожих элементов, но с разными настройками. И меня всегда интересовали нестандартные, красивые решения и новинки языка — шаблоны, лямбда-функции, тернарные операторы… К сожалению, я все никак не мог к ним подобраться — то времени не было, то мозг был не готов. В общих чертах знал, что это, но сам никогда не пробовал. Но вдруг в одной из программ для AVR я увидел интересное использование шаблона, которое очень сильно облегчало работу. Мне стало интересно — и время нашлось, и желание… И вот родилась идея этой статьи. Результат — родительский класс для легкой работы с устройствами на базе SPI (сдвиговые регистры, трансиверы, Ethernet etc), в Hardware и Software реализации. Интересно — просьба под кат.

tl;dr — в конце все ссылки из статьи, в том числе готовый код и примеры.

WARNING 1: под катом много букв и о ужас ни одной картинки, а также огромная куча низкокачественного лапшеобразного замечательного кода.
WARNING 2: автор не крут в шаблонах, поэтому извиняется, если что-то реализовано ужасно.
WARNING 3: пока что — только Master, Slave-версия будет через год некоторое время.
WARNING 4: автор обожает варнинги и тег s неправда!!


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

WeatherStation. Часть 2: Ethernet модуль

Часть 0: Описание и концепция
Часть 1: Основной модуль

Ethernet модуль — далеко не последняя по важности деталь в проекте WeatherStation (кто не в курсе — погодная станция, отображающая дату, время, погоду\влажность за окном и прогноз погоды на утро, день, вечер и ночь). В этой статье я опишу, как и с каких ресурсов я беру время и погоду, в каком формате читаю, как обрабатываю и как передаю основному модулю.



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