Stm8. настройки среды st visual develop

STM8. Урок 1. Настройки среды ST Visual Develop

Компания STM 10 лет назад начала выпускать контроллеры STM8. Идеология контроллеров STM8 полностью совпадает с идеологий STM32, но более простые для понимания и освоения. Внутренняя периферия контроллеров является несколько урезанным вариантом периферии в STM32. Отдельного внимания заслуживает организация регистров периферии, которая специально разработана для удобной настройки периферии на языках высокого уровня. Разработанная стандартная библиотека для периферии делает работу настройки удобной, быстрой и позволяет программировать через короткое время без чтения Справочного руководства. Освоение STM8 является мягким вхождением в идеологию программирования ARM, и STM32 в частности.

1. Для работы с микроконтроллером STM8 необходимо скачать и установить следующие компоненты:

  • ST Visual Develop, с сайта st.com
  • Cosmic, с бесплатной регистрацией
  • Библиотеку SPL для контроллера STM8L152C6

2. После установки и Cosmic необходимо настроить IDE окружение. STVD и Cosmic путь установки программ я оставлял по-умолчанию.

Создадим папку, в которой будут храниться все проект для STM8. Я создал папку по адресу: . Откроем STVD и создадим пустое Рабочее Пространство (РП) (Workspace) для этого выберем File=>New Workspace. =>Create empty Workspace

Создаем РП. Для этого вводим название РП и выбираем ранее созданную папку «С:STM8».

Рабочее пространство создано. Для удобства можно ассоциировать разрешение файла *.stw c программой STVD.

3. Создание проекта.

Для создания проекта (РП должно быть открыто) перейдем по ссылке Project=>Add to Workspace. =>New Project

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

Выбираем необходимый контроллер. Я выбираю контроллер, установленный на отладочной плате STM8L-Discovery. Для поиска можно ввести номер контроллера, в нашем случае 152.

4. Подключение Стандартных библиотек (SPL)

Для дальнейшей работы нам необходимо создать шаблон для наших проектов. Для этого нам потребуется скаченная библиотека SPL для контроллеров STM8L15x.

Создадим папку «C:STM8library». В папку скопируем следующие файлы из папки «STM8STM8L15x-16x-05x-AL31-L_StdPeriph_LibProjectSTM8L15x_StdPeriph_Template»

  • main.c
  • stm8l15x_conf.h
  • stm8l15x_it.c
  • stm8l15x_it.h
  • STVDCosmicstm8_interrupt_vector.c

Теперь необходимо скопировать файлы заголовочные файлы и исходники. Для этого необходимо скопировать в папку папки inc и src из папки «STM8L15x-16x-05x-AL31-L_StdPeriph_LibLibrariesSTM8L15x_StdPeriph_Driver»

Из папки необходимо переместить файл «stm8l15x.h» на один уровень вверх, в нашем случае в «C:STM8library»

Не забудьте разрешить редактирование для всех скопированных файлов.
5. Настройка STVD для поиска заголовочных и исходных файлов.

Откроем настройки среды Tools=>Options=>Directories

Для компилятора Cosmic настроим папку для поиска заголовочных файлов. Аналогичным образом настраивается папка для поиска исходных кодов.

После этого необходимо добавить и заменить файлы в нашем созданном проекте, на файлы которые мы скопировали в папку «C:STM8library».

Добавленные файлы необходимо подключить к проекту. Заголовочные файлы (*.h) добавляем в папку Include Files=>Add Files to Folder. а исходники добавляем в Source Files.

Для того, чтобы проект компилировался необходимо в заголовочном файле «stm8l15x.h» в самом начале раскомментировать одно из определений используемого контроллера, в нашем случае #define STM8L15X_MD. Описание каждого определения находиться ниже. Если используется внешний кварц, то нужно отредактировать его частоту #define HSE_VALUE ((uint32_t)16000000).

Проект должен компилировать, для этого можно нажать на F7.

При использовании функций из заголовочных файлов, необходимо подключать соответствующие исполняемые файлы.

6. Настройка отладчика

Для того, чтобы можно было прошивать и отлаживать проект в железе, необходимо настроить отладочный интерфейс. Откроем вкладку по ссылке Debug instrument=>Target setting и выберем Swim ST-link.

Теперь мы можем прошивать и отлаживать проекты для Stm8l-discovery в железе. В архиве находится откомпилированный проект мигания светодиодом.

Спасибо за внимание. Будут вопросы пишите в комментарии, постараюсь ответить.

ST Visual develop IDE — среда для программирования STM8

  1. Установка среды и компилятора
  2. Набор стандартных библиотек для STM8, новый проект
  3. Настройка использования типовых библиотек СИ
  4. Работа в среде
  5. Симулятор
  6. Отладка, прошивка, оптимизация кода
  7. Программирование option byte
  8. Контроль размера прошивки

Установка среды и компилятора

Сама программа поставляется компанией ST бесплатно. Скачать её можно с официального сайта ST по этой ссылке. Установка не имеет каких либо особенностей.

Для работы с этой средой дополнительно необходим компилятор. Можно использовать два компилятора COSMIC и REISONANCE. COSMIC ранее был платный, но сейчас его можно скачать здесь и установить абсолютно бесплатно, его и будем использовать. Единственная проблема — ожидание ключа активации — 1-2 рабочих дня. Также необходимо раз в год активировать компилятор заново (проще переустановить).

После установки можно сразу запустить среду, создать новый проект и начать программировать. Но тогда придётся прописать все пути руками. Гораздо проще использовать стандартную библиотеку от ST, вместе с ней поставляется шаблон проекта. Так мы и поступим.

Набор стандартных библиотек для STM8, новый проект

Стандартные библиотеки для STM8 можно скачать здесь. Библиотека поставляем в zip архиве с подробным описанием и широким набором примеров. Внутри она имеет следующий набор папок.


Для создания нового проекта, проще всего скопировать всю папку библиотеки STM8S_StdPeriph_Lib, назвать её по имени проекта, лучше по-английски. Далее из Visual develop IDE необходимо открыть файл проекта:


Лучше сразу связать это расширение с нашей IDE.

При старте нового проекта из шаблона, вы получаете сразу готовые настройки под все МК STM8.


Остаётся только выбрать нужный МК и начать разработку. Остальные можно удалить.

Первым делом необходимо сделать начальные настройки проекта. Нажимаем на нужной серии правой кнопкой мышки и выбираем Settings. В данном окне переходим на закладку MCU selections и выбираем нужный МК:


Далее нажимаем на плюс, открываем файлы проекта, видим файл main.c, нажимаем на нем два раза мышкой и начинаем программирование.

Все проекты для наших приборов будут созданы из шаблона проекта. Соответственно, чтобы с ними работать, вам необходимо скачать папку проекта и запустить ярлык из папки проекта, как написано выше.

Если вам не хватает памяти, то можно отключить обработку исключительных ситуаций. Это делается через файл stm8s_conf.h. Надо закомментировать строку:

#define USE_FULL_ASSERT (1).

В результате освободится довольно много памяти для программы. Также можно заменить простые процедуры библиотеки на прямую запись в регистры.

Настройка использования типовых библиотек СИ

Если вы планируете использовать в проекте стандартные библиотеки языка СИ, например math (функция RAND) или другие, то необходимо, кроме указания в тексте соответствующего #include «math.h», в настройках проекта на закладке Linker, указать использование стандартных библиотек:

Работа в среде

Среда очень похожа на Visual C, поэтому не должна вызывать у вас проблем. Для компиляции проекта необходимо нажать кнопку Compile:


Для запуска отладки и прошивки МК — кнопку Debug:


При написании кода по комбинации «CTRL пробел» вызывается подсказка по имени переменной или функции:

По имени функции, по правой кнопке мышки можно быстро перейти в самой функции — команда «Go to defenition».

Читайте также  Цоколевка распространенных биполярных и полевых транзисторов


Это очень удобно использовать для функций стандартных библиотек, чтобы познакомиться как они реализованы.

Если вы используете в проекте внешний кварц, то его частоту придётся задать руками в файле проекта «stm8s.h»:

Работа с прерываниями организована в виде предопределённых функций в файле «stm8s_it.c», остаётся только написать свой код в нужной функции.


Сама библиотека очень хорошо описана в файле «stm8s-a_stdperiph_lib_um.chm» в корне стандартной библиотеке.

Работа с библиотекой достаточно удобная, за исключением немного большого расхода памяти на вызов стандартных процедур, какую то часть функций можно было реализовать просто через «#define»

В данной статье мы не будем подробно описывать, как писать программу для STM8 в этой среде, это будет сделано в статье по приборам на основе этого микроконтроллера.

Симулятор

Данная среда имеет очень неплохой симулятор и позволяет отлаживать код без наличия самого микроконтроллера. Для запуска симулятора необходимо указать в настройках отладки, что будет использоваться симулятор:


После этого можно запустить отладку по вышеописанной кнопке и начнётся работа в симуляторе. Симулятор не поддерживает работу с внешним кварцем, поэтому если у вас в коде инструкции по переходу на внешний кварц, их надо закомментировать. Сами настройки процессора можно задать при первом запуске:

В симуляторе доступны все регистры, работают прерывания по таймерам, можно проводить отладку сложных формул и функций. Также в нем можно оптимизировать программу. Виден полученный код на ассемблере. Можно измерять скорость вычислений в тиках процессорного времени и миллисекундах. Можно симулировать состояние выводов МК. В общем, вещь однозначно очень удобная.

Отладка, прошивка, оптимизация кода

Для работы с реальным устройством вам необходимо иметь программатор — ST-LINK. В настройке отладки выбираем его, остальные настройки оставляем по умолчанию.


Далее все просто, при начале отладки — программа компилируется, прошивается микроконтроллер и начинается отладка. Если вам необходимо просто прошить МК, то надо начать отладку и после ее начала — прервать ее, по соответствующей кнопке.

В процессе отладки вам доступна возможность установки не более 8 точек останова и возможет просмотр всех переменных, а также состояния внутренних регистров, во время остановки программы. Это очень мощный инструмент, который позволяет изучить, как работает микроконтроллер, а также найти и поправить ошибки в своей программе. Через меню «View» во время отладки вы можете включить нужные окна.


Например, окно «Watch» позволяет просмотреть любые переменные, провести вычисления:


Не забывайте про оптимизацию кода. Во первых, вы не сможете просмотреть содержимое локальных переменных, если это необходимо — то надо сделать их глобальными. Во вторых условные переходы могут быть расположены по другому, конструкции if else компилятор может перерасположить. Если вам необходимо, чтобы отладка шла в соответствие с написанным кодом, то в настройках проекта надо отключить оптимизацию:

Программирование option byte

Для программирования option byte необходимо через меню TOOLS запустить porgrammer. Это отдельное приложение для прошивки МК, через него можно прошить option byte.


Изменение значения осуществляется по правой кнопке мышки. Программирование — на закладке Program по кнопке START. Предварительно на закладке Settings надо задать типа программатора ST-LINK.

Контроль размера прошивки

После компиляции кода можно посмотреть размер прошивки, для того чтобы определить, что занимает больше всего места и т. д. Вся информация находится в текстовом файле по адресу:


смотреть нужно все позиции, кроме сегмента debug и info.

Там же рядом находится прошивка в формате s19, прошить её можно через UART или другими средствами.

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

  • Вычислительная техника
    • Микроконтроллеры микропроцессоры
    • ПЛИС
    • Мини-ПК
  • Силовая электроника
  • Датчики
  • Интерфейсы
  • Теория
    • Программирование
    • ТАУ и ЦОС
  • Перспективные технологии
    • 3D печать
    • Робототехника
    • Искусственный интеллект
    • Криптовалюты

Чтение RSS

Программируем STM8S в Arduino IDE

Как запрограммировать микроконтроллер STM8 с помощью Arduino IDE

Несмотря на то, что разработчики встраиваемых систем могут иметь несколько негативное отношение к Arduino IDE, на самом деле эта среда разработки остается одной из самых универсальных и широко используемых платформ для разработки встраиваемых систем в современном мире. Успех плат Arduino и связанных с ними микроконтроллеров, таких как Atmega328p, можно объяснить универсальностью и простотой программирования, и можно легко связать успех более 70% плат микроконтроллеров, которые достигли уровня популярности, аналогичного к Arduino, благодаря их совместимости с Arduino IDE.

Чтобы извлечь выгоду из простоты программирования, предлагаемой в Arduino IDE, сообщества, посвященные различным микроконтроллерам, создают инструменты совместимости, и одним из последних является инструмент Sduino, разработанный Майклом Майором для облегчения программирования микроконтроллеров STM8 с использованием Arduino IDE.

Семейство микроконтроллеров STM8 включает в себя серии микроконтроллеров STM8S, STM8L и STM8AF, которые реализованы на базе высокопроизводительного 8-разрядного ядра и поставляются с современным набором периферийных устройств. Они изготовлены с использованием собственной технологии энергонезависимой памяти 130 нм компании STMicroelectronics, и поддерживают быструю и безопасную разработку благодаря расширенным операциям с указателями стека, расширенным режимам адресации и новым инструкциям.

Инструмент Sduino позволяет программировать эти микроконтроллеры с использованием Arduino IDE, а также поддерживает стандартную периферийную библиотеку (SPL), что означает, что тот же код, написанный в Arduino IDE, может быть скомпилирован практически без изменений в официальной среде ST Visual Develop IDE.

Sduino все еще находится в стадии разработки и в настоящее время не поддерживает большое количество популярных библиотек Arduino, но поддерживает эту экосистему достаточно, чтобы быть полезным. Итак, в сегодняшнем материале мы рассмотрим процесс настройки Arduino IDE для программирования микроконтроллера STM8. В демонстрационных целях мы будем использовать плату разработки STM8S103F, и нашей целью будет загрузить пример мигания светодиодом на плату. Для этих целей нам также понадобится программатор ST link V2. Мы будем использовать светодиод на плате разработки STM8S103F.

Поскольку мы будем реализовывать пример мигания светодиодом с использованием светодиодного индикатора на плате STM8S103F, с точки зрения схемы делать особо ни чего не надо. Тем не менее, для тех, кто может быть не знаком с процессом подключения программатора ST к плате STM8S103F, принципиальная схема подключения выглядит следующим образом.

Если вы используете ST-Link в первый раз, вам потребуется установить драйвер и настроить его. В большинстве случаев установка драйверов начнется автоматически, как только вы подключите программатор ST-Link к вашему компьютеру.

Чтобы упростить процесс интеграции плат в Arduino IDE, в IDE имеется функция под названием «менеджер плат» (board manager). С помощью менеджера плат можно добавить новые платы (в основном программные компоненты, необходимые для того, чтобы Arduino IDE могла загружать код в конкретный МК), можно добавить в IDE. Эти программные компоненты, часто называемые ядрами, обычно разрабатываются производителями плат (как это делает Sparkfun для своих плат) или группой пользователей, которые хотят, чтобы их плата работала с Arduino IDE. Sduino представляет собой ядро для плат STM8, и мы будем устанавливать его в Arduino IDE с помощью менеджера плат. Следуйте приведенным далее инструкциям, чтобы сделать это.

Читайте также  Лабораторный синтезатор сверхвысокой частоты

Откройте окно настроек в Arduino IDE. Перейдите в Файл-Настройки (File-Preferences). В окне настроек найдите текстовое поле «Дополнительные URL-адреса менеджера плат» (Additional Board Manager URLs) и введите в поле эту ссылку https://github.com/tenbaht/sduino/raw/master/package_sduino_stm8_index.json. Поскольку у вас уже могут быть другие URL-адреса, отделите их друг от друга запятой и нажмите OK, когда закончите.

Далее, откройте менеджер плат Arduino «Инструменты-Платы-Менеджер плат» (tools-Boards-Boards manager). Когда менеджер плат откроется, введите Sduino в строку поиска. Вы должны увидеть ядро Sduino, как показано на следующем изображении. Нажмите на кнопку установки, чтобы установить ядро.

После завершения установки закройте менеджер плат. Теперь платы STM8 должны быть доступны в списке плат, как показано на следующем изображении.

Установка ядра Sduino автоматически установит некоторые библиотеки Arduino, которые были модифицированы для работы с платами STM8. Установите тип вашей платы, перейдя в «инструменты-платы» (tools-boards), на одну из плат STM8 и перейдите к примерам «файл-примеры» (file-examples). Вы увидите список примеров для вновь установленных библиотек.

После этого у вас есть все необходимое для загрузки кода на платы STM8s. И как уже упоминалось во введении, в демонстрационных целях мы загрузим пример мигания светодиодом на плату разработки STM8S103F. Вы можете использовать стандартный пример Blink или использовать пример среди библиотек, специфичных для STM8s (File-Example-Generic_Example-Basics-Blink). Вот его код:

Убедитесь, что ваша плата подключена к компьютеру через ST-link как на схеме. В Arduino IDE убедитесь, что выбран правильный тип платы, и в качестве программатора установите ST-Link/V2. Сделав все это, нажмите кнопку загрузки, после чего вы должны увидеть, что светодиод на плате начинает мигать.

Начинаем писать под stm8, выбираем среды разработки и стартуем

На пути в программировании stm8 есть развилка, о ней сегодня и поговорим.

Определимся что речь будет идти о средах которые могут писать под си. Для начала поговорим о подходах, я выделю 2 основных.

Первый установка ST Visual Develop и выбор в качестве компилятора COSMIC Бывший платный, а ныне бесплатный, но со своими заморочками; регистрация, получение ключа, и прочие танцы с бубном.

Второй же вариант, более простой VS Code + PlatformIO и компилятор SDCC полностью свободный. И опять же не все так просто. Sdcc не умеет исключать не используемые функции. Я решил этот вопрос хоть и успешно, но не без дополнительных действий при написании кода.

Первая среда, для любителей всё делать правильно

Для начала нам нужен ST Visual Develop. Устанавливаем и ставим запуск ярлыка всегда от администратора. В придачу к нему нам дают ST Visual Programmer, полезный инструмент, особенно когда стоит защита от записи и надо разблокировать микроконтроллер, а ведь китайские blue pill всегда приходят заблокированными. Китайцы бояться что мы украдём их круто оптимизированный Blink.

Дальше нужно будет получить компилятор COSMIC и его лицензионный ключ. Заполняем то что просят, получаем дистрибутив и делаем запрос ключа по электронной почте (тут рулетка кому то сразу придёт, кому то придётся подождать).

После пройденного лабиринта из форм и запросов, когда всё уже установлено, начнём

При первом запуске нужно указать расположение ключа, его лучше поместить в директорию компилятора. После создания нажимаем F7, ошибок быть не должно. Если писать на чистых регистрах, то всё готово, но я такой хардкор не люблю, поэтому продолжим и добавим SPL библиотеку.

Распакуем куда-нибудь и заходим в папку STM8S_StdPeriph_LibProjectSTM8S_StdPeriph_Template. Тут у нас шаблон проекта stm8s_conf.h — это конфигурационный файл библиотеки, через него выбирается контроллер. Зайдём в main тут сразу с первых строк #include «stm8s.h» это ссылка на основную библиотеку, а так же кусок кода отладки который начинается с #ifdef USE_FULL_ASSERT , без отладочного кода будут сыпаться ошибки.

Теперь когда мы прошлись по верхам давайте пробовать запускать библиотеку. Добавляем в проект из шаблона main и конфигурационный файл в. В include files добавляем всё из STM8S_StdPeriph_LibLibrariesSTM8S_StdPeriph_Driverinc.

Теперь всё должно собраться.

Добавим stm8s_gpio.c и соберём простецкую мигалку. У меня один из светодиодов висит на D3, конфигурация ноги на выход выглядит так:

Её вписываем в main до бесконечного цикла.

А вот функция смены состояния. GPIO_WriteReverse(GPIOD, GPIO_PIN_3); вписываем её в бесконечный цикл.

Но вот незадача, в SPL нету функций задержки, скопипастим из примера GPIO в библиотеке. Там она выглядит следующим образом.

Впишем её в конец перед #ifdef USE_FULL_ASSERT. Так же впишем её прототип в начало, где под это выделено место в шаблонном main.

Ну и наконец впишем функцию со значением в бесконечный цикл после функции смены состояния: Delay(0xFFFF);

Подключаем ST-Link и прошиваем, для этого нажимаем Start Debugging и Run. Светодиод моргает значит всё хорошо.

Теперь посмотрим со стороны на эту среду.

По плюсам; у неё есть полноценная отладка, поддержка SPL из коробки. По минусам; она старая из этого вытекает, не очень приятный интерфейс и старый диалект си, на который многие свежие библиотеки придётся переписывать, в частности ставить переменные только вначале функций. Вес кода оставляет желать лучшего. Ну последний камень, этот инструмент может просто взять и вылететь, такое бывает, нечасто, но всё же.

Вторая среда, для тех кто не любит заморачиваться.

Второй подход — это свободный и обновляемый компилятор SDCC, а так же среда PlatformIO.

Для начала установим VS Code и станем рабами Microsoft, далее найдём расширение PlatformIO.

Ждём пока миллион ползунков пройдёт до конца и перезапускаем программу. Открываем расширение (может быть и само откроется). Создаём новый проект и выбираем ближайшую плату с stm8s (микроконтроллер можно будет изменить в конфигурационном файле). В качестве фреймворка выбираем SPL мы же не ардуинщики, нас интересует хардкор.

Не удивляйтесь, проект будет создаваться прилично долго, потому как он на ходу будет подгружать компилятор, библиотеки и тд. И вот перед нами возник девственно голый проект, закрываем его он нам больше не нужен. В меню где мы создавали проект, открываем пример spl-blink, суть в том что blink генерирует неплохой шаблон в котором можно сразу писать. Правим пример под себя и прошиваем, всё моргает.

Разберем поподробнее среду разработки. Во первых весь проект должен лежать в src, иначе среда ведёт себя неадекватно. Во вторых открываем stm8s_conf.h и видим что все библиотеки кроме GPIO закомментированы, если этого не сделать то у мк не хватит памяти что бы поместить весь SPL в микроконтроллер (помните в начале я говорил что он загружает все функции что видит в код?).

Выходит что тут мы должны будем ручкам включать и отключать библиотеки, а если пойти дальше в оптимизацию как я и сделал, то нужно будет каждую функцию включать и отключать. Часть конфигурационного файла у меня выглядит следующим образом:

Читайте также  Питание ис шим контроллера и драйверов затвора стабилизированным напряжением

Каждую функцию я включаю через макрос, для этого у меня переписана большая часть SPL. Если вам оптимизация сильно не нужна, то такой упоротостью можете не заниматься.

Пройдёмся по преимуществам: работает почти из коробки, полностью бесплатно без попрошайничества, редакции языка обновляются и не придётся учить и переписывать код под си 80-90г. Сам интерфейс настраиваемый и намного приятнее. Для тех кто не любит win есть linux версия.

По минусам: нету полноценной отладки (над ней активно работают, но пока ничего приближённого к cosmic я не видел), в проекте небольшой хаос, раскидать по папкам пока нельзя.

Послевкусие.

Ну и на последок есть ещё среды, варианты и компиляторы, но либо это тот же SDCC вкрученный силой в Eclipse или ещё куда и работающий хуже чем в VS Code, либо это платные варианты IAR, Raisonance. Я лично пользуюсь и тем и тем, но чаще VS Code. Рекомендовать ничего не буду каждому своё, увидимся в комментариях)

Stm8. настройки среды st visual develop

Аналого-цифровой преобразователь STM8 способен перевести аналоговое значение в цифровое с точностью в 10 бит, или с погрешностью в 0,097%. При максимальном уровне сигнала 3.3V, шаг дискретизации будет 3,2 мВ (соответственно, напряжение на входе можно определить с точностью до 3,2 мВ).

Линия аналогового входа имеет довольно большой импеданс и будучи не нагруженной ничем, может собирать все низкочастотные помехи. Особенно хорошо это видно было в последней практической работе, все помехи, все наводки легко попадали на вход. Поэтому, при конструировании электронных изделий необходимо позаботиться о фильтрации сигнала и защите от помех.

Все основные настройки, а так же управление ADC выполняются с помощью 4 регистров:

Как видите, по-умолчанию значения всех битов равны 0. Эти значения так же будут сброшены в 0 после аппаратного RESET’а.

ADC включается битом ADON в регистре ADC_CR1. После первой установки бита ADON происходит подключение питания к модулю, но конвертирование запускается лишь при повторной установке бита ADON. То есть каждая установка бита это старт преобразователя.

Если ADC долго не используется, то его рекомендуется отключать сбросом бита ADON для экономии энергии.

Важно! Когда ADC включен битом ADON, то цифровой ввод/вывод не будет работать на выбранном канале (CH[3:0]), вне зависимости от конфигурации GPIO.

Важно! Рекомендуется выбирать аналоговый канал ПОСЛЕ установки бита ADON.

Важно! Все несуществующие (не выведенные из микросхемы) каналы подтянуты к Vdd и их значение будет читаться как 1023.

При проектировании электроники на микроконтроллерах STM8 следует учесть, что максимальная рекомендуемая частота работы АЦП составляет 4 МГц. То есть при частоте основного тактового генератора (FMASTER) в 16 МГц, делитель частоты ADC (FADC) должен быть как минимум /4. Максимально возможный коэффициент деления /18. Делитель настраивается битами SPSEL[2:0] в регистре ADC_CR1.

Существует пять режимов преобразования:

Одиночный режим

ADC делает одну выборку на выбранном канале и сохраняет результат в регистры ADC_DRH и ADC_DRL. По окончании выставится флаг EOC и возникнет прерывание (если EOCIE включена).

Непрерывный режим

ADC автоматически приступает к следующему преобразованию. Результат помещается в регистры ADC_DRx. Остановить серию преобразований можно сбросом бита CONT. После каждой конверсии выставится флаг EOC и возникнет прерывание (если EOCIE включена).

Непрерывный буферизированный режим

ADC выполняет серию преобразований как в непрерывном режиме, но результат помещается в буферные регистры ADC1_DB (их 10 штук). После того как все регистры будут заполнены, выставится флаг EOC и возникнет прерывание (если EOCIE включена). Новая конверсия запускается автоматически. Если какой-то регистр буфера перезапишется ДО того как будет считан, то выставится флаг OVR. Это не остановит серию, но даст понять, что данные потеряны.

Сканирующий режим

ADC читает значение нескольких каналов, начиная с AIN0, заканчивая AINn, где n — это последний канал в диапазоне сканирования. Это число записывается в CH[3:0] регистра ADC_CSR. Пока каналы сканируются, значение CH[3:0] будет расти автоматически на аппаратном уровне.

Важно! При использовании сканирующего режима невозможно использовать линии AIN0 — AINn как цифровые. Мультиплексор будет их постоянно отключать.

Данные по каждому из просканированных каналов сохранятся в буфере(-ах) ADC_DB. Когда просканируется последний канал, то выставится флаг EOC и возникнет прерывание (если EOCIE включена).

Важно! Не сбрасывайте SCAN бит пока идет преобразование. Остановка лучше через бит ADON.

Сканирующий непрерывный режим

Работает почти так же как и сканирующий одиночный, за исключением того, что конверсия не прекращается и возобновляется автоматически. При перезаписи непрочитанных регистров выставляется флаг OVR.

Важно! Не сбрасывайте флаг EOC операцией BRES (ассемблер) или ADCCSR &=