В свете известных сложностей с поставками и расценками на AVR,
а также появлением нового семейства 8-разрядников STM8 перед разработчиками
встают как минимум два вопроса:
1. Есть ли объективная необходимость замены ATmega в уже существующих проектах?
2. Насколько оправдано применение в новых проектах микроконтроллеров
семейства STM8S вместо AVR?
Необходимость замены AVR в готовых проектах, очевидно, полностью
зависит от ситуации с поставками и ценами. Как долго продлится неопределенность
в этом вопросе, на сегодняшний день никто с уверенностью сказать не может. Насколько предпочтительно применение в новых разработках STM8?
Вопрос, кажется, логично разделить на две группы – доступность МК и средств
разработки по цене и технические преимущества нового семейства STM, насколько
они велики и оправдывают ли необходимость освоения новых микроконтроллеров и
сред разработки. Опустим (временно) тот факт, что при наличии у STM 32-разрядников Cortex по
ценам близким к старшим моделям STM8
интереснее всё-таки говорить о замене AVR именно на Cortex. Текущий предмет исследования - серия STM8. По первой группе вопросов доступности предлагаю сравнение двух
практически эквивалентных по параметрам микроконтроллеров
Atmega64 и STM8S207R8: Параметры:
Цены: Справедливости ради нужно сказать, что такие цены на
микроконтроллеры AVR
сформировались
на фоне дефицита производства. В добрые времена стоимость ATmega64 составляла около 4$ за штуку, то есть приблизительно столько же
сколько STM8S207R8 сегодня.
Средства разработки:
Быстродействие. На форуме сайта kazus.ru имела место попытка провести сравнительный тест быстродействия
архитектур AVR и STM8.
Мнения участников, как по вопросу целесообразности такого сравнения, так
и по его результатам были высказаны самые разные. В частности прозвучало мнение,
что сравнивать восьмиразрядные микроконтроллеры по быстродействию занятие
бессмысленное, так как в первом приближении c практической точки зрения все современные восьмиразрядные МК практически
равнозначны, а при выборе той или иной архитектуры разумнее учитывать специфику конкретной задачи. Так же очевидно, что тест, написанный на языке Си, который в настоящее время преимущественно используется
разработчиками, общем случае из-за особенностей компилятора может не учитывать преимущества конкретной
архитектуры. Тем не менее, коротенький тест, показал небольшое
превосходство архитектуры STM8,
благодаря способности ядра использовать в качестве одного из операндов инструкций
любой регистр общего адресного пространства микроконтроллера.
Исходный код:
unsigned
char A,B,C;
void
SubRoutine(void); // Прототип функции.
void main(
void )
{
DDRA=0xFF; // PORTA на выход.
PORTA|=(1<<0); // Установить PA.0.
A=1; B=2; // Инициализация
переменных.
SubRoutine(); // Уход в функцию.
if (PINA&(1<<0)) PORTA&=~(1<<0); // Если PA.0 установлен, сбросить его.
}
void
SubRoutine(void)
{ C=A+B; // Арифметика и возврат из функции. }
был выполнен микроконтроллерами STM8 и AVR за 21 и 27
тактов соответственно. Для большинства микроконтроллеров STM8 линейки Performance, способных работать на частотах до 24МГц, преимущество в скорости выполнения приведённого кода относительно AVR возрастает до 50%.
Периферия. EEPROM.
Одним из разочарований архитектуры AVR
стала работа
со встроенной памятью EEPROM. Это и большое время
записи одного байта, достигающее нескольких миллисекунд и необходимость запрета
прерываний при обращении к EEPROM и произвольная запись случайных
данных при низкой скорости нарастания питающего напряжения.
Всех этих "особенностей” мы уже не встречаем у
микроконтроллеров семейства STM8 – и длительность и сама
процедура доступа к энергонезависимой памяти ничем не отличается от работы с обычными
ячейками ОЗУ, за исключением необходимости пропуска одного такта на частотах
выше 16МГц. Оставляйте свои замечания
и комментарии к теме.
|