Программирование STM8

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3960406#p3960406"]Eddy_Em, набрал man ничё не вышло. Что я делаю не так?[/uquote]
Может, пробуешь на игровой приставке эту команду набрать?
[uquote="sergey.UA",url="/forum/viewtopic.php?p=3960436#p3960436"]микроконтроллер будет уходить в " вечный цикл ", до появления этого самого высокого уровня? Надеюсь понятно попытался объяснить что я хочу узнать.[/uquote]
Есть такое понятие, как поллинг. Не нужно постоянно сидеть и ждать события: можно его периодически проверять. Аналогично с вводом: достаточно использовать select или poll, чтобы не торчать постоянно в ожидании, пока появятся данные. Например.

А на МК есть еще прерывания и DMA, что сильно расширяет возможности.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Сообщение BlackKilkennyCat »

sergey.UA, всё зависит от алгоритма и аппаратных возможностей. Если алгоритм требует ничего не делать до получения 1 на пине - можно сделать цикл while с условием выхода из него - появление 1. Как уже выше сказали, существует метод опроса (polling), когда можно эпизодически опрашивать пин, не появилась ли там 1. Этот метод прост, но имеет две проблемы: можно пропустить короткий синал; невозможно установить точное время его появления. Существуют метод обработки прерываний, при условии, что именно этот контроллер умеет это делать на этом пине. В этом случае появление 1 вызовет событие, обработкой которого займётся специальная функция.
В обоих методах можно продолжать что-то делать, а можно и ожидать в цикле, или вообще усыпить микроконтроллер, активируя лишь изредка или по внешнему прерыванию.

DMA, о котором зачем-то сказано выше, рассматривать в данном случае не стоит.
Реклама
Потрогал лапой паяльник
Сообщения: 357
Зарегистрирован: Вс янв 11, 2015 20:33:32

Сообщение sergey.UA »

По поводу работы программы в микроконтроллере, касательно STM8, я так и думал.
Проворачивал нечто подобное, разными способами с камнями PIC16Fxxx.
А по поводу работы функции getchar() и приостановки выполнения программы в Visual Studio, спрошу уже в более подходящей ветке.
Спасибо коллеги что реагируете. :)
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3960473#p3960473"]DMA, о котором зачем-то сказано выше, рассматривать в данном случае не стоит.[/uquote]
Как же не стоит? Без DMA не реализовать какой-нибудь дурацкий протокол вроде 1-wire или того же управления светодиодами...
Да и просто, если нужно замерить длительность нескольких коротких импульсов, очень удобно использовать DMA, которое будет автоматом по событию capture складывать нужные данные в массив.

Но, понятно, что это не относится к STM8S. Как, в принципе, и stdio…
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Сообщения: 1855
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="sergey.UA",url="/forum/viewtopic.php?p=3960333#p3960333"]Касательно функции getchar(), в строке №7, программа, подойдя к выполнению этой функции, останавливается. Т.е. ждет, пока не будет введен с клавиатуры какой либо символ ? Точно так же, и в строке №12, в теле цикла, программа приостанавливается. Я все правильно понимаю ?[/uquote]
EOF - признак конца файла (для файловых потоков). Тот пример просто читает поток символов с одного файлового потока и записывает в другой (копирует), пока не дойдёт до конца файла.
Всё.
Реклама
Потрогал лапой паяльник
Сообщения: 357
Зарегистрирован: Вс янв 11, 2015 20:33:32

Сообщение sergey.UA »

Вот блин, неужели я спрашивал про ПРИЗНАК КОНЦА ФАЙЛА - EOF?!!!
Реклама
Мудрый кот
Сообщения: 1855
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

а о чём?
Потрогал лапой паяльник
Сообщения: 357
Зарегистрирован: Вс янв 11, 2015 20:33:32

Сообщение sergey.UA »

О том что, приостанавливается ли выполнение программы на указанных ранее строках?
Только и всего лишь.
Если не трудно, можете перейти в ветку где обсуждается Си_Си++ ?
https://radiokot.ru/forum/viewtopic.php ... 1#p3961061
Друг Кота
Аватара пользователя
Сообщения: 7112
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3960473#p3960473"]можно пропустить короткий синал[/uquote]
В особо важных случаях можно поставить один корпус с триггером и считывать его состояние, сбрасывая после чтения. В некоторых PIC микроконтроллерах периферия содержит отдельные триггеры, входы и выходы можно вывести наружу настройкой альтернативных функций. Возможно, есть триггеры и в STM.
Астролябия-сама меряет, было бы что мерять!!!
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Asmodey, зачем? Есть прерывания, в них можно флаг выставить, а потом неспешно проверять себе…
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7112
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

1. прерывания слишком ценный ресурс, чтобы тратить их на проверку состояний линий портов.
2. микроконтроллер в состоянии sleep. Пока просыпается по прерыванию, все тысячу раз может измениться. Известная ситуация - спящий микроконтроллер и энкодер, вращение которого регистрируется по прерыванию. Без триггера он будет "крутиться" либо рандомно, либо в одну сторону.

А вообще, вопрос не ко мне, а к обсуждавшим выше способы регистрации уровней на входах МК.
Астролябия-сама меряет, было бы что мерять!!!
Мудрый кот
Сообщения: 1855
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Asmodey",url="/forum/viewtopic.php?p=3962826#p3962826"]Известная ситуация - спящий микроконтроллер и энкодер, вращение которого регистрируется по прерыванию. Без триггера он будет "крутиться" либо рандомно, либо в одну сторону.[/uquote]Для этого есть таймеры МК, работающие в режим захвата. Естественно - их тактирование не должно отключаться на время сна ядра.
Друг Кота
Аватара пользователя
Сообщения: 7112
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

[uquote="jcxz",url="/forum/viewtopic.php?p=3962889#p3962889"]Естественно - их тактирование не должно отключаться на время сна ядра.[/uquote]
Тогда в некоторых случаях теряется смысл перевода мк в спящий режим. Скажем, в радиоприемной аппаратуре. Гасить нужно все, что может гадить в эфир, в том числе и тактовый генератор микроконтроллера, чтобы не ловить его гармоники.
Астролябия-сама меряет, было бы что мерять!!!
Мудрый кот
Сообщения: 1855
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Asmodey",url="/forum/viewtopic.php?p=3962895#p3962895"]Скажем, в радиоприемной аппаратуре. Гасить нужно все, что может гадить в эфир, в том числе и тактовый генератор микроконтроллера, чтобы не ловить его гармоники.[/uquote]А зачем там (в этой аппаратуре) считывать положение энкодера (двигателя что-ль)? Там есть что-то быстро-вращающееся?
Друг Кота
Аватара пользователя
Сообщения: 7112
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Не понял вопроса. Зачем двигателю энкодер?
Астролябия-сама меряет, было бы что мерять!!!
Мудрый кот
Сообщения: 1855
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Asmodey",url="/forum/viewtopic.php?p=3962910#p3962910"]Не понял вопроса. Зачем двигателю энкодер?[/uquote]Если энкодер - для двигателя, то этот самый двигатель думаю помех вносит гораздо больше чем тактовый генератор МК.
Друг Кота
Аватара пользователя
Сообщения: 7112
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Какой двигатель в радиоприемной аппаратуре? Я писал про энкодеры - органы настройки.
Астролябия-сама меряет, было бы что мерять!!!
Мудрый кот
Сообщения: 1855
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Asmodey",url="/forum/viewtopic.php?p=3962920#p3962920"]Какой двигатель в радиоприемной аппаратуре? Я писал про энкодеры - органы настройки.[/uquote]Тогда зачем с "энкодеров - органов настройки" быстро-быстро регистрировать импульсы? Вы их дрелью на высоких оборотах крутите? :)))
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1406
Зарегистрирован: Чт авг 21, 2014 11:11:48
Откуда: краснодарский край

Сообщение главный колбасист »

А как это реализовано во всех многочисленных шарманках,автомобильных и домашних музыкальных центрах ? Там же везде валкодеры давным давно вытеснили потенциометры. Засыпает его управляющий МК ?
Контактная информация:
Мудрый кот
Сообщения: 1855
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="главный колбасист",url="/forum/viewtopic.php?p=3962932#p3962932"]А как это реализовано во всех многочисленных шарманках,автомобильных и домашних музыкальных центрах ? Там же везде валкодеры давным давно вытеснили потенциометры. Засыпает его управляющий МК ?[/uquote]У меня дома такая "шарманка". Сам делал. МК засыпает. STM8L. А как иначе обеспечить потребление в покое 0.9-1мкА? И да - там есть энкодер, крутимый пальцами. И это никак не мешает ему работать нормально. Потому что время просыпания STM8 - несколько мкс, а события от энкодера поступают не чаще 100 Гц. Так что - ничего не мешает обрабатывать события энкодера по прерываниям (что я и делаю). И не надо выдумывать никаких сказочных трудностей.
Если тока не собираетесь крутить энкодер высокооборотистой дрелью. Да ещё и дрель такую поискать. :)))
Ответить

Вернуться в «Разные вопросы по МК»