Обсуждение учебного курса по STM8L

Полный состав практического учебного курса по STM8L:

1) Hello светодиод!
Установка IAR. Создание проекта. Мигание светодиодом.

2) GPIO
Подробный разбор GPIO. В качестве примера управление 7seg индикатором. Работа с кнопками.

3) GPIO, часть 2
Матричная клавиатура. Прерывания — пробуждение МК из halt по нажатию кнопки. Эмуляция 1-wire. Кодовый замок c iButton. Здесь-же затронута работа с EEPROM.

4) Таймеры: начало
Общие сведения о таймерах в STM8L. Создание собственной функции задержки с блекджеком и WFE. Прерывания таймера. Динамическая индикация (7seg) на таймере. Секундомер.

5) Таймеры: продолжение
Работа с навороченым таймером 1. Генераця ШИМ сигналов (делаем moodlamp). Режим подсчета количества импульсов (частотомер).

6) Сенсорные кнопки
Обзор библиотеки от ST для создания сенсорных кнопочек. Делаем светодиодный светильничек с сенсорным управлением.

7) АЦП
Быстрый старт с АЦП. Использование таймера в качестве триггера для АЦП. Вывод напряжения на дисплей. Вольтметер и амперметер.

8) Интерфейсы: USART
Обмен данными с компом (передача данных из АЦП в комп — осциллограф же!).
Работа USART в синхронном режиме, подключение дисплейчика от Nokia.

9) ЦАП
Общее описание DAC. Ликбез по DMA. Работа совместно с DMA и таймером качестве триггера. Простенький генератор сигналов управляемый по UART.

10) Интерфейсы: I2C
Работа с i2c в режиме мастера. Термометр/термостат на lm75a. Тут-же работа со сторожевым таймером. Обзор slave режима.

11) Интерфейсы: SPI
Работа с акселерометром MMA7455LT. Передача данных с акселерометра через UART. Обзор slave режима в SPI.

12) RTC
Обзор возможностей RTC. Делаем простенькие по функциональности, но неординарные по виду, часы.
13) Контроллер LCD.
Сверхэкономичный измеритель температуры и влажности на sht21 + часы. Тут-же ликбез по энергосбережению и работа с PVD.

— В курсе будет делаться большой упор на практику. Почти в каждом уроке будет создаваться некое подобие законченого устройства. Теории будет немного, точнее — ровно столько сколько нужно. За дополнительными сведениями буду посылать в более обширные статьи и в RM0031. Кстати, семейство STM8L101 я обсуждать не хочу. Ибо оно уныло.

— Насчет частоты появления статей в курсе.
f = 0,000001653439 Гц Примерно 1 штука в неделю
Выпалить половину курса за неделю, как angel5a я не могу :)
  • +1
  • 16 октября 2011, 18:03
  • dcoder

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

RSS свернуть / развернуть
линии ввода-вывода и сразу пробуждение из спячки? :)
может действительно под каждый раздел мини-задачку, например как уже указал для ВВ:
кнопки, клавиатура, индикатор…
0
  • avatar
  • ZiB
  • 16 октября 2011, 18:18
Ну я там написал, что можно поделить на две части :)

Алсо, статья про спящие режимы и прерывания уже есть. Вот я и решил что не стоит еще раз сильно подробно расписывать…
0
Если так смотреть, то уже почти все модули описали и получается что нужно просто собрать всё
0
Ну примерно так. То есть дать основные сведения, не углубляясь в теорию. Если что посылать в нужную статью
0
Может одну запись (например эту) сделать «головной», т.е. при выборе блога STM8 она бы всегда была первая.
И на текущий момент собрать линки на все блоки которые описаны, а далее заполнить пустые пробелы новыми записями?
0
Есть такая мысль. Только наверное не эту, а специально запиленое оглавление с кратким описанием каждой части.
0
Буду рад почитать. Оч мало в сети такого рода материалов. Немного здесь, немного на Ziblog и ЕвгенМЦУ.
0
А если я в программировании полный ноль, то по курсам можно будет научиться писать программы, или всё таки нужна начальная база, например на avr?
0
Вот это интересный вопрос. В принципе есть основы на главном сайте и там-же учебный курс по си. Поэтому наверное такие вещи я все-таки пропущу.

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

Как минимум надо будет прочитать у меня цикл статей по архитектуре программ, чтобы не плодить странных мутантов, разваливающихся от малейшего изменения.
0
Хотелось бы в конце каждой главы давать информацию и по STM32L, если есть различия, либо направление для полёта мысли в сторону STM32L. Получится двух зайцев убить.
0
Насколько подробную информацию? То есть что-то типа:
Таймер
*** много букаф ***
Да, кстати, в STM32L тоже есть таймер!
Или немного подробнее? ;)
0
… если уж сравнивать, то с колегой по цеху — каким нибудь 8-битником, желательно AVR. Кстати, хорошоб еще статью про STM'овский софт, новичкам будет полезно.
0
Нет. Здесь по принципу «родственник». Периферия STM8 и STM32 куда более схожа, чем с каким-нить «коллегой по цеху».
0
… я к тому что, тем кто впервые сталкивается с мк все равно, лишь бы инфы да примеров по больше, а для остальных кто работает на AVR, PIC или 8051, о 32-битниках речь не идет, показать в чем преимущества STM8, а все как известно познается в сравнении. Но если курс предпологается как «описание одного из семейств 8-битной армады» думаю что многие останутся при своих.
PS если кратко то я за конкуренцию
0
В нынешних реалиях статьи про МК — это, по сути, описания периферии, т.к. все остальные различия скрыты С (по ассемблеру STM8, где эти различия заметны, тут еще ни одной статьи нету). Вот и предложили описать периферию семейств, в которых она похожа, описать скопом.
AVR тут ни при чем, у него периферия совершенно иная.
0
А что именно из софта интересует? пара статей тут уже была…
0
STM8 и AVR слишком разные, что бы писать однотипные статьи про обои сразу.
0
Ээ нет-нет-нет Девид Блейн! Никто не предлагает писать однотипные статьи по 8L и 32L сразу :)
0
Правильно, потому что надо попутно охватить еще и 32F и 8S ;)
0
S серия никому не уперлась ИМХО. L всяко лучше
0
Мне уперлась. Она от 5В работает.
0
и что? чем +5 лучше +3.3?
0
5-вольтовым наследием хотя бы, с которым иначе придется общаться через левелшифтер.
0
Целевое устройство к которому будет подключаться новая плата работает от 5В и имеет соответствующие уровни. Мне проще сразу взять S и не парится с доп. стабилизаторами и согласованиями уровней.
0
Не так далече автор калькулятора на STM8S аргументированно отказывался от 8L. Так что — чем лучше? Низкое потребление и драйвер стекляхи отнюдь не всегда нужны (особенно учитывая что стекляху еще и найти где-то надо).
0
Да и демоплата с ней заметно дешевле. И в отдельный ст-линк ее превратить проще. И вообще, будь они никому не нужны — их бы перестали выпускать.
0
Его аргументацией было «в терре не было МК 8L с 64кб памяти». Не катит
0
Тебе выше привели еще один аргумент. Да и аргументация «нету» более чем веская, на том, чего у тебя нет — ты ничего не сделаешь.
Еще один веский аргумент — «есть». У меня, например, есть несколько S-ок. И это веская причина их применить там, где нету нужды в L при прочих равных.

Так что правильно было сказать «Мне S серия не уперлась». Насчет «никому» — ты хватанул.
0
Я же сказал волшебное слово «ИМХО» :) Ну да ладно. Они похожи. Алсо у меня сделалась демоплатка под S серию. Может и про неё что-то будет…
0
STM32L в этом плане кстати веселее. ZiB вон например писал у себя в блоге про заметные отличия от STM32F в GPIO модуле.

А еще эта зараза шьется через ST-LINK/V2, который похоже ни в каком отношении с V1 не совместим…
0
Ну тогда нету и смысла про них упоминать. Пока сам не раскурю.
0
Я про стм8 и авр. Что в одном курсе их не сравнить. Как максимум получится, что в авр тоже есть таймеры:)
0
Если использовать библиотеки, то разница вероятно будет не слишком большой.
0
Да уж, почитал трэд. Тогда лучше отдельный курс по 32L/32F по-ходу…
0
А как будут писаться примеры — через библиотеки или записью волшебных чисел. Второй курс мне особо не нужен:)
0
  • avatar
  • PRC
  • 16 октября 2011, 21:14
Вот смотри.

GPIOB->DDR = 0xFF;

while(1)
 {
  GPIOB->ODR = numbers[counter];
  counter++;
  if(counter==10) counter = 0;
  
  while ((GPIOC->IDR & GPIO_Pin_1) != 0);
  while ((GPIOC->IDR & GPIO_Pin_1) == 0);  
 } 


Волшебные числа видишь? :)

Вот примерно так и будет для простых случаев. А там, где одной функцией из библиотеки можно заменить пару десятков строк кода, буду юзать библиотеку.
0
Я один хрен не помню что делает регистр IDR:) Точнее только примерно помню.ж
0
Input Data Register
0
Восхищен вашей памятью!
0
На счет софта. Сейчас есть IAR космик ризонанс(или как то так) и програмулина от ST (STVD)
Без всякого танца с регистрациями мну установил только ствд и иар. Методом тыка получилось работать только с иар. Я не особо грамотен в микроконтроллерах но по мне так ИАР оптимален.
0
Все ок. Я тоже на нем пишу :)
0
Добавил еще 4 пункта
0
8) Интерфейсы: SPI
Ээээ… акселерометр? Сдвиговые регистры?..
SPI EEPROM/Flash память, SD, экранчики Nokia.
0
А память-то я и забыл. Еще SD карты. А нокла не попрет — там надо 9 бит, а 8L так не умеет. (умеет, но UARTом)
0
Нокла не попрет по другой причине — там TFT. Нужен, как минимум, FSMC. А лучше полноценный контроллер.
0
Под ноклой имею ввиду те-самые «экранчики от nokia»
0
Лично я склоняюсь ко второму варианту + иногда напоминать о том, что регистры таки существуют.

Описывать библиотеки смысла не имеет — получится перевод доков по ним. С библиотеками при желании разберется кто угодно. А кто не разберется, тому еще рано работать с МК. Так что я за регистры. Иначе курс теряет смысл.
+1
  • avatar
  • _YS_
  • 16 октября 2011, 22:06
Ты видел тамошние библиотеки? :) с ними не каждый ардуинщик разберется.

А описывать регистры — перевод даташита.

Так что имхо лучше показывать наиболее простой способ добиться цели. Но конечно не так — «вот функция init_42() которая инициализирует ядро, периферию и все такое прочее». Если функция сложнее, чем просто запись числа в регистр, то буду рассказывать что она делает. Как например в статье про EEPROM
+1
+1
0
я думаю на начальном этапе нужно бы показать подробнее что регистры есть, что есть регистры, как с ними работать,
и разжевать где это искать. а в дальнейшем не фанатично углубляться в даташит и привязываться к голому железу, а давать таки примеры, основанные на либах, но при этом для начинающих джедаев, желающих стать начинающими джедаями, а также сочувствующих оным, оставлять указатели в какую сторону копать и что покуривать. так никто не почувствует себя обиженным и обделённым
0
Логично. Вот только «для начинающих джедаев, желающих стать начинающими джедаями» меня смущает. Дорогие джедаи, не стойте на месте!
0
Дык регистры — это общее во всех МК. За ними послать в АВР-курс, или любой другой с-нуля-курс. Ну и вроде как курс ориентируется на то, что человек уже понимает, что такое МК.
0
ну вобще тут возразить сложно, в сотый раз жевать ту же резину не стоит. видимо действительно надо дать понять, что без хоть какой-то базы будет сложно и лучше сначала освоить те же АВР, а потом возвращаться, ежели желание ещё будет.
0
Где-то в середине курса мы построим зарядное устройство для аккумуляторов (пока мне нужны только SLA) на S серии, если её любители так хотят :)
0
я за библиотеки
0
Можно совместить библиотеки и регистры — писать сначала очень подробно про регистры, затем какая команда из библиотек заменяет вышенаписанное и продолжить писать про сложные библиотечные функции, иногда разбирая простые по «записям в регистры».
0
«Подробно про регистры» займет 90% статьи же. И это есть в даташите (точнее, мануале). К тому же, прочитав как оно юзается через библиотеку проще будет понять как работать с этим через регистры.
Регистры стоит описывать разве что наиболее простые и полезные. Такие, как регистры данных АЦП/ЦАП/интерфейсов, регистры чтения/записи состояния пинов — это как раз те регистры, работу с которыми чаще всего и нужно оптимизировать (например, при быстром битбанге).
0
Я тоже так думал
0
Надо еще добавить в стандарт статьи точные ссылки на даташит. Т.е. описываешь режим и тут же сноска (можно даже как нибудь их стандартизовано выделять) — даташит такой то, пункт такой то. И ссылка на даташиты стандартным блоком в каждом посте в подвале.
0
Годная идея
0
У меня, при написании, поиск ссылок на даташит (откуда тот путнкт, откуда этот) занял 3/4 времени. Так что имхо проще только раздел указать где оно находится. Кому надо, найдет в разделе, кому не надо и по точной ссылке не перейдет. А времени сэкономит уйму. Я из-за «подробных» ссылок ушел за лимит времени.
0
Но статья потеряет в качестве. =)
0
Почему дисплей в UART'е? имхо его место в самый раз у SPI. И АЦП/ЦАП имхо местами поменять. Всё же АЦП более часто применяемая задача, но я хз что из них сложнее/проже запускается.
0
Там же нужен 9бит фрейм. А SPI в STM8 так не может. Зато может UART, в синхронном режиме.
0
Не всегда: SPI. Подключаем дисплей от Nokia 3310.
В прочем я это и сам сделаю, выбрать бы только среду разработки :)
0
В LPC пальцатый SPI. там мона любую длину фрейма до 16 бит выбрать. STM-овский так не может.
0
Ладно. Скажу доходчиво. Nokia 3310 LCD нужен 8 битный SPI. что поддерживает и STM8 и STM32 :)

А у LPC да, SPI мне нравится :)
0
Обновил пост. Читаем, критикуем.
0
было бы весьма годно, что б ты запилил псто про какую нибудь RTOS, например atomthreads. Типа быстрого старта под разные компилеры и IDE.
0
Кстати да. Насчет разных компиляторов — не знаю, хотя это и полезно. Еще надо про сенсорные кнопочки написать
0
Блин, я проснулся в 6 часов чтобы про сенсорные кнопки написать, а когда комп включил, подумал а сенсорный интерфейс вообще есть в L серии?
0
таки есть. Я спать
0
Порядок нормальный думаю, но состав аппаратных средств… не для домохозяек: HD44780, iButton, MMA7455LT, sht21.
я например только iButton имею (только из-за домофона в подъезде), и остальное не горю желанием покупать. Но я то могу и самостоятельно перенести уроки на то что мне надо. А вот домохозяйки — сомневаюсь.

P.S.: «Домохозяйки» взято условно.
0
Ну как-бы во введении написано, что человек, который собрался читать курс, должен кое-что знать в электронике. Возможно экранчик на HD44780 у него уже есть. :)

А вот акселерометр и впрямь можно чем-то заменить.
0
«Пол курса за неделю» я публиковал. при публикацие первого урока было готово уже больше половины :)
0
А я бы добавил еще архитектуру контроллера, архитектуру центрального процессора (в первую очередь регистры и систему адресации) и систему команд (ассемблер).
Контроллер для нас сравнительно новый, по архитектуре близок к MC6800 и почти нигде не описан.
Это, в первую очередь, для любителя ассемблера.
+1
  • avatar
  • mzw
  • 18 октября 2011, 10:39
Ибо в том виде, как объявлено, это курс не по STM8L, а по периферии STM8L.
+1
В принципе, для сишников разные МК тока периферией и различаются.
Но я тоже за статьи по ядру. Архитектура (регистры, методы адресации, аппаратные возможности (как аппаратный умножитель у MCS-51, например), организация адресного пространства), система команд.
Алсо, по моему никто не осветил такой момент, как защита кода. Как делается, как снимается. Вон MSP430 например после активации защиты навсегда теряют возможность отладки и прошивки через что-либо кроме бута.
+1
Потому, что защита кода обычно любителями не используется. Уж больно специфичная тема для помещения в курс. Можно как-нибудь заметочку про это запилить.
0
Ну я не работал с СТМ8, но тем не мение упомянутые темы мне поверхностно знакому. Человек который хочет изучит на уровне асемблера или просто более углубленно — осилит это дело самостоятельно без проблем, после прочтения основного корса. Так что на мой взгляд необходимости в таких статьях нет. Если и помещать, то после всех уроков как «углубленное изучение» или как «плюшки и финты».
0
Я бы краткое описание на русском почитал. Примерно как про ядро MSP430. Интересно все же, как оно работает, что из себя представляет.
0
Полностью поддерживаю mzw. Было бы прекрасно вот в таком формате: MSP430 — учебный курс. Часть 3 — ядро, память и режимы адресации.
0
В каких случаях обоснован выбор STM8, вместо STM32? вроде stm32 и дешевле, и производительнее, и функциональнее…
0
Сводки с полей.

Пока размышлял над тем, как организовать первую часть, успел написать вторую :) Но сейчас не об этом:

Думаю, что первую часть (hello, светодиод!) придется делить на две части. В одной теория — ядро, регистры, память, адресация, организация документации и т.д. В другой, то, что планировалось изначально
0
Кстати dcoder,

Все мучает любопытство, как продвигается вопрос с «твоя думать про портирование V-USB на STM8»?
А просто STM8-ножкодрыгов на просторах рунета и так   …   достаточно )
0
  • avatar
  • valio
  • 22 октября 2011, 18:22
Пока никак. Эта идея возникла потому, что «хочу изучть stm8»+«хочу сделать что-то полезное»+«надо сделать несколько дешевых usb-показометров». Сейчас последняя причина отвалилась, поэтому процесс встал
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.