Введение в микроконтроллеры Freescale (Часть 1)

Введение

Здравствуйте.

Недавно группой инженеров и программистов, имеющей определенный опыт работы в разработке устройств на базе микропроцессоров и микроконтроллеров, был создан ресурс «Freescale клуб» (freescale-club.ru). Цель проекта — решение вопросов в освоении микроконтроллеров/процессоров Freescale, возникающих как у новичков, так и у опытных разработчиков. В рамках этого ресурса планируется сделать ряд статей помогающим новичкам освоится, а имеющим опыт — узнать что-то новое «с той стороны силы». Начну ряд статей с наиболее простой — использование микроконтроллеров.

Эта статья написана для инженеров, использующих в своих проектах микроконтроллеры. Сейчас большой популярностью пользуются микроконтроллеры AVR. Они решают множество задач, они недорогие, доступные, и по ним огромное количество документации в интернете. Но со временем функционал проектов растёт, и приходится переходить на более высокопроизводительные микроконтроллеры, микропроцессоры или цифровые сигнальные процессоры. К сожалению фирма Atmell не может похвастаться наличием недорогих высокопроизводительных микроконтроллеров. В качестве альтернативы вполне могут выступать аналогичные продукты от Freescale.

Сравним микроконтроллер ATmega16, PIC18F6527 и S08JM:



Сравнительная таблица наглядно показывает преимущества микроконтроллера S08JM: более быстрое ядро, больше памяти, богатый набор периферии, и относительная дешевизна.

В этом обзоре я взял для рассмотрения недорогой и легкодоступный микроконтроллер. Поэтому, если у вас возникает возражение «У Atmell есть более производительный микроконтроллер например AT32UC3 за $10», то могу вас заверить у Freescale найдётся ему аналог по более доступной цене.

Подготовка к работе с s08jm


Приступим к подготовке к разработки проекта на основе микроконтроллера freescale.

Нам понадобится:
  1. Среда разработки (CodeWarrior for Microcontrollers)
  2. Отладочная плата (кит, Demo Board)
  3. Документация
CodeWarrior вы можете скачать на странице Software & Tools.

Скачать среду разработки может любой желающий предварительно бесплатно зарегистрировавшись на сайте.
Обращаю ваше внимание на то, что среда разработки CodeWarrior v6.3 под 32-битную Windows. В случае если у вас 64-битная версия операционной системы — то вы столкнётесь с рядом проблем.
Рекомендую скачивать Special Edition: CodeWarrior for Microcontrollers (Eclipse, Windows hosted). Эта версия работает и под 32-битной и под 64 битной версиями Windows.
Также существует версия CodeWarrior под linux: Special Edition: CodeWarrior for Microcontrollers (Eclipse, Linux hosted).
Среда разработки от freescale на базе того же Eclipse, что и среда от Atmell, работает одинаково и под windows и под linux, позволяя программировать, кроме стандартных ASM и C, еще и на C++.

Рекомендую отладочную плату DEMO9S08JM16.


Этот кит позволяет быстрее разобраться с микроконтроллером, отладить программное обеспечение.
В нём есть :
  • Логический анализатор
  • Виртуальный последовательный порт
  • Индикатор питания
  • Питание 6В и 12В
  • USB порт
  • Модуль CAN (если используется)
  • 3-осевой акселерометр (если используется)
  • 8 светодиодов для отладки
  • 4 кнопок для отладки
  • 1 пьезозуммер
Этот кит будет стоить $80 (DEMO9S08JM16) + $10 (DC9S08JM16) = 2900 руб

Документацию на этот микроконтроллер можно скачать на странице Documentation
Для работы вам потребуется MC9S08JM16 Data Sheet — Полное техническое описание микроконтроллера.

Программирование микроконтроллера

Программировать микроконтроллер можно на C/C++/Asm. Для программирования существует среда разработки CodeWarrior. Эта среда разработки основана на Eclipse.

Приступим к созданию нового проекта. Жмем File->New->Bareboard Project. Появится мастер создания проекта.
В первом шаге вводим имя проекта и переходим к следующему шагу.
Во втором шаге выбираем тип микропроцессора с которым мы собираемся работать. В нашем случае HCS08->HCS08JM Family-> MC9S08JM16


В третьем шаге выбираем тип отладчика. Можем пока оставить всё как есть, т.к. потом можно будет это изменить.
Четвёртым шагом выбираем файлы для добавления в проект. Т.к. проект у нас пустой — то оставляем список пустым.
Пятым шагом выбираем язык программирования. На выбор есть C/C++/Asm. Мы будем писать на C.
В последующих шагах будет более тонкая настройка проекта, которую мы сможем провести позже. Поэтому нажимаем «Готово»(Finish)

CodeWarrior создал минимальный проект.

В проекте уже есть файл main.c. Рассмотрим структуру программы подробнее.

#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */





void main(void) {
  EnableInterrupts;
  /* include your code here */

  

  for(;;) {
    __RESET_WATCHDOG();    /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}

Мы видим функцию void main(). Эта функция вызывается после сброса микроконтроллера. При включении микроконтроллера все прерывания выключены(замаскированы).
В функции main() имеется вызов макрос EnableInterrupts. Этот макрос включает обработку прерываний в микроконтроллере. При компиляции он будет заменен на ассемблерную команду CLI.
В функции main также присутствует бесконечный цикл. По сути это основной цикл программы. В нем содержаться функции которые периодически выполняются, такие как получение состояния со входов, расчет, выдача сигналов на выход. Также внутри цикла мы должны сбрасывать сторожевой таймер функцией __RESET_WATCHDOG().

Сторожевой таймер здесь выполняет такую же функцию как и в других контроллерах — контроль состояния программного обеспечения. В случае если программное обеспечение «зависнет» он перезагрузит микроконтроллер. «Зависание» программного обеспечения он обнаруживает по тому, что долгое время программа его не сбрасывала.
По умолчанию сторожевой таймер сконфигурирован на счет от встроенного тактового генератора частотой 1кГц и таймаут 2^10 периодов, т.е. переполнение таймера произойдет примерно через секунду.

Попробуем скомпилировать такой пустой проект.
Для компиляции либо нажмите на изображении молотка в панели инструментов, либо из меню Project->Build All, либо комбинацией клавиш Ctrl-B. Весь процесс компиляции сопровождается подробными логами во вкладку Console.
В конце сборки проекта в консоле вы должны увидеть:

'Finished building: test1.abs.s19'

Теперь в каталоге вышего проекта появился скомпилированный файл программы. У меня он находится здесь %workspace%/test1/MC9S08JM16/test1.abs
Система сборки также составляет файл с описанием того, как слинкован(скомпанован) файл. Эта информация находится в map файле. У меня это %workspace%/test1/MC9S08JM16/test1.map.

Для написание программы вам также потребуется документация на компилятор и библиотеку.
Эта документация поставляется вместе с CodeWarrior.

Документация по Ассемблеру: C:/Program Files (x86)/Freescale/CW MCU v10.1/MCU/Help/Assembler_HC08.chm
Документация по стандартной библиотеке СИ: C:/Program Files (x86)/Freescale/CW MCU v10.1/MCU/Help/Compiler_HC08.chm
Документация на среду разработки: C:/Program Files (x86)/Freescale/CW MCU v10.1/MCU/Help/RS08_Build_Tools_Reference.chm
Также можно получить доступ к этой документации через CodeWarior используя меню Help->User Assistance Map.

В следующей статье расскажу и покажу сам процесс программирования этого микроконтроллера. Продолжение следует…

Файлы в топике: microcontoller_sravnenie.png

Комментарии (50)

RSS свернуть / развернуть
А ATMega16 действительно стоит 300 рублей?
0
  • avatar
  • mzw
  • 07 ноября 2011, 13:37
170 максимум. ЛПП, однако.
0
stm8 всех их делает по цене
+2
А если не 8, то 32. :)
0
Не делает… Он стоит 190 — 73 руб.
0
Брал самые младшие STM32F100C4(16K Flash/4K RAM) по 34р.

У Freescale интереснее всего попробовать Kinetis на ядре Cortex-M4.
Все жду, когда в их магазин завезут KwikStik: www.freescale.com/webapp/sps/site/prod_summary.jsp?code=KWIKSTIK-K40

В октябре писали, что в начале ноября появятся, сейчас уже — в районе 30 ноября.
0
STM32F100C4 по 1$ взять успел и я 20 штук но тут есть нюанс — их реальная цена в розничное продаже — от 3$. Сейчас это просто маркетинг.
0
STM32F100C4T6B до сих пор есть в Терре по 30,87 руб. в кол-ве 4326 штук.
Там же есть STM8S103K3T6C по 19,33 руб в кол-ве 1315 штук.
Только что проверил на их сайте.
0
Угу, в начале было 40к насколько я помню. Это не отменяет того что я сказал. Реальная коммерческая цена за пределами этой акции в этой конкретной фирме — выше.
0
В розницу STM32F100C4T6B стоит 40 руб.
0
Еще раз говорю, это маркетинг, продают по себестоимости.

На фарнеле — 2.41 евро за 1 шт, 1.75 от 100шт.
На mouser — 12.2 евро 1 шт, 8.16евро от 500шт.
На digikey — 2.73$ 1 шт, 1.1$ от 10'000 шт.

Это значит как только эта чудо-акция закончиться, цена будет 100-150 рублей и выше для мелких партий.
0
А где смотреть реальную цену?
de.mouser.com/ProductDetail/STMicroelectronics/STM32F100C4T6B/?qs=sGAEpiMZZMvu0Nwh4cA1wQTr6EYjaKyI9dw6bA%252b11xs%3d
Типа так?
Я брал в ПромЭлектронике: www.promelec.ru/catalog/1/11/1777/0/140106/
Они тоже в сговоре с ST?:)
0
Да, странно что мне маусер показал какую-то совсем уж неадекватную цену. Да, цена промэлектроники намекает что они тоже участвуют в пересаживании России на STM32. Через год посмотрим ;-)

Я ставлю на то, что стоить будет минимум 3-4$ при партиях <10
0
В общем, Промэлектроника так же, как и Компэл официальные дистрибьюторы ST Microelectronics на территории России.
0
Статья — пурга ни о чем, сравнение убогое, и цены — лохатрон от балды…

от $0.75 за STM8 и от $0.99 за STM32

Переметнувшийся холиварщик атмела?
0
Чуть выше гляньте реальные цена на STM32, все не так радужно в реале.
Нас просто подсаживают на новую архитектуру, а потом начнут стричь бабло с тех кому лень переучиваться.
0
Жаль здесь никто не помнит сравнение цена для PIC и Atmel ~96-98г. Разница в цене была 3-х кратная, поскольку большинстко наработок — только для пиков. Сейчас наверное время не то имхо пересаживать, рынок покупателя уже.

А про Промэлектронику — разговор вообще отдельный, пере-продавцы 3-й руки, того же Тревора от Компелла с 3-х кратной наценкой препродали… может и подсаживают, но сейчас все — гуртом кортексы выпускают, коли st включит борзометр, есть lpc и сырой stellaris.

Имхо +$1 для коммерческой разработки — считай даром, знаю одну знакомую организацию — древний и криво%пый RE2 от 850рэ, еще месяц назад, скупала рейки ящиками.
0
К сожалению фирма Atmell не может похвастаться наличием недорогих высокопроизводительных микроконтроллеров
… а какже ARM, AVR32
PS раз статья для конкурса перенесите в общий блог
0
Как это сделать?
0
Сначала надо вступить в этот блог, а потом нажать кнопку «редактировать» на статье и выбрать нужный блог.
0
Здесь все описано we.easyelectronics.ru/page/about/
0
… но кажется по такой тематике еще нет блога, разве что Kinetis
0
Опубликовал в технологиях — это по моему самый близкий по смыслу…
0
… на первой картинке видно только описание ATMega16 и PIC. Там еще чтото должно быть? или мой монитор глючит
+1
Там ещё два МК. У меня тоже не помещается вся.
0
Картинку просто в отдельном окне откройте. У меня тоже не помещается.
0
S08JM
Если картинка с таблицей не полностью видна — откройте we.easyelectronics.ru/attachments/get/434
0
… из названия статьи выходит что вы будете писать о всех семействах микроконтроллеров Freescale: 8-bit, 16-bit, ARM, DSP,… или всетаки про 8-bit?
0
Только 8 бит…
0
Во первых мега не стоит 300 рублей. А во вторых я не вижу эти контроллеры в розничной продаже. Так, что кто кого делает по цене это еще вопрос.
0
  • avatar
  • a9d
  • 07 ноября 2011, 15:08
Такая цена указана на сайте freescale.com.
Эти микроконтроллеры будут продаваться именно по этой цене у диллеров. Список диллеров вы можете найти на официальном сайте.
0
Насмешил. У барыг цена возрастет в разы. Xmega продается за 1$ за штуку. Это при оптовом заказе. А в розничной торговле минимум обретает наценку в 300%.
Так, что и на эти контроллеры цена значительно возрастет.
0
Посмотрел у буржуйских дистрибьюторов. В Украине местные ими не торгуют. У буржуем аналог меги восьмой стоит 2$.
0
По крайней мере так официально заявляет freescale. Для того, чтобы это выяснить надо попробовать купить у официальных диллеров.

Если же взять информацию из свободных источников то цена с доставкой 100 — 180 руб
ссылка: www.efind.ru/icsearch/?search=S08JM
0
Результаты eFind не вдохновляют — они есть только в Базе Электроники и Дельта Электронике, причем по ценам, далеким от рекламы.
0
А если попроще — чем они лучше SiLabs (C8051F...) и Cypress (CY7C68013)? По скорости — так то же самое и даже побыстрее.
0
  • avatar
  • mzw
  • 07 ноября 2011, 15:29
OBDM в студию!!!
0
Хотелось бы увидеть реальную производительностью в MIPS. На картинке она указана только для ПИКа.
0
Ух ты, около года много пишу под фрискейловские чипы (только более старшие — Coldfire V1 и V2), а статью для новичков по ним увидел впервые.
0
Среда разработки от freescale на базе того же Eclipse, что и среда от Atmell,

AVR Studio на основе visual studio(5я точно), никак не эклипса.

А вообще пост на рекламу смахивает.
+1
  • avatar
  • crab
  • 08 ноября 2011, 11:41
Статья не рассматривает самое актуальное для любителей:
1) Доступность. Где и почем купить без гемора, и какая при этом будет цена.
2) Средства разработки. Какие есть кообще, как у них дело обстоит с платностью/бесплатностью (наличие бесплатных, наличие ограничений, наличие креков).
3) Аппаратные средства. Какие доступны программаторы/отладчики, сколько они стоят, где взять, есть ли средства, которые можно собрать самому.

А производительность и прочее, как ни странно, куда менее существенны для любителей.
0
  • avatar
  • Vga
  • 08 ноября 2011, 20:15
1) Терраэлектроника
2) SDCC
3) Versaloon.

Но сам дела с этими МК не имел. Выпаял какой-то старый из ИБП, поискал информацию, оказалось, что versaloon его не поддерживает, а для программатора нужен кварц на какую-то странную частоту, такой не нашел.
В итоге забросил это дело, Cortex-M куда интереснее:)
0
Не, более развернуто)
Алсо SDCC какой-то странный. Когда я его поколупал, у меня сложилось впечатление, что он тока 8051 и Z80 нормально держит, а остальное в бета-состоянии.
0
Вполне успешно программировал пики. Про них, кстати, и написано, что неполная поддержка.
Буквально сегодня собрал STM8 порт(недавно пришли STM8L152).
На вид — вроде компилирует:)
0
Не всегда можно мерить скорость мегагерцами, во первых у freescale самые быстрые флэши, не требующие задержек при работе, во вторых некоторые контроллеры выигрывают за счёт системы команд, при том же быстродействии можно получить более компактный код. В третьих некоторые контроллеры выполняют две операции за такт, сразу оговорюсь — не на всех операциях. И гибридное ядро с поддержкой DSP-инструкций и микроконтроллерных команд у freescale есть давно (ещё мотороловские DSP, ныне DSC), а ARM только сейчас до этого допёр.
А для начинающих думаю будет интересен KWIKSTIK на ARM, за 30 баксов, жаль что чего-то подобного для DSC нет.
0
  • avatar
  • mws
  • 08 ноября 2011, 20:22
> во первых у freescale самые быстрые флэши.

… в цифрах можно? особенно если это «самые-самые»… и для расширения кругозора — если взять тот же стм32, то на какой макс. частоте ядра — инструкции из флеша выполняются без тактов задержек?
0
В цифрах например DSP56802 в начале двухтысячных работал на частоте ядра 40 Мгц без задержек, а например амтега128 уже на 16 Мгц требует задержки при доступе к флэшу. На тот момент не было контроллеров, работающих на 40 Мгц из флэша без задержек. А периферия DSP тактируется на двойной частоте ядра, что позволяет избежать задержек при чтении, в отличии от той же атмеги.
Насчёт армов сказать сложно, так как в stm32 используется флэш-акселератор, который позволяет избежать задержек при соблюдении определённых условий, за счёт упреждающего чтения, у кинетисов в даташите такой информации я не нашёл, упоминания об акселераторах и тактах задержки там нет, так что вопрос по ним в общем-то открытый на данный момент.
0
Так вот, этот «акселлератор» называется буфером предвыборки, управляется программно, вставляя такты ожидания. После чего конфиругируют множик PPL и преферию. На семинаре в начале года инженер из ST отзвучил цифру скорости флеша в 50МГц с нулевой задержкой, кажется для F2. Внутри этих кортексов — 2х64 шины.
Без всякой религии, но фарш их архитектуры объективно более продвинут и технологичнее.
0
Да хоть как назови, суть не меняется, хоть Adaptive real-time accelerator (ART Accelerator™) хоть prefetch speculation buffer. В кинетисе K40 4x64 шины.
0
В функции main() имеется вызов макрос EnableInterrupts. Этот макрос включает обработку прерываний в микроконтроллере. При компиляции он будет заменен на ассемблерную команду CLI.

Извините, но на сколько я помню, прерывание разрешает команда SEI(SEt Interrupt). Или я ошибаюсь?
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.