воскресенье, 8 февраля 2015 г.

Проверяем связь с МК с помощью ST Visual Programmer

Инструменты разработки для STM8S установлены на ПК, начинаем пробовать.

Запускаем ST Visual Programmer:


Выбираем меню Configure->Configure ST Visual Programmer, в появившемся окне выбираем способ связи с МК: ST-LINK, USB, SWIM, STM8S105x6 (на плате STM8S-discovery установлен STM8S105C6). Нажимаем ОК:


Подключаем плату STM8S-discovery к USB. Выбираем меню Read->Current tab. Если плата подключена, и USB драйверы ST-Link v2 были установлены верно, то будет показано содержимое памяти МК (еще в процессе чтения на плате программатора будет быстро моргать светодиод):
 

Если появилось сообщение об ошибке, то нужно проверить, что МК подключен к USB, что настройки способа связи выбраны верно. Можно поискать ответ в интернете по данному сообщению об ошибке.

Инструмент ST Visual Programmer помогает убедиться, что наш МК жизнеспособен и имеет связь с ПК, а также позволяет посмотреть содержимое памяти МК (если не была установлена защита от чтения). Закрываем ST Visual Programmer.


вторник, 3 февраля 2015 г.

Инструменты разработки для STM8S

Под инструментами разработки для МК обычно понимают специальную программу - среду разработки (IDE, integrated development environment), которая включает в себя примерно такой набор возможностей:
  • текстовый редактор для исходных текстов программы
  • ведение проекта - список файлов с исходными текстами программы 
  • компилятор языка Си, включая ассемблер и компоновщик (англ. linker)
  • запись программы во Flash память МК
  • отладчик (англ. debugger)

На современном уровне компилятор языка Си является стандартом де-факто даже для 8-битных МК. Его применение существенно ускоряет процесс разработки по сравнению с ассемблером. Отладчик также является очень полезным инструментом, ускоряющим разработку в неочевидных и проблемных ситуациях. 

Для STM8S есть пара разумных вариантов IDE:

1.
  • ST Visual Develop - среда разработки (нет Си компилятора, только ассемблер)
  • Cosmic C compiler - компилятор языка Си (ограничение на размер программы 32 Кбайта, бесплатная лицензия на год)
  • ST-Link v2 driver (Win7/Vista/XP, Win8) - USB драйвер для подключения к плате STM8S-discovery (нужно для записи программы во flash и для отладчика).

Достоинства: этот вариант подходит для начала, примеры программ для STM8S от производителя выложены именно под эту среду.

Недостатки: нужно регистрироваться на Cosmic C compiler (ответ может занять сутки, лицензия только на 1 год), ST Visual Develop бывает "тормозит" при работе с исходными текстами программы.

Если возникнут проблемы с ссылками, то вот дополнительные:
Ссылка на Cosmic с сайта st.com
Список инструментов разработки для STM8S на сайте st.com

2.
  • IAR Embedded Workbench for STM8 (EWSTM8) - полная среда разработки с компилятором языка Си и отладчиком, бесплатная версия имеет ограничения на размер программы 8 Кбайт (Kickstart, size-limited evaluation) или 30 дней пробный период (30-day time-limited evaluation).

Достоинства: среда IAR существует для массы других МК, хороший отладчик

Недостаткинужно регистрироваться, более жесткое ограничение на размер программы (8 Кбайт), нужно привыкать к интерфейсу

Если возникнет проблема с ссылкой, то вот дополнительная:
Ссылка на IAR-EWSTM8 на сайте st.com

среда, 17 декабря 2014 г.

Модель МК с точки зрения программиста

С точки зрения программиста МК - это автомат для работы с информацией (числами, данными). Сам этот автомат состоит из типовых узлов, которые работают по определенным (типовым) принципам. Эти принципы в целом одинаковы для всех МК. Отличия бывают в названиях и обозначениях, суть остаётся неизменной.

Основными узлами МК являются память (memory, mem, M) и вычислительное ядро (core), которое включает в себя арифметико-логическое устройство (АЛУ, англ. ALU, может выполнять логические операции, сложение, умножение и др.)


Любая память состоит из ячеек. В каждой ячейке записано число (данные, data). Каждая ячейка имеет номер, который называется адресом (address, addr). Доступ к данным ячейки осуществляется по её адресу. Доступ может быть на чтение (read, R) из памяти или на запись (write, W) в память. В простых дешевых МК в одной ячейке памяти обычно хранится один байт информации.

В ядре МК есть несколько особых ячеек памяти, которые имеют имя (и иногда адрес, но используется обычно имя). Эти особые ячейки называются регистрами МК. В STM8S есть регистры A (8 бит), X (16 бит), Y (16 бит), PC (24 бита) и несколько других. 

Ядро МК может выполнять фиксированный набор примитивных операций. Эти операции, для примера, могут быть такими:
  загрузить A <- M(addr1) 
     число из памяти М по адресу addr1 загрузить в регистр А
  сложить A <- A + 3
     к числу в регистре A добавить число 3 и записать обратно в А
  загрузить M(addr2) <- A
     число из регистра А записать в память М по адресу addr2

Перепишем тот же список операций по-другому:
  LD   A, M(addr1)
  ADD  A, 3
  LD   M(addr2), A

Такая запись последовательности элементарных операций МК называется программой на языке ассемблера. У каждого МК свой язык ассемблера и свои способы обозначения команд и адресов.


Далее представим, что: 
команда LD A,... имеет числовой код 1
команда ADD A,... имеет числовой код 2
команда LD ...,A имеет числовой код 3

Перепишем список операций в виде чисел:
  1 addr1
  2 3
  3 addr2

Эту последовательность чисел можно назвать программой для МК, представленной в числовом коде. Эта последовательность чисел может быть записана во Flash память и храниться в МК постоянно (даже при выключении питания).

Ядро МК "умеет" читать программу из памяти и выполнять соответствующие элементарные операции. Для организации процесса последовательного выполнения команд используется специальный регистр PC (program counter, счетчик [команд] программы). Этот регистр содержит адрес ячейки памяти той операции (команды), которая сейчас выполняется. Когда операция выполнена, значение PC увеличивается на длину выполненной операции, выполняется чтение кода следующей операции и ее выполнение. Таким образом организован процесс последовательного выполнения элементарных операций, записанных в памяти МК.

Существует отдельная группа операций МК, которая позволяет "нарушить" последовательное выполнение программы и перейти к выполнению программы по другому адресу - это команды перехода. На языке ассемблера они обычно начинаются с буквы J (от англ. jump - прыгнуть) и имеют вариации, например JRT, JRE, JREQ и др.

Например:
  Команда           Действие
  JRT addr3         PC <- addr3

Команды перехода могут быть безусловными и выполняться всегда, а могут быть условными и выполняться (или нет) в зависимости от результата предыдущей операции.

Объединение элементарных операций МК в последовательности с условными переходами позволяет реализовать сложные алгоритмы работы устройства. В этом состоит суть работы любого МК.

Память МК

В современных МК обычно есть 3 вида памяти: RAM (англ. Random Access Memory, память с произвольным доступом, рус. ОЗУ - оперативное запоминающее устройство), Flash и EEPROM (обобщенно их можно назвать ПЗУ - постоянное запоминающее устройство, но чаще используют английские названия без изменений).

RAM - эта память с произвольным чтением и записью обычно быстрее, чем Flash и EEPROM. Теряет информацию при отключении напряжения питания.

Flash, EEPROM - эта память сохраняет информацию при отключении питания в течении нескольких десятков лет. На чтение ведет себя подобно RAM. На запись требует отдельной операции стирания. Стирание и запись - медленные операции (по сравнению с операцией чтения).

Отличия: Flash - стирание блоками, EEPROM - стирание по байтам, Flash - порядка 10 тысяч циклов стирания/перезаписи, EEPROM - порядка 300 тысяч циклов стирания/перезаписи.

Применение: Flash - хранение программы, EEPROM - хранение настроек (например, последняя радиостанция, последний уровень громкости и т.п.)

Двоичная и шестнадцатеричная системы счисления

МК - это автомат для работы с информацией, которая представлена числами. В повседневной жизни мы привыкли к числам в десятичной системе счисления (decimal, dec), и принимаем это как что-то само собой разумеющееся, не задумываясь.

Однако на привычные числа можно посмотреть другим взглядом, представив их как сумму единиц, десятков, сотен, тысяч и т.д. Например, 322 = 3*100+2*10+2*1. Т.е. в числе 322 содержатся три сотни, два десятка и две единицы.


Далее можно сказать, что 1 это 10 в степени 0 (10^0), 10 это 10^1, 100 это 10^2, 1000 это 10^3 и так далее. Таким образом 10 - это особое число, которое называется основанием системы счисления.


10 - не является единственным выбором для основания системы счисления. В вычислительной технике широко используются основания 2 (двоичная система счисления, binary, bin) и 16 (шестнадцатеричная система счисления, hexadecimal, hex). 




При разложении числа по основанию 2 используются слагаемые по степеням двойки - 2^0, 2^1, 2^2, 2^3, 2^4, 2^5, 2^6 и т.д.
Или по-другому: 1, 2, 4, 8, 16, 32, 64 и т.д.
Так же, как в десятичной системе, младший (самый маленький) разряд пишется справа, а старшие пишутся левее.


Например: 
7[dec] = 0*8+1*4+1*2+1*1 = 0111[bin]
125[dec] = 1*64+1*32+1*16+1*8+1*4+0*2+1*1 = 1111101[bin]
10110[bin] = 1*16+0*8+1*4+1*2+0*1 = 22[dec]

Числа в двоичной записи занимают довольно много места и не очень удобны для восприятия. Поэтому в программировании чаще используется представление чисел по основанию 16. В таком виде обычно записываются адреса памяти и ее содержимое.




При записи числа в шестнадцатеричной системе счисления используются символы 0-9, A, B, C, D, E, F. При этом А=10[dec], B=11[dec], C=12[dec], D=13[dec], E=14[dec], F=15[dec].
Для обозначения основания 16 используются такие записи (на примере числа 7C[hex]):
0x7C  7Chex  7C16  7Ch  7CH

Информация в простых дешевых МК хранится "кусочками" по 8 бит, один такой кусочек из 8 бит называется байт. Каждый бит - это один двоичный разряд - 0 или 1. Отсюда название 8-разрядный или 8-битный МК. Один байт может содержать число от 0 до 255 (пока не рассматриваем отрицательные числа). Числа больше 255 не помещаются в байт.

Если разделить байт на две части по 4 бита - тетрады, то для записи каждой части в шестнадцатеричной системе счисления потребуется один символ от 0 до F, а для записи всего байта - два символа.

Например:
124[dec] = 7*16+12*1 = 7hex*16 + Chex*1 = 0x7C

понедельник, 8 декабря 2014 г.

Минимальное устройство на МК

Каким может быть минимальное устройство на МК? Ответ на этот вопрос особенно интересен в начале изучения, чтобы сократить усилия и время, необходимые для получения первых результатов. В минимальном варианте к МК подключается напряжение питания (+Vdd и GND на рисунке) и несколько электрических сигналов. Под сигналом мы будем понимать некоторый процесс, который меняется во времени. Поскольку МК работает только с электрическими сигналами, то для взаимодействия с физическими объектами неэлектрической природы используются датчики, которые преобразуют физические величины в электрические сигналы, и исполнительные устройства - для обратного преобразования.


Сигналы, с которыми работает МК, можно разделить на логические (входы и выходы МК) и аналоговые (входы и выходы МК).

Логические сигналы принимают только два уровня напряжения: высокий или низкий. Простейший датчик, подключаемый к логическому входу МК - кнопка. Простейший индикатор, подключаемый к логическому выходу МК - светодиод.

Аналоговые сигналы меняются по форме непрерывно и повторяют (по возможности близко) физический процесс, которому они соответствуют. Поскольку МК внутри себя работает только с числами, то входной непрерывный аналоговый сигнал преобразуется блоком аналого-цифрового преобразователя (АЦП, англ. ADC, Analog to Digital Converter) в поток чисел. Этот блок АЦП находится внутри МК.

А вот устройство для обратного цифро-аналогового преобразования (ЦАП, англ. DAC, Digital to Analog Converter) в дешевых МК обычно не установлено. Хотя можно было бы установить внешнюю микросхему ЦАП, обычно вместо этого используют блок широтно-импульсной модуляции (ШИМ, англ. PWM, pulse width modulator) и внешний фильтр нижних частот (ФНЧ, англ. LPF, low pass filter). Блок ШИМ установлен во всех современных МК, даже самых дешевых, а фильтр может быть простым.

Суть работы ШИМ сводится к тому, что на выходе блока присутствуют импульсы фиксированной частоты, которые меняются по длительности (ширине). Если эта длительность пропорциональна исходному сигналу, а частота ШИМ значительно (в 50-100 раз) выше частоты исходного сигнала, то после фильтрации на выходе ФНЧ получается сигнал очень близкий к исходному.
Оба решения - отдельная микросхема ЦАП, и ШИМ+ФНЧ обладают своими достоинствами и недостатками. В целом можно сказать, что ШИМ+ФНЧ это дешевый способ реализации ЦАП.

Отладочная плата STM8S-DISCOVERY

Прежде, чем мы сделаем свою первую плату с МК, для начала работы мы можем использовать готовую плату (в нашем случае это будет STM8S-DISCOVERY). Такой подход позволит начать освоение микроконтроллера и его программных средств разработки до того, как готовы платы конечного устройства.




Эта плата имеет встроенный USB программатор и отладчик, которые могут быть отломлены от платы МК и использованы для программирования других плат с таким же МК (STM8S). Поискать плату в Санкт-Петербурге можно в магазинах радиоэлектроники:

http://compel.ru
http://megachip.ru
http://terraelectronica.ru
http://micronika.ru
http://chipdip.ru

http://efind.ru (поиск по разным магазинам в России)