Тип МК | ПЗУ FLASH, байты | ОЗУ, байты | EEPROM, байты | Число линий ввода/вывода | Контроллеры последовательных интерфейсов | Таймер Число каналов/разрядность | АЦП Число каналов/разрядность | Модуль ШИМ Число каналов/разрядность | Специальные модули *) | Частота шины CPU, МГц | Напряжение питания, В | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Серия А | ||||||||||||||||||||||
MC9S12A32 | 32000 | 4096 | 1024 | 91 | IIC 2 SCI SPI | 8/16 | 8/10 | 4/16 8/8 | 25 | 5 | ||||||||||||
MC9S12A64 | 65536 | 4096 | 1024 | 59 91 | IIC 2 SCI SPI | 8/16 | 8/10 | 4/16 7/8 8/8 | 25 | 5 | ||||||||||||
MC9S12A128 MC9S12A128B | 131072 | 8192 | 2048 | 59 91 | IIC 2 SCI SPI | 8/16 | 8/10 | 4/16 8/8 | EBUS | 25 | 5 | |||||||||||
MC9S12A256B | 26144 | 12288 | 4096 | 59 91 | IIC 2 SCI SPI | 8/16 | 2/10 3/10 8/10 | 4/16 8/8 | EBUS | 25 | 5 | |||||||||||
MC9S12A512 | 512000 | 4096 | 1024 | 59 | IIC 2 SCI SPI | 8/16 | 16/10 | 7/8 | 25 | 5 | ||||||||||||
Серия С | ||||||||||||||||||||||
MC9S12C32 | 32000 | 2000 | нет | 60 | CAN SCI SPI | 8/16 | 8/10 | 6/8 | LVI | 16 25 | 3,3 5,0 | |||||||||||
MC9S12C64 | 64000 | 4000 | нет | 60 | CAN SCI SPI | 8/16 | 8 | 6/8 | LVI | 25 | 3,3 5,0 | |||||||||||
MC9S12C96 | 96000 | 4000 | нет | 60 | CAN SCI SPI | 8/16 | 8 | 6/8 | LVI | 25 | 3,3 5,0 | |||||||||||
MC9S12C128 | 128000 | 4000 | нет | 60 | CAN SCI SPI | 8/16 | 8 | 6/8 | LVI | 25 | 3,3 5,0 | |||||||||||
Серия D | ||||||||||||||||||||||
MC9S12D32 | 32000 | 4096 | 1024 | 91 | CAN IIC 2 SCI SPI | 8/16 | 8/10 | 4/16 8/8 | 25 | 5,0 | ||||||||||||
MC9S12D64 | 65536 | 4096 | 1024 | 59 91 | CAN IIC 2 SCI SPI | 8/16 | 8/10 | 4/16 7/8 8/8 | 25 | 5,0 | ||||||||||||
MC9S12DJ64 | 65536 | 4096 | 1024 | 59 91 | CAN IIC J1850 2 SCI SPI | 8/16 | 8/10 | 4/16 7/8 8/8 | 25 | 5,0 | ||||||||||||
MC9S12DB128 | 131072 | 8192 | 2048 | 91 | BYTE-FLIGHT 2 CAN 2 SCI 2 SPI | 8/16 | 16/10 | 8/8 | EBUS | 25 | 5,0 | |||||||||||
MC9S12DB128B | 131072 | 8192 | 2048 | 91 | BYTE-FLIGHT CAN 2 SCI 2 SPI | 8/16 | 16/10 | 8/8 | EBUS | 25 | 5,0 | |||||||||||
MC9S12DG128 MC9S12DG128B | 131072 | 8192 | 2048 | 59 91 | 2 CAN IIC 2 SCI SCP 2 SPI | 7/16 8/16 | 16/10 | 8/8 | EBUS | 25 | 5,0 | |||||||||||
MC9S12DG256B | 26144 | 12288 | 4096 | 91 | 2 CAN IIC 2 SCI 2 SPI | 8/16 | 16/10 | 4/16 8/8 | EBUS LVI | 25 | 5,0 | |||||||||||
MC9S12DJ128 MC9S12DJ128B | 131072 | 8192 | 2048 | 59 91 | 2 CAN IIC J1850 2 SCI 2 SPI | 7/16 8/16 | 8/10 | 4/16 8/8 | EBUS | 25 | 5,0 | |||||||||||
MC9S12DJ256B | 262144 | 12288 | 4096 | 59 91 | 2 CAN IIC J1850 2 SCI 3 SPI | 7/16 8/16 | 8/10 | 4/16 8/8 | EBUS | 25 | 5,0 | |||||||||||
MC9S12DP256B | 262144 | 12288 | 4096 | 91 | 5 CAN IIC J1850 2 SCI 3 SPI | 8/16 | 16/10 | 8/8 | EBUS | 25 | 5,0 | |||||||||||
MC9S12DP512 | 512000 | 12288 | 4096 | 91 | 5 CAN IIC J1850 2 SCI 3 SPI | 8/16 | 16/10 | 8/8 | EBUS | 25 | 5,0 | |||||||||||
MC9S12DT128 MC9S12DT128B | 131072 | 8192 | 2048 | 91 | 3 CAN IIC 2 SCI 2 SPI | 8/16 | 8/10 | 4/16 8/8 | EBUS | 25 | 5,0 | |||||||||||
MC9S12DT256B | 262144 | 12288 | 4096 | 91 | 3 CAN IIC 2 SCI 2 SPI | 8/16 | 8/10 | 4/16 8/8 | EBUS LVI | 25 | 5,0 | |||||||||||
Серия E | ||||||||||||||||||||||
MC9S12E64 | 65536 | 4096 8192 | нет | 59 91 | IIC 3 SCI SPI | 4/16 | 16/10 | 6/8 | PWMF 2 DAC | 25 | 5,0 | |||||||||||
Серия G | ||||||||||||||||||||||
MC9S12GC16 | 16000 | 2000 | нет | 60 | SCI SPI | 8/16 | 8/10 | 6/8 | LVI | 16 25 | 3,3 5,0 | |||||||||||
MC9S12GC32 | 32000 | 2000 | нет | 60 | SCI SPI | 8/16 | 8/10 | 6/8 | LVI | 16 25 | 3,3 5,0 | |||||||||||
MC9S12GC64 | 64000 | 4000 | нет | 60 | SCI SPI | 8/16 | 8/10 | 6/8 | LVI | 25 | 3,3 5,0 | |||||||||||
MC9S12GC96 | 96000 | 4000 | нет | 60 | SCI SPI | 8/16 | 8/10 | 6/8 | LVI | 25 | 3,3 5,0 | |||||||||||
MC9S12GC128 | 128000 | 4000 | нет | 60 | SCI SPI | 8/16 | 8/10 | 6/8 | LVI | 25 | 3,3 5,0 | |||||||||||
Серия H | ||||||||||||||||||||||
MC9S12H128 | 131072 | 6000 | 4096 | 99 | 2 CAN IIC 2 SCI SPI | 8/16 | 16/10 | 4/16 8/8 | EBUS LVI LCD 32×4 MC 24 | 16 | 5,0 | |||||||||||
MC9S12H256 | 262144 | 12288 | 4096 | 99 | 2 CAN IIC 2 SCI SPI | 8/16 | 16/10 | 4/16 8/8 | EBUS LVI | 16 | 5,0 | |||||||||||
Разные МК | ||||||||||||||||||||||
MC9S12NE64 | 64000 | 8000 | нет | 48 80 | Ethernet IIC 2 SCI SPI | 4/16 | 8/10 | нет | RTI | 25 | 3,3 5,0 | |||||||||||
MC9S12T64 | 65536 | 2048 | 2048 | SCI SPI | 8/16 | 8/10 | 4/16 8/8 | 5,0 | ||||||||||||||
MC9S12UF32 | 32768 | 3584 | нет | 75 | SCI USB 2.0 | 8/16 | 30 | 5,0 |
Рис. 1.10. Технические характеристики МК семейства HCS12
Примечание:
EBUS - модуль интерфейса внешней магистрали;
LVI - модуль контроля за пониженным напряжением питания;
RTI - модуль меток реального времени;
PWMF - модуль специализированного генератора для управления силовыми коммутаторами в электроприводе;
DAC - модуль одноканального ЦАП;
LCD 32×4 - контроллер управления ЖКИ-дисплеем (4 группы по 32 сегмента);
MC 24 - 24 выхода с повышенной токовой нагрузкой для управления маломощными шаговыми электродвигателями.
Сегодня в состав семейства HCS12 входят 6 серий. Серия А - МК общего применения с тремя типами относительно простых контроллеров последовательных интерфейсов. Серии С и CG - недорогие модели без EEPROM, способные работать при пониженном напряжении питания. Серия D, объединяющая наибольшее число МК, ориентирована на использование в CAN–приложениях. Отдельные модели содержат до 5 CAN–контроллеров на кристалле! Серия E - МК с встроенным ШИМ–генератором для управления электроприводом. Серия H - специализированные МК для управления приборными панелями автомобилей, содержат драйверы шаговых двигателей стрелочных индикаторов и контроллер управления ЖК–индикатором. Указанная производителем специализация не препятствует использованию этих МК в устройствах другого типа с многофункциональными приборными панелями. Три последних МК в таблице рис. 1.10 - родоначальники новых серий. Среди них особенно интересен МК HC9S12NE64 c контроллером 10/100 Ethernet на кристалле.
1.5. Заключение по главе 1
В этой главе мы дали определение встраиваемым системам и привели примеры таких систем. Мы также обсудили проблемы, связанные с разработкой встраиваемых систем. В заключении мы провели обзор основных технических характеристик микроконтроллеров семейства 68HC12/HCS12, тех МК, с которыми Вы будете иметь дело на протяжении всей этой книги.
1.6. Вопросы и задания
Основные
1. Перечислите основные блоки вычислителя.
2. Какие функции выполняет центральный процессор в составе вычислителя?
3. Дайте определение термину компьютер.
4. Дайте определение термину микропроцессор.
5. Дайте определение термину микроконтроллер.
6. Как называется магистраль микропроцессорной системы, по которой передаются сигналы управления от центрального процессора к блоку памяти?
7. Какие функции может исполнять модуль ШИМ микроконтроллера 68HC12 в системе управления?
8. Перечислите, какие домашние встроенные системы не были упомянуты в этой главе?
Более сложные
1. Поясните, чем отличаются микроконтроллер и персональный компьютер.
2. В тексте изученной Вами главы утверждается, что разработчик персональных компьютером может не уделять значительного внимания мощности потребления и размерам блока памяти своего изделия. Почему так? Каковы ограничения? В каких изделиях этого класса ограничения на мощность потребления умеренные, в каких более жесткие?
3. Приведите примеры работы встроенных систем в реальном масштабе времени?
4. В каких случаях Вы, как разработчик встроенной системы, можете выбрать однокристальный режим работы МК, а в каких расширенный режим работы?
5. В тексте главы утверждается, что тестирование встраиваемой микропроцессорной системы является достаточно сложной задачей, решение которой должно быть продумано на стадии проектирования изделия. Почему так?
Исследовательские
1. Программно–аппаратный дуализм встраиваемой микропроцессорной системы?
2. В настоящее время встраиваемые системы перестают быть автономными устройствами. Они связываются между собой подобно объединению компьютеров в сеть Internet. Поэтому в скором времени пользователь столкнется с необходимостью понимания не только своей собственной системы, но и понимания абстрактного взаимодействия систем. Как Вы представляете себе проблемы создания информационных сетей на основе встраиваемых систем? Как изменится инфраструктура нашего общества при реализации этих идей?
Глава 2
ПРОГРАММИРОВАНИЕ ВСТРАИВАЕМЫХ СИСТЕМ И СТРУКТУРНОЕ ПРОЕКТИРОВАНИЕ
ПОСЛЕ ИЗУЧЕНИЯ ГЛАВЫ ВЫ СМОЖЕТЕ:
• Провести сравнительный анализ языка ассемблер и языков программирования высокого уровня для разработки программного обеспечения встраиваемых систем.
• Рассказать об особенностях языка Си, которые позволили выбрать его в качестве основного языка высокого уровня для кодирования управляющих программ встраиваемых систем.
• Рассказать об основных положениях метода структурного проектирования и применить этот метод на практике в области встраиваемых систем.
• Понять важность документирования в процессе разработки.
• Перечислить правила ведения инженером рабочей тетради.
• Применить методы универсального языка моделирования к описанию функционирования встраиваемых систем.
Предлагаемая Вашему вниманию глава, быть может, самая главная в этой книге. Она предлагает Вам несколько шире взглянуть на процесс проектирования встраиваемых систем, нежели Вы делали это до настоящего времени. Мы покажем в этой главе, почему язык Си стал основным языком высокого уровня для проектирования управляющих программ встраиваемых систем. Далее мы сравним технологии программирования встраиваемых систем на Си и на ассемблере и покажем, что оптимальным является сочетание этих двух языков. Следующим предметом нашего изучения будет метод структурного проектирования в приложении к встраиваемым системам. Мы рассмотрим основные положения этого метода и приведем примеры его использования. Мы также рассмотрим способы описания программного продукта с использованием универсального языка моделирования.
2.1. Почему мы программируем микроконтроллеры на Си?
На протяжении всей этой книги для написания фрагментов программ управления мы используем язык Си. Мы выбрали Си для программирования встраиваемых микропроцессорных систем по многим причинам, которые, мы надеемся, станут Вам ясны по мере знакомства с материалом этой главы.
В предисловии мы адресовали данную книгу подготовленным читателям, которые знакомы с основами цифровой и микропроцессорной техники, имеют опыт программирования на языке ассемблера для какого либо типа МК. Не пугайтесь, если Вы чувствуете себя недостаточно образованным в перечисленных областях знаний. Мы постарались преподнести материал данной книги так, чтобы он легко усваивался учащимися. Для того чтобы восполнить недостающие знания в области цифровой техники, рекомендуем обратиться к книге [9] или к иным подобным изданиям. Для предварительного знакомства с архитектурой и системой команд микроконтроллеров 68HC12 Вы можете использовать книгу [6].
В следующих параграфах данной главы мы познакомим Вас с технологиями создания программного обеспечения для встраиваемых систем. Мы проведем сравнительный анализ преимуществ и недостатков технологий программирования встроенных систем на Си и на ассемблере. Мы также постараемся разъяснить Вам, почему язык Си стал стандартом программирования для встроенных систем.
2.2. Преимущества программирования на языке ассемблер
Многие разработчики встраиваемых систем используют для программирования микроконтроллеров только язык ассемблера. И существует много убедительных доводов в пользу такого решения. В общем, хорошо написанная на языке ассемблера программа исполняется за меньшее время и занимает в памяти меньший объем, нежели та же программа, написанная на языке высокого уровня. Именно эти характеристики: время выполнения и размер программного кода, - являются критическими для приложения, где элементная база обладает относительно невысоким быстродействием, а память программ ограниченна в объеме.
В одном из курсов по микропроцессорной технике, мы попросили студентов во время лабораторных работ запрограммировать одну и ту же задачу на ассемблере и на языке Си. Пример был следующий: в массиве 16 разрядных чисел без знака необходимо было подсчитать число чисел, равных заданному значению. Поскольку компилятор Си сначала преобразует исходный текст программы в программу на языке ассемблер и только потом превращает ассемблерный текст в коды инструкций микроконтроллера, студенты смогли сравнить собственные ассемблерные программы с аналогичными программами, сгенерированными компилятором. И студенты могли убедиться, что их программы оказались компактнее и более логично написанными, чем ассемблерная программа на выходе компилятора.
В дополнение к уже отмеченным преимуществам, язык ассемблера предоставляет разработчику прямой доступ ко всем без исключения аппаратным средствам МК. Такой доступ возможен и в Си, но с меньшими возможностями, т.е. в ограниченном объеме. Однако это преимущество в полной мере может быть реализовано только высококлассным специалистом. Программист, успешно решающий задачи на ассемблере, должен детально разбираться в алгоритмах преобразования кодов и очень хорошо знать аппаратные возможности МК.
2.3. Преимущества языков высокого уровня
Если Вы программировали на ассемблере, то Вы должны были изучить массу приемов, которые и позволят Вам стать профессионалом высокого уровня. Вы должны были познакомиться не только с деталями архитектуры МК, но и с особенностями его системы команд. Однако при переходе к другому типу МК, Вам придется потратить не так мало времени, чтобы адаптировать свои программы к МК с другой системой команд ассемблера. Такую ситуацию называют несовместимостью кодов.
Недавно один из авторов этой книги должен был выполнить разработку, в которой заказчик определил использование МК компании Atmel. Он никогда ранее не использовал 8-разрядные МК от компании Atmel, но был не прочь их освоить. Поэтому автор решил выполнять проект на Си. Это позволило ему быстрее завершить исполнение заказа. Если бы он решил выполнять проект на ассемблере, то ему потребовалось значительно больше времени не только для изучения архитектуры и алгоритмов работы периферийных модулей, но и системы команд, поскольку МК Atmel существенно отличаются от знакомых автору МК Motorola/Freescale Semiconductor. Кроме того, область применения устройства была такой, что он мог не беспокоиться о размере программы и времени ее выполнения. Поэтому в приведенных условиях выбор языка Си для проекта был логичным и естественным.
В общем, языки высокого уровня позволяют создать такой исходный текст программы, который будет обладать свойством переносимости, его сможет прочесть и понять не только разработчик программы (свойство читабельности), и, наконец, на его основе будет сгенерирован компактный исполняемый машинный код. Кроме того, языки высокого уровня располагают библиотеками математических действий над числами, представленными в различных форматах, в том числе и в формате с плавающей запятой. Структура программы на языке высокого уровня хорошо соотносится с методами структурного проектирования программного обеспечения. Виртуозный программист на языке ассемблера может опровергнуть наши обоснования преимуществ программирования на языках высокого уровня, однако наши выводы основываются на опыте коллег разного возраста, и, соответственно, разной квалификации, а также на собственном опыте.
Поскольку программы на языке высокого уровня обладают более высокой степенью абстракции, эффективность программирования возрастает. Поэтому программист может завершить проект за меньшее время, чем он выполнял бы этот проект на ассемблере. Кроме того, если один и тот же ранее отлаженный код используется в следующих проектах, то эффективность программирования значительно повышается (концепция многократного использования программного кода для типовых функций управления).