реклама на сайте
подробности

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> STM8 как правильно сделать функцию Delay
Эдди
сообщение Jan 19 2016, 14:51
Сообщение #46


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Цитата(jcxz @ Jan 19 2016, 17:47) *
процедур, которые могут длительно выполняться (десятки мсек) и блокировать процесс

Фигасе, это где ж такое видано — блокировать на бешеное время?
Если нужно что-то долгое делать, то выполнять порциями по значению таймера. Но лучше все на аппаратную реализацию спихнуть, тогда никаких тормозов не будет.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Jan 19 2016, 15:01
Сообщение #47


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(jcxz @ Jan 19 2016, 18:51) *
Вы не поняли. Я не говорю, что это нельзя делать. Я говорю, что в этот цикл (в котором опрашивается кнопка) лучше не включать вызовы других процедур, которые могут длительно выполняться (десятки мсек) и блокировать процесс скана кнопок на десятки мсек ибо будет некомфортно работать с такими кнопками из-за задержек их реакции.


RC-цепочка никак не поможет в борьбе с дребезгом сама по себе. Она поможет только если сигнал после неё поступает на вход, имеющий гистерезис (триггер Шмидта).
А самая надёжная аппаратная защита от дребезга - парафазный вход set/reset (RS-триггер).


Понятно теперь. Но я всегда писал все процедуры на проход, чтобы как можно быстрее вылетали и все ставил в этот цикл. Проблема была только один раз, когда вычисление занимало 60 миллисекунд, но я разбил на стадии по 5 миллисекунд (AVR8535) и оформил как машину состояний. Кстати если использовать технику "резинового времени", то одноразовые переборы не будут играть роли если интегрально нет перебора.
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Jan 19 2016, 15:13
Сообщение #48


Местный
***

Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126



Цитата(Эдди @ Jan 19 2016, 18:51) *
Если нужно что-то долгое делать, то выполнять порциями по значению таймера. Но лучше все на аппаратную реализацию спихнуть, тогда никаких тормозов не будет.

100% !!!
Пнул... и пусть молотит... Ну потеряется каких-то там 100-150 байт флэша на сквозной реализации 1-wire... ну и фиг с ними...
Go to the top of the page
 
+Quote Post
Эдди
сообщение Jan 19 2016, 15:58
Сообщение #49


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Цитата(HHIMERA @ Jan 19 2016, 18:13) *
Ну потеряется каких-то там 100-150 байт флэша на сквозной реализации 1-wire... ну и фиг с ними...

Если потеряются, значит, камушек неправильно выбран. Или слишком высокая скорость "общения". Как оно может потеряться?
Заполнили быстренько буфер с данными, пнули DMA/TIM, выполняем что-то. Как только увидели, что флаг окончания передачи данных выставлен, обработали принятые данные. И так далее.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 21 2016, 03:35
Сообщение #50


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Эдди @ Jan 19 2016, 20:51) *
Фигасе, это где ж такое видано — блокировать на бешеное время?
Если нужно что-то долгое делать, то выполнять порциями по значению таймера. Но лучше все на аппаратную реализацию спихнуть, тогда никаких тормозов не будет.

Это хорошо Вам если Вы целиком всё ПО пишете сами. А если у Вас команда из нескольких человек, которые пишут помодульно? И потом нужно в этом общем цикле (а-ля корпоративная многозадачность) собрать вызовы разных чужих функций, каждая написанная в своём стиле и когда не каждый член команды в состоянии адекватно построить алгоритм с ограничением времени работы функции.
Элементарная ситуация:
Есть ресурс с блокирующим доступом к нему (например - драйвер обмена по какому-то интерфейсу, например - SPI, на котором висит несколько разных устройств).
К этому ресурсу обращается одна из функций из этого общего цикла для того, чтобы считать скажем пару байт по SPI с одного из устройств на шине. Транзакция вроде короткая и обычно занимает мало времени. Но!...
Если ресурс оказывается занят (из другой задачи ОС другая функция в этот момент осуществляет длительную транзакцию с другим устройством на этой-же самой SPI), то вышеуказанная функция из общего цикла будет
теперь ждать длительное время освобождения ресурса. Вот тут и будут происходить редко случающиеся длительные задержки в этом общем цикле приводящие к редким сбоям в опросе клавиш.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Jan 21 2016, 13:06
Сообщение #51


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(jcxz @ Jan 21 2016, 06:35) *
Это хорошо Вам если Вы целиком всё ПО пишете сами. А если у Вас команда из нескольких человек, которые пишут помодульно? И потом нужно в этом общем цикле (а-ля корпоративная многозадачность) собрать вызовы разных чужих функций, каждая написанная в своём стиле и когда не каждый член команды в состоянии адекватно построить алгоритм с ограничением времени работы функции.
Элементарная ситуация:
Есть ресурс с блокирующим доступом к нему (например - драйвер обмена по какому-то интерфейсу, например - SPI, на котором висит несколько разных устройств).
К этому ресурсу обращается одна из функций из этого общего цикла для того, чтобы считать скажем пару байт по SPI с одного из устройств на шине. Транзакция вроде короткая и обычно занимает мало времени. Но!...
Если ресурс оказывается занят (из другой задачи ОС другая функция в этот момент осуществляет длительную транзакцию с другим устройством на этой-же самой SPI), то вышеуказанная функция из общего цикла будет
теперь ждать длительное время освобождения ресурса. Вот тут и будут происходить редко случающиеся длительные задержки в этом общем цикле приводящие к редким сбоям в опросе клавиш.


Да у вас организационная проблема. Нужен архитектор или кто-то еще кто бы принуждал писать правильно. Сочувствую вам. Мне приходилось работать в подобных коллективах с иррационально мыслящим начальством. Вы не сможете ничего изменить. Я бы на вашем месте поискал работу в более здоровом коллективе.
Go to the top of the page
 
+Quote Post
Эдди
сообщение Jan 21 2016, 15:05
Сообщение #52


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Цитата(Tarbal @ Jan 21 2016, 16:06) *
Вы не сможете ничего изменить. Я бы на вашем месте поискал работу в более здоровом коллективе.

++

Жутко подобное читать!
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Jan 21 2016, 18:33
Сообщение #53


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(Эдди @ Jan 21 2016, 19:05) *
++

Жутко подобное читать!


Вам просто везло. Такое довольно часто встречается если начальство неумное.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 22 2016, 04:39
Сообщение #54


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Tarbal @ Jan 21 2016, 19:06) *
Да у вас организационная проблема. Нужен архитектор или кто-то еще кто бы принуждал писать правильно. Сочувствую вам. Мне приходилось работать в подобных коллективах с иррационально мыслящим начальством. Вы не сможете ничего изменить. Я бы на вашем месте поискал работу в более здоровом коллективе.

Начальник уже сам начал это понимать. Сам на днях сказал, что в новых проектах будет по другому. Так что - есть надежда wink.gif
Go to the top of the page
 
+Quote Post
Эдди
сообщение Jan 22 2016, 08:40
Сообщение #55


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Цитата(Tarbal @ Jan 21 2016, 21:33) *
Такое довольно часто встречается если начальство неумное.

Если начальник — идиот, надо постараться перетащить его на свою сторону и объяснить, как надо правильно.
Если он упорот совершенно и ни в какую не хочет меняться, то только один выход остается — свалить нафиг с такого гадюшника!
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Jan 22 2016, 19:45
Сообщение #56


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(Эдди @ Jan 22 2016, 12:40) *
Если начальник — идиот, надо постараться перетащить его на свою сторону и объяснить, как надо правильно.
Если он упорот совершенно и ни в какую не хочет меняться, то только один выход остается — свалить нафиг с такого гадюшника!

Я не знаю. Мне не удавалось убедить начальника. Или упоротые были или свою игру вели. Рациональные аргументы не достигали мозга.
Go to the top of the page
 
+Quote Post

4 страниц V  « < 2 3 4
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th April 2024 - 11:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01519 секунд с 7
ELECTRONIX ©2004-2016