Как стать автором
Обновить

Низкоуровневое программирование микроконтроллеров tinyAVR 0-series

Время на прочтение7 мин
Количество просмотров20K
Всего голосов 46: ↑42 и ↓4+56
Комментарии23

Комментарии 23

Помимо нового интерфейса программирования в новых AVR вообще же периферию и регистры изменили с потерей обратной совместимости. Обзор изменений был бы уместен.

Лайфхак — раз уж используются структуры доступа к портам, можно использовать OUTTGL, тогда ваш блинк будет в 2 раза короче. Вот так:
PORTB.OUTTGL= (1<<5);
_delay_ms(1000);

Только всё-таки delay не 1000, а по-прежнему 500, иначе частота мигания упадёт в два раза.
Благодаря успеху Arduino UNO в интернете можно найти множество руководств, разъясняющих особенности программирования 8-битных микроконтроллеров ATmega328 и их собратьев вроде ATtiny85.
Мануалы ардуинщиков по миганию диодиком и корявые ардуиновские библиотеки — последнее на что стоит смотреть… Должна быть нормальная документация у производителя!
Как по мне, при выборе МК стоит ориентироваться поддержку платформы тулчейнами и объём ерраты (и в особенности её полноту — т.к. у некоторых производителей мало того что ошибка на ошибке, так и вносят их по полтора года).
которые, в сравнении с более старыми 8-битными микроконтроллерами (Micro Controller Unit, MCU) обычно предлагают больше RAM, более высокую производительность, поддержку большего количества периферийных устройств
памяти и периферии просто либо хватает под задачу, либо нет… Само по себе «больше» никаких особых плюсов не даёт. Даже жалко когда 90% ресурсов остаются незадействованными. Важно чтобы работало это всё без сбоев и программировалось без лишнего геморроя…
Планируете ли вы пользоваться новыми TinyAVR в своих проектах?

На близких по возможностях AVR контроллерах делают и разные DIY «компьютеры» и эмуляцию Old-процессоров :)
Для примера:
FIGnition
IDE using MikroForth for the ATMEL AVR Attiny 2313 in 20 Pin DIL

Недавно использовал. Понравилась отладка по одному проводу и хорошая стабильность RC генератора, подходящая для UART.

НЛО прилетело и опубликовало эту надпись здесь
Простите, а для чего вы в коде переводите частоту на 20 МГц? Нельзя было просто установить F_CPU = 3.33 МГц?
Простите, но это перевод.

F_CPU — это просто дефайн, чтобы компилятор мог узнать частоту. Сама же частота меняется через регистры.

Про то и речь — зачем менять частоту на 20 МГЦ если можно указать что контроллер работает на 3.3 МГц, чтобы компилятор «заставил» delay_ms работать правильно?
Планируете ли вы пользоваться новыми TinyAVR в своих проектах?

Нет уж, умерла так умерла.


Очередной инновационный отладочный интерфейс, какой по счёту у АВРов?
Источник тактирования там до сих пор только программатором через фьюзы поменять можно или догадались наконец по-человечески систему тактирования сделать?


Даже мелкие msp430 c фрамом уже стали дешевле для "контроллера единственной кнопки/светодиода".

AVR не планирую, а PIC16 серию до сих пор много где использую. Для многих задач — 8бтки — «за глаза» хватает. Не требовательны к питанию, минимальный обвес, простой ассемблер с четким временем исполнения команды (1 или 2 цикла), возможность внутрисхемной отладки, неубиваемость. Для всякой автоматики, типа поставил и забыл — самое оно. И да, MPLAB X вполне себе достойная среда на базе NetBeans и прекрасно чувствует себя под Linux, единственное, почему то микрочиповцы до сих пор используют 32битные либы, приходится ручками устанавливать.
А пики арифметические операции умеют?
8 битное сложение, вычитание простое и с переносом. Инкремент, декремент, OR, AND, XOR, NOT, и самое приятное — атомарные битовые операции как на регистры периферии так и на ОЗУ. float, конечно, медленно считать будет, но мне ни разу не пришлось использовать плавающую точку в реальных проектах. Все приводилось к фиксированной.
Ну то есть, AVR при той же функциональности и цене будет пошустрее. Так как у него есть и вычитание и сложение и умножение даже. И так же все команды кроме переходов и вызовов функций занимают один такт. Так что смысла в пиках не много.
Все от задачи зависит, а цена — сильно зависит от партии. При этом, в эпоху конкуренции Microchip/ATMEL у них был разный подход. Огромный модельный ряд PIC контроллеров, из которого можно было выбрать подходящий минимум по ресурсам / цене, и небольшой ряд AVR, но более напичканные, при этом дороже. Так повелось, что в любительских / мелкосерийных изделиях больше было AVR, а в массовых — PIC16. Кроме того, в новом ядре PIC16 есть куча очень приятных плюшек, например сквозная адресация памяти команд и данных, не знаю, может в новых AVR тоже есть, надо доку скачать, давно в ту сторону не смотрел. Для меня огромный плюс пиков — отличная надежность в плане электромагнитной совместимости и нетребовательность к питанию. Знаю, некоторые разрабы промышленного оборудования переходили на пики, не смог достигнуть приемлемой надежности решений на AVR и где AVRка сбоила на вылизанной плате, PIC прекрасно работал на макетке… В общем, все от задачи зависит.
> Планируете ли вы пользоваться новыми TinyAVR в своих проектах?

Много программировал на AVR, но часто испытывал боль, то EEPROM повреждается при недостаточно быстром нарастании питания, то частота RC генератора сильно уплывает (не только с темепратурой, а ещё и со временем). Atmel сильно жлобились на переферию, таймеры. В tiny серии i2с это вообще боль. Поглядывал stm8, чуть-чуть пробовал их и очень их хотел, но коммерческие компиляторы под windows меня останавливали. Воровать я их не планировал, а на триалах далеко не уедешь, да и разрабатывать под windows — то ещё удовольствие.
ARMы — выход, я их люблю, но иногда под крохотные устройства хочется крохотные контроллеры.
Когда повился sdcc под stm8 — сразу с AVR ушел бегом. Очередного шанса им не дам :-)
в чем приемущество avr перед stm?
сейчас вроде бы уже stm32 в 8-ми ногом корпусе есть и стоят копейки
и инфроструктура есть под обе платформы (win/linux), все бесплатно, и не нужно вспоминать что такое заблокированный чип фьюзами
Я отвечу за себя, чисто исторические причины. Делаю что-то редко, для мелких задачек AVR сильно проще, осваивать их быстрее, а многое я помню и так на уровне рефлексов.
Основное преимущество AVRки перед стмкой, мспшкой и тд( в поделках типа «кнопка-светодиодик»): питание напрямую( только блок. конденсаторы) от 2х1.5В, 3х1.5В, 1xLiIon/Mn/xxx, без всяких Ultra Low Power LDO и тд
ну так есть и stm8 с питанием от 3 до 5В

Цена в 2 раза ниже: если сравнивать восьминогих, на Mouser сейчас STM32g030j6 0,9€, ATTiny402 - 0,42€. При том, что 4кБ флеша и 256 байт RAM обычно достаточно для их задач.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий