Easyelectronics.ru • Просмотр темы - подкиньте библиотеку задержек для stm8 (на таймере)

Easyelectronics.ru

Электроника для всех
Текущее время: 15 авг 2018, 13:37

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: подкиньте библиотеку задержек для stm8 (на таймере)
СообщениеДобавлено: 28 фев 2018, 13:05 
Старожил
Аватара пользователя

Зарегистрирован: 13 май 2010, 01:32
Сообщения: 940
Откуда: Ижевск
на микрсекунды

_________________
Attiny13aПо20р.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: подкиньте библиотеку задержек для stm8 (на таймере)
СообщениеДобавлено: 28 фев 2018, 13:34 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 4639
500 330. Каждому.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: подкиньте библиотеку задержек для stm8 (на таймере)
СообщениеДобавлено: 28 фев 2018, 13:47 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2098
Микросекундные задержки в медленных МК завсегда делались на NOP-ах или на циклах декремента... Дольше будешь таймер настраивать и запускать, да отлавливать событие.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: подкиньте библиотеку задержек для stm8 (на таймере)
СообщениеДобавлено: 28 фев 2018, 14:05 
Старожил
Аватара пользователя

Зарегистрирован: 13 май 2010, 01:32
Сообщения: 940
Откуда: Ижевск
ну тогда милисекундную
на TIM4

_________________
Attiny13aПо20р.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: подкиньте библиотеку задержек для stm8 (на таймере)
СообщениеДобавлено: 28 фев 2018, 14:28 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 560
Откуда: Германия
https://github.com/dev26th/electronic_l ... temtimer.c

Там кварц 12 МГц, поэтому TIM2. Для 16 МГц можно и TIM4 использовать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: подкиньте библиотеку задержек для stm8 (на таймере)
СообщениеДобавлено: 28 фев 2018, 14:57 
Старожил
Аватара пользователя

Зарегистрирован: 13 май 2010, 01:32
Сообщения: 940
Откуда: Ижевск
о у меня есть такая электронная нагрузка, спасибо.

_________________
Attiny13aПо20р.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: подкиньте библиотеку задержек для stm8 (на таймере)
СообщениеДобавлено: 28 фев 2018, 15:19 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 599
Микросекунда на нопах для Stm8S003 в режиме LSI:
Код:
#define delay_1us() _asm("nop");_asm("nop");_asm("nop");_asm("nop");_asm("nop");_asm("nop");_asm("nop");_asm("nop");_asm("nop");_asm("nop");_asm("nop");_asm("nop");_asm("nop");_asm("nop");


Милисекунда на TIM4:

Константы и флаги:
Код:
unsigned char const TIM4_PSCR=0x07;
unsigned char const TIM4_PERIOD=124;
bool flag_end=1;


Конфигурирование таймера:
Код:
TIM4->PSCR = TIM4_PSCR;
TIM4->ARR = TIM4_PERIOD;
TIM4->SR1 &=~TIM4_SR1_UIF; //сброс флага прерывания TIM4_ClearFlag(TIM4_FLAG_UPDATE);    
TIM4->IER   |= TIM4_IER_UIE; //прерывание включено
TIM4->CR1 |= TIM4_CR1_CEN; // запустить таймер
_asm("rim");


Процедура счетчика:
Код:
void TimingDelayDec(void) // прерывание 1ms
{
  if (TimingDelay != 0x00)
          { TimingDelay--;}
else
{flag_end=0;}
}


В обработчике прерывания:
Код:
INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23)
{
   
/* Update remaining Delay every 1 ms interrupt*/
  TimingDelayDec();
  TIM4->SR1&=~TIM4_SR1_UIF;

}


Ну и соответсвенно не забыть прописать в обработчике, что функция внешняя


flag_end=0 - Счет закончился, проверяется где либо в главном цикле.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: подкиньте библиотеку задержек для stm8 (на таймере)
СообщениеДобавлено: 28 фев 2018, 15:48 
Старожил
Аватара пользователя

Зарегистрирован: 13 май 2010, 01:32
Сообщения: 940
Откуда: Ижевск
спасибо
ещё варианты

я не нашёл сколько тактов тратится на прерывание от счётчика, где это написано ?
я примерно понимаю он там все РОН сохраняет, затем выгружает.

_________________
Attiny13aПо20р.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: подкиньте библиотеку задержек для stm8 (на таймере)
СообщениеДобавлено: 28 фев 2018, 17:30 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 3480
Откуда: Кемеровская область, Киселевск
А зачем тебе? ты понимаешь что ты порешь чушь? Не надо колхозить, это не эстетично.

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: подкиньте библиотеку задержек для stm8 (на таймере)
СообщениеДобавлено: 28 фев 2018, 17:43 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 599
Количество тактов - не понимаю для чего надо ?
При таком построении как описано выше функция не блокирует основной цикл, но как следствие посчитать какая именно будет задержка при крайнем срабатывании прерывания - не представляется возможным, так как это зависит от точки где проверяется флаг и сколько тактов осталось до самой проверки. Если нужна точность (частотомеры и прочая фигня) функция будет другой.
P\S Что хочешь сделать то ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: подкиньте библиотеку задержек для stm8 (на таймере)
СообщениеДобавлено: 01 мар 2018, 15:39 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 297
Откуда: Новый Уренгой
Может я чегото не понял, но библиотеки тут не нужны вовсе.
Код не на си, но смысл понятен.

В прерывании таймера выполняется это
Код:
   interrupt TIM4update
TIM4update
   tnz      cntr        ;  cntr = 0 ?
   jreq   tiout         ;  если да выходим
   dec      cntr        ;  иначе cntr = cntr -1
tiout
   bres   TIM4_SR, #0   ;  cбросим признак прерывания
   iret


Функция delay
Код:
delay   
   mov      cntr,   #10   ;  запишем количество тактов таймера для паузы
wait
   tnz      cntr   ;  cntr = 0 ?
   jrne   wait     ;  если нет ждем дальше (go to wait)
   ret             ;  cntr = 0, значит 10 тактов таймера выждали, выходим


Использование
Код:
   call delay   ; ждем 10 тактов


P.S. Кстати в многозадачности использую именно этот подход.
(когда один процесс ждет задержки, а другие выполняются. Например, выход шим, мигание светодиодом, опрос клавиатуры)

_________________
vk.com/casusnur


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: подкиньте библиотеку задержек для stm8 (на таймере)
СообщениеДобавлено: 04 мар 2018, 13:17 
Старожил
Аватара пользователя

Зарегистрирован: 13 май 2010, 01:32
Сообщения: 940
Откуда: Ижевск
ладно,спасибо.

_________________
Attiny13aПо20р.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB