stm8l программный IIC (I2C)

Часто возникает необходимость подключить к микроконтроллеру какой-нибудь датчик по протоколу I2C. Для этого можно использовать встроенный I2C микроконтроллера или написать свой, программный. Для начала надо ознакомиться с теорией. Теория очень подробно описана тут. Ознакомившись с теорией, переходим к практике. Для микроконтроллера STM8L152C6T6 напишем простой пример, когда на шине находится один master. Пример будет для IAR.

Читать дальше

STM8L Компараторы: часть2 COMP2 и оконный режим

В первой части мы рассмотрели COMP1. Теперь займёмся вторым компаратором COMP2 и задействуем оконный режим. Работать будем с микроконтроллером STM8L152C6T6, который установлен на плате STM8L-DISCOVERY. STM8L152C6T6 относится к классу medium. Для работы с компараторами возьмём делитель напряжения из первой части, только переделаем его так, чтобы он давал напряжение от 0 до 1,5V.


Выход делителя теперь подключим к ножке PE5 микроконтроллера:

Читать дальше

STM8L Компараторы: часть1 COMP1

Компараторы в микроконтроллерах серии STM8L рассмотрим на примере STM8L152C6T6, который установлен на плате STM8L-DISCOVERY.

Наш STM8L152C6T6 относится к классу medium. Для начала разберёмся с подключением первого компаратора COMP1. Для иллюстрации подключения компаратора из RM0031 возьмём рисунок из раздела Routing interface (RI) для medium:


Входной сигнал мы будем подавать

Читать дальше

STM8L Мониторинг питающего напряжения без использования АЦП

Микроконтроллеры STM8L предназначены, прежде всего, для устройств с батарейным питанием. Поэтому часто бывает нужно следить за степенью разряда батарей. Это можно делать при помощи АЦП. Если АЦП полностью занят выполнением основной задачи, то мониторинг питания можно поручить системе Programmable voltage detector (PVD).

Обычно PVD используют для определения порога малого заряда батареи, после чего предпринимают определённые действия, пока питание не пропало совсем.
Мы же будем использовать PVD для отображения текущего заряда батареи на светодиодной шкале в диапазоне 1,7 …. 3,05 V.

Для работы мы возьмём плату STM8L-Discovery с микроконтроллером STM8L152C6T6.
LCD индикатор аккуратно вынимаем и откладываем в сторону.

Для подключения светодиодной шкалы нам понадобится весь порт B. Вместо светодиодной шкалы можно просто взять 8 светодиодов. Катодами мы подключим их к общему проводу, а анодами к выходам PB0 … PB7 порта B через резисторы по 2КОм.


Читать дальше
  • +6
  • 13 марта 2019, 00:09
  • CreLis
  • 1

Программные задержки для STM8

Доброго здравия, All.

Ковыряю STM8 контроллеры, и часто сталкиваюсь с тем, что нет каких-то мелочей, к которым привык. На этот раз такой мелочью стали программные задержки. Например, в AVR-LibC была для этого delay.h.

Её-то я «интерфейс» я и повторил под осваиваемого зверька. Можно спорить об актуальности программных задержек, но бывает, что всё же нет альтернативы. Например — это часто проще, чем возиться с таймером. Или когда требуется формировать короткие промежутки времени: вход и выход из прерывания требуют довольно большого количества тактов, а значит — просто не успеем. Есть ещё фактор: когда время входа в прерывание плохо предсказуемо, и требует особого внимания.

Собственно, файл брать здесь.
27.11.2014 Не упомянул компилятор, для какого тестировал — COSMIC. Зато теперь работает и для SDCC.

STM8L. Настройка UART для новичков

Не увидел я на сайте статей для новичков по настройке и работе с UART на STM8L, поэтому решил восполнить этот недостаток. Сейчас я расскажу как просто и быстро его настроить.
В качестве отладочной платы с этим микропроцессором я буду использовать STM8L-Discovery, в которой есть свой отладчик ST-Link. Среду для программирования будем использовать IAR.


Читать дальше

Датчик давления BMP085

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


Читать дальше
  • +6
  • 01 февраля 2014, 11:17
  • ftp27

8L-Курс, Часть 5 - Таймеры: начало

← Часть 4 — Тактирование Содержание Часть 6 — Таймеры, внешние каналы →

Таймеры — один из самых важных элементов МК. Ни одна более-менее сложная программа не обходится без них. Все, что так или иначе связано с временными интервалами или подсчетом каких-нибудь событий, реализуется на таймерах.

В STM8L есть несколько таймеров разной сложности. Их можно поделить на три группы:
TIM1 — Это самый сложный и функциональный таймер. 16и разрядный счетчик (максимальное значение — 65535), предделитель, принимающий любые значения от 1 до 65536. Три внешних канала с комплементарными выводами для каждого… и прочие плюшки.
TIM2, TIM3, TIM5(последнего в нашем МК нет) — Чуть по-проще. Внешних каналов всего два. Делитель принимает уже не любое значение, а только степени двойки в диапазоне от 1 до 128. Счетчик по-прежнему 16и разрядный.
TIM4 — Самый простой. 8и разрядный счетчик, делитель — (тоже степени двойки) от 1 до 32768. Внешних каналов нету.

Вот сводная табличка из reference manual, которая рассказывает о характеристиках всех таймеров:


Начнем с TIM1. Он конечно сложнее, чем все остальные, но зато после него работа с другими таймерами не будет вызывать непоняток.


Читать дальше

8L-Курс, Часть 4 - Тактирование

← Часть 3 — Прерывания Содержание Часть 5 — Таймеры, начало →

Раньше мы как-то не задумывались над тем, на какой частоте работает МК и от чего тактируется — работает и славно. Задержки выбирали на глаз, не зная о тактовой частоте. Пора положить этому конец и разобраться с организацией тактирования в STM8.


Читать дальше
  • +13
  • 21 февраля 2013, 17:03
  • dcoder
  • 1

Пруф оф концепт - прием и передача ИК сигнала одним светодиодом

Just for fun...

Решил сделать девайс, записывающий сигналы с ПДУ (от ТВ, DVD, кофеварок… :)), а затем воспроизводящий их. Вообще ничего необычного в этом нету, но возможно кому-то понравится решение: устройство состоит из МК (STM8L), резистора и ИК-диода… ну и питание еще :) А никаких дополнительных фильтров и усилителей нету.

Сия заметка исключительно «proof of concept» и код который я к ней прицепил не умеет ничего кроме записи и воспроизведения одной команды. Но функционал легко можно расширить.


Читать дальше
  • +17
  • 13 февраля 2013, 21:23
  • dcoder
  • 1