STM8 или AVR?

В свете известных сложностей с поставками и расценками на 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МГц.