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

 
 
> STM8 как правильно сделать функцию Delay
-AZ-
сообщение Dec 15 2015, 13:20
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 20-09-15
Пользователь №: 88 488



Кто плотно сталкивался с подобной задачей, как правильно написать универсальную функцию Delay для STM8
Пробывал такой вариант, так вот uS до 7-10 не чувствует, да и перевести в сон процессор нельзя...насколько понимаю если уводить в сон, то только по прерыванию делать?
Кто как реализовывает?

Код
void delays_init (void)
{
  CLK_PCKENR1_bit.PCKEN12 = 1;
  TIM4_PSCR_bit.PSC = 0x01;    
  TIM4_EGR_bit.UG = 1;        
  TIM4_CR1_bit.CEN = 1;      
}

void delay_us (unsigned char us)
{
  TIM4_CNTR = 0;
  while (TIM4_CNTR < us);  
}

void delay_ms (unsigned int ms)
{
  ms = ms<<2;
  while (ms--) delay_us(250);
}


Сообщение отредактировал IgorKossak - Dec 15 2015, 19:17
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Tarbal
сообщение Jan 16 2016, 19:17
Сообщение #2


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

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



Тады ой. В реалтайме может не получиться если задержка в несколько циклов процессора. В таком случае я бы просто считывал значения счетчика системного таймера из регистра и смотрел на дельту в цикле. Важно считывать значения таймера в беззнаковую переменную, тогда переполнение счетчика таймера между двумя отсчетами будет пофиг -- дельта все равно получится правильной.
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Jan 16 2016, 20:10
Сообщение #3


Местный
***

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



Цитата(Tarbal @ Jan 16 2016, 22:17) *
я бы просто считывал значения счетчика системного таймера из регистра и смотрел на дельту в цикле.

Если крутиться в цикле... зачем тогда таймер??? Откуда в СТМ8 системный таймер??? Какой разрядности счётчик... 32 бита??? Ну и сколько это займёт по времени???
Нет никакого смысла в микросекундных задержках... уже сказали... Для единичных случаев всё равно как... в остальных - юзать железо... таймера...

Цитата(Spider @ Dec 17 2015, 17:23) *
В stm8 вообще сложно добиться нужных задержек даже с nop, в виду особенностей работы внутреннего конвейера.

При желании можно... но действительно геморно...
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Jan 17 2016, 14:49
Сообщение #4


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

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



Цитата(HHIMERA @ Jan 17 2016, 00:10) *
Если крутиться в цикле... зачем тогда таймер???


Я не знаком с STM8 архитектурой, но ведь вроде поднимался вопрос о проблеме свяанной с неповторяемостью задержки, исполненной на програмном цикле, из-за конвейера?
Этот подход устранит проблему.

Цитата(HHIMERA @ Jan 17 2016, 00:10) *
Какой разрядности счётчик... 32 бита??? Ну и сколько это займёт по времени???


Такой же какой и регистр таймера. Подход отход займет пару команд исполнить -- считать и сравнить, а задержка будет такая какую запросят с толерансом на подход отход.

Цитата(HHIMERA @ Jan 17 2016, 00:10) *
Нет никакого смысла в микросекундных задержках... уже сказали...


Всяко бывает. Убедите ТС в этом.

Цитата(HHIMERA @ Jan 17 2016, 00:10) *
Для единичных случаев всё равно как... в остальных - юзать железо... таймера...


Кому все равно, а кому надо, чтобы работало не как получится, а как надо.

Цитата(HHIMERA @ Jan 17 2016, 00:10) *
При желании можно... но действительно геморно...


Профессиональный подход действительно налагает дополнительную ответственность, но каждый выбитрает сам куда ему надо идти.
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Jan 17 2016, 17:00
Сообщение #5


Местный
***

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



Цитата(Tarbal @ Jan 17 2016, 17:49) *
Я не знаком с STM8 архитектурой, но ведь вроде поднимался вопрос о проблеме свяанной с неповторяемостью задержки, исполненной на програмном цикле, из-за конвейера?
Этот подход устранит проблему.

Не устранит... да это особо и не нужно...
Ради прикола... как-то замутил частотомер на 103-ем... на Си... выравнивал НОПами... Геморно... после каждого исправления/дополнения приходилось всё делать заново... но работало чётко... но только ради прикола...
Хардварно - вообще без проблем... всё такт в такт...
Цитата
Такой же какой и регистр таймера. Подход отход займет пару команд исполнить -- считать и сравнить, а задержка будет такая какую запросят с толерансом на подход отход.

8 бит??? 16мкС максимум??? Этого даже на 1-wire не хватит... Да и толку... прерывания сделают своё грязное дело... Или опять по старой привычке их запрещать???
Цитата
Всяко бывает. Убедите ТС в этом.

Зачем??? Сам убедится...
Цитата
Кому все равно, а кому надо, чтобы работало не как получится, а как надо.

Кому надо... пусть привыкает к хардварным... или полухардварным решениям...
Даже на том же 103-ем... 1-wire... как сказал уже Паша... таймер с компараторами и на прерывании...
Цитата
Профессиональный подход действительно налагает дополнительную ответственность, но каждый выбитрает сам куда ему надо идти.

Не... если кому-то нравится тратить таймер просто так... то я его найду где применить... Их там и так чуть-чуть в младшеньких... всего три...
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Jan 18 2016, 03:32
Сообщение #6


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

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



Цитата(HHIMERA @ Jan 17 2016, 20:00) *
Не... если кому-то нравится тратить таймер просто так... то я его найду где применить... Их там и так чуть-чуть в младшеньких... всего три...


Разве там нет свободнобегущего таймера?
Вроде говорили о компараторах, а они как раз и живут на свободнобегущем таймере. Вот его регистр и читать. С конфигурацией таймера ничего делать не надо. Просто читать сам счетчик.
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Jan 18 2016, 07:24
Сообщение #7


Местный
***

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



Цитата(Tarbal @ Jan 18 2016, 06:32) *
С конфигурацией таймера ничего делать не надо. Просто читать сам счетчик.

biggrin.gif
Зашибись!!! STM8S003... три таймера... два из них 16-и... один восьмибитный... На таймерах висит... IR-датчик... 1-wire и семисегментник с автокоррекцией разнояркости разрядов... В итоге - ни один из них не является свободнобегущим... Дальше... зачем здесь нужны микросекунды... если всё или хардварно... или полухардварно??? Как таймером в цикле мерять мкС... если в любой момент прилетит прерывание... и может не одно... и даже одно может прервать другое???

Цитата(Эдди @ Jan 18 2016, 09:26) *
1-wire на STM8 только через задницу возможно сделать

Да всё там нормально... На STM8L тем более...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- phenixs   STM8 как правильно сделать функцию Delay   Dec 15 2015, 13:20
- - jcxz   А каким местом STM8 относится к ARM??   Dec 15 2015, 18:08
|- - IgorKossak   Перенёс.   Dec 15 2015, 19:18
- - uriy   микросекундные задержки я делаю просто бесполезным...   Dec 16 2015, 05:43
|- - phenixs   Цитата(uriy @ Dec 16 2015, 08:43) микросе...   Dec 16 2015, 07:30
- - _Pasha   да. задержки дело мутное. пришлось на таймерах ...   Dec 16 2015, 11:19
|- - phenixs   Цитата(_Pasha @ Dec 16 2015, 14:19) да. з...   Dec 16 2015, 14:13
|- - scifi   Цитата(phenixs @ Dec 16 2015, 17:13) А ка...   Dec 16 2015, 14:19
|- - phenixs   Цитата(scifi @ Dec 16 2015, 17:19) 1nS - ...   Dec 16 2015, 14:26
- - scifi   Когда требуемая задержка приближается по длительно...   Dec 16 2015, 14:35
|- - phenixs   Цитата(scifi @ Dec 16 2015, 17:35) Когда ...   Dec 16 2015, 14:39
|- - scifi   Цитата(phenixs @ Dec 16 2015, 17:39) и ин...   Dec 16 2015, 14:48
|- - phenixs   Цитата(scifi @ Dec 16 2015, 17:48) Видимо...   Dec 16 2015, 15:11
|- - scifi   Цитата(phenixs @ Dec 16 2015, 18:11) Прим...   Dec 16 2015, 20:09
|- - Эдди   Цитата(phenixs @ Dec 16 2015, 18:11) Прим...   Jan 18 2016, 06:26
- - Spider   В stm8 вообще сложно добиться нужных задержек даже...   Dec 17 2015, 14:23
|- - phenixs   Цитата(Spider @ Dec 17 2015, 17:23) В stm...   Dec 17 2015, 16:50
- - _Pasha   вот я с 1wire на совершенно отфонарном пине сделал...   Dec 17 2015, 15:36
|- - HHIMERA   Цитата(_Pasha @ Dec 17 2015, 18:36) вот я...   Dec 17 2015, 19:34
- - Tarbal   Цитата(phenixs @ Dec 15 2015, 17:20) Кто ...   Jan 16 2016, 02:04
- - uriy   ТС нужны микросекундные задержки! С миллисекун...   Jan 16 2016, 19:04
||- - _Pasha   Цитата(HHIMERA @ Jan 16 2016, 23:10) Отку...   Jan 17 2016, 07:18
||- - Эдди   Цитата(HHIMERA @ Jan 18 2016, 10:24) Да в...   Jan 18 2016, 19:08
||- - HHIMERA   Цитата(Эдди @ Jan 18 2016, 23:08) У l-ки,...   Jan 18 2016, 19:37
||- - Эдди   Цитата(HHIMERA @ Jan 18 2016, 22:37) LCD ...   Jan 18 2016, 19:54
||- - HHIMERA   Цитата(Эдди @ Jan 18 2016, 23:54) И в ито...   Jan 18 2016, 20:07
|||- - Эдди   Цитата(HHIMERA @ Jan 18 2016, 23:07) Да и...   Jan 18 2016, 22:03
||- - jcxz   Цитата(Эдди @ Jan 19 2016, 01:54) И в ито...   Jan 19 2016, 08:06
||- - Tarbal   Цитата(jcxz @ Jan 19 2016, 12:06) при опр...   Jan 19 2016, 12:06
|||- - jcxz   Цитата(Tarbal @ Jan 19 2016, 18:06) Не зн...   Jan 19 2016, 14:51
|||- - Эдди   Цитата(jcxz @ Jan 19 2016, 17:47) процеду...   Jan 19 2016, 14:51
||||- - HHIMERA   Цитата(Эдди @ Jan 19 2016, 18:51) Если ну...   Jan 19 2016, 15:13
|||||- - Эдди   Цитата(HHIMERA @ Jan 19 2016, 18:13) Ну п...   Jan 19 2016, 15:58
||||- - jcxz   Цитата(Эдди @ Jan 19 2016, 20:51) Фигасе,...   Jan 21 2016, 03:35
||||- - Tarbal   Цитата(jcxz @ Jan 21 2016, 06:35) Это хор...   Jan 21 2016, 13:06
||||- - Эдди   Цитата(Tarbal @ Jan 21 2016, 16:06) Вы не...   Jan 21 2016, 15:05
|||||- - Tarbal   Цитата(Эдди @ Jan 21 2016, 19:05) ++ Жут...   Jan 21 2016, 18:33
|||||- - Эдди   Цитата(Tarbal @ Jan 21 2016, 21:33) Такое...   Jan 22 2016, 08:40
|||||- - Tarbal   Цитата(Эдди @ Jan 22 2016, 12:40) Если на...   Jan 22 2016, 19:45
||||- - jcxz   Цитата(Tarbal @ Jan 21 2016, 19:06) Да у ...   Jan 22 2016, 04:39
|||- - Tarbal   Цитата(jcxz @ Jan 19 2016, 18:51) Вы не п...   Jan 19 2016, 15:01
||- - Эдди   Цитата(jcxz @ Jan 19 2016, 11:06) В общем...   Jan 19 2016, 13:47
|- - HHIMERA   Ну и что??? Для микросекунд он всё равно не годитс...   Jan 17 2016, 10:19
- - Tarbal   Разные бывают задачи. Вы знакомы с апликацией ТС? ...   Jan 18 2016, 13:26
|- - HHIMERA   Цитата(Tarbal @ Jan 18 2016, 16:26) Тщате...   Jan 18 2016, 13:42
|- - Tarbal   Цитата(HHIMERA @ Jan 18 2016, 17:42) Вы о...   Jan 18 2016, 14:56
|- - HHIMERA   Цитата(Tarbal @ Jan 18 2016, 17:56) Ну а ...   Jan 18 2016, 15:40
|- - Tarbal   Цитата(HHIMERA @ Jan 18 2016, 19:40) Чтоб...   Jan 18 2016, 16:58
|- - HHIMERA   Цитата(Tarbal @ Jan 18 2016, 20:58) предл...   Jan 18 2016, 17:05
- - Tarbal   Верно. Я напрасно теряю время.   Jan 18 2016, 17:53


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 03:05
Рейтинг@Mail.ru


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