68HC12 (также сокращенно 6812 или HC12) — семейство микроконтроллеров от Motorola Semiconductor (позже от Freescale, затем NXP ). Первоначально представленная в середине 1990-х годов, архитектура является усовершенствованием Freescale 68HC11 . Программы, написанные для HC11, обычно совместимы с HC12, который имеет несколько дополнительных инструкций . Первые производные 68HC12 имели максимальную скорость шины 8 МГц и размер флэш-памяти до 128 КБ .
Как и 68HC11, 68HC12 имеет два 8-битных аккумулятора A и B (называемых одним 16-битным аккумулятором, D, когда A и B каскадированы, чтобы обеспечить операции с 16 битами ), два 16-битных регистра X и Y, 16-битный счетчик программ, 16-битный указатель стека и 8-битный регистр кода состояния . В отличие от 68HC11 процессор имеет 16-битные внутренние пути данных
68HC12 добавляет и заменяет небольшое количество инструкций 68HC11 новыми формами, которые ближе к процессору 6809. Что еще более важно, он изменяет кодировки инструкций, делая их гораздо более плотными, и добавляет много функций индексации, подобных 6809, некоторые с еще большей гибкостью. Конечный результат заключается в том, что размеры кода обычно на 30% меньше. [1]
Начиная с 2000 года семейство было расширено за счет появления производных MC9S12, имеющих скорость шины до 25 МГц и объем флэш-памяти до 512 КБ.
MC9S12NE64 был представлен Freescale в сентябре 2004 года, утверждая, что это «первый в отрасли однокристальный быстрый Ethernet Flash-микроконтроллер». Он оснащен 25 МГц HCS12 CPU, 64 КБ FLASH EEPROM, 8 КБ ОЗУ и контроллером Ethernet 10/100 Мбит/с .
Представленный в 2004 году MC9S12XDP512 имеет частоту шины 40 МГц и периферийный сопроцессор, известный как XGATE, который позволяет разгрузить некоторые задачи от CPU. CPU производной S12X также имеет несколько новых инструкций для повышения производительности.
В мае 2006 года компания Freescale анонсировала MC9S12XEP100, чтобы расширить семейство S12X до частоты шины 50 МГц и добавить блок защиты памяти (на основе сегментации ) и аппаратную схему для обеспечения эмуляции EEPROM .
Изделия HCS12 содержат один процессор, а изделия HCS12X оснащены дополнительным периферийным процессором XGATE.
Семейство S12X предлагает два основных метода адресации более 64 Кбайт.
Сопроцессор XGATE — это 16-разрядный RISC-процессор, работающий на частоте, вдвое превышающей основную шину. Он разгружает ядро S12X, обрабатывая только прерывания и не запуская фоновый цикл. Первые версии XGATE не допускают прерываний с более высоким приоритетом для вытеснения текущего обрабатываемого прерывания, но «XGATEV3», представленный в 9S12XEP100 (и других), позволяет это. S12X может вызывать программные прерывания на ядре XGATE и наоборот. Реализована система семафоров, позволяющая ядрам S12X и XGATE синхронизировать доступ к периферийным устройствам.
Обычно код XGATE копируется в ОЗУ при запуске устройства, а затем выполняется из ОЗУ для повышения скорости. XGATE имеет частичное адресное пространство размером 64 Кбайт без подкачки. Регистры имеют общие адреса, но флэш-память и ОЗУ отображаются по разным адресам между ядрами. (Более подробную информацию см. в техническом описании.)