Страница 108 из 130

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

Добавлено: Пт янв 15, 2021 16:00:05
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, что сильно расширяет возможности.

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

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

DMA, о котором зачем-то сказано выше, рассматривать в данном случае не стоит.

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

Добавлено: Пт янв 15, 2021 17:17:50
sergey.UA
По поводу работы программы в микроконтроллере, касательно STM8, я так и думал.
Проворачивал нечто подобное, разными способами с камнями PIC16Fxxx.
А по поводу работы функции getchar() и приостановки выполнения программы в Visual Studio, спрошу уже в более подходящей ветке.
Спасибо коллеги что реагируете. :)

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

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

Но, понятно, что это не относится к STM8S. Как, в принципе, и stdio…

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

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

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

Добавлено: Пт янв 15, 2021 20:19:07
sergey.UA
Вот блин, неужели я спрашивал про ПРИЗНАК КОНЦА ФАЙЛА - EOF?!!!

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

Добавлено: Сб янв 16, 2021 14:58:45
jcxz
а о чём?

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

Добавлено: Сб янв 16, 2021 17:53:26
sergey.UA
О том что, приостанавливается ли выполнение программы на указанных ранее строках?
Только и всего лишь.
Если не трудно, можете перейти в ветку где обсуждается Си_Си++ ?
https://radiokot.ru/forum/viewtopic.php ... 1#p3961061

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

Добавлено: Вт янв 19, 2021 09:40:56
Asmodey
[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3960473#p3960473"]можно пропустить короткий синал[/uquote]
В особо важных случаях можно поставить один корпус с триггером и считывать его состояние, сбрасывая после чтения. В некоторых PIC микроконтроллерах периферия содержит отдельные триггеры, входы и выходы можно вывести наружу настройкой альтернативных функций. Возможно, есть триггеры и в STM.

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

Добавлено: Вт янв 19, 2021 09:58:44
Eddy_Em
Asmodey, зачем? Есть прерывания, в них можно флаг выставить, а потом неспешно проверять себе…

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

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

А вообще, вопрос не ко мне, а к обсуждавшим выше способы регистрации уровней на входах МК.

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

Добавлено: Вт янв 19, 2021 13:01:23
jcxz
[uquote="Asmodey",url="/forum/viewtopic.php?p=3962826#p3962826"]Известная ситуация - спящий микроконтроллер и энкодер, вращение которого регистрируется по прерыванию. Без триггера он будет "крутиться" либо рандомно, либо в одну сторону.[/uquote]Для этого есть таймеры МК, работающие в режим захвата. Естественно - их тактирование не должно отключаться на время сна ядра.

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

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

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

Добавлено: Вт янв 19, 2021 13:37:18
jcxz
[uquote="Asmodey",url="/forum/viewtopic.php?p=3962895#p3962895"]Скажем, в радиоприемной аппаратуре. Гасить нужно все, что может гадить в эфир, в том числе и тактовый генератор микроконтроллера, чтобы не ловить его гармоники.[/uquote]А зачем там (в этой аппаратуре) считывать положение энкодера (двигателя что-ль)? Там есть что-то быстро-вращающееся?

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

Добавлено: Вт янв 19, 2021 13:46:28
Asmodey
Не понял вопроса. Зачем двигателю энкодер?

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

Добавлено: Вт янв 19, 2021 14:03:04
jcxz
[uquote="Asmodey",url="/forum/viewtopic.php?p=3962910#p3962910"]Не понял вопроса. Зачем двигателю энкодер?[/uquote]Если энкодер - для двигателя, то этот самый двигатель думаю помех вносит гораздо больше чем тактовый генератор МК.

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

Добавлено: Вт янв 19, 2021 14:08:59
Asmodey
Какой двигатель в радиоприемной аппаратуре? Я писал про энкодеры - органы настройки.

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

Добавлено: Вт янв 19, 2021 14:27:26
jcxz
[uquote="Asmodey",url="/forum/viewtopic.php?p=3962920#p3962920"]Какой двигатель в радиоприемной аппаратуре? Я писал про энкодеры - органы настройки.[/uquote]Тогда зачем с "энкодеров - органов настройки" быстро-быстро регистрировать импульсы? Вы их дрелью на высоких оборотах крутите? :)))

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

Добавлено: Вт янв 19, 2021 14:36:53
главный колбасист
А как это реализовано во всех многочисленных шарманках,автомобильных и домашних музыкальных центрах ? Там же везде валкодеры давным давно вытеснили потенциометры. Засыпает его управляющий МК ?

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

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