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

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> Глобальный счетчик милисекунд.
adnega
сообщение Jun 21 2018, 06:32
Сообщение #46


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(juvf @ Jun 21 2018, 09:23) *
У меня было такое.... сделал таймер с тиком в 1 мс и отрубил прерывания.

А если бы не отрубил прерывания, то что?
Go to the top of the page
 
+Quote Post
juvf
сообщение Jun 21 2018, 06:37
Сообщение #47


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(adnega @ Jun 21 2018, 11:32) *
А если бы не отрубил прерывания, то что?

А они мне зачем? У меня есть полностью аппаратный таймер, зачем мне программный таймер и обработчик прерывания? Вы наверно аппратный RTC(или UART/SPI/PWM/...) не будете пользовать, т.к. можно сделать программный, с календарем, с кучей будильников, ведь программный RTC займет всего 0,003% ресурсов!!!
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 21 2018, 07:05
Сообщение #48


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(juvf @ Jun 21 2018, 09:37) *
А они мне зачем? У меня есть полностью аппаратный таймер, зачем мне программный таймер и обработчик прерывания?

Допускаю, что есть эксклюзивные задачи, в которых одного таймера до 65 мс достаточно, но в общем случае вариант
с 1мс-прерыванием гораздо универсальнее.
В некоторых библиотеках я вообще пришел к двум/трем функциям
on_init() - один раз при инициализации МК
on_mainloop() - внутри mainloop`а
on_timer() - внутри 10мс-таймера
Решение гибкое, воспроизводимое на множестве камней и архитектур. Никаких дополнительный аппаратных требований,
типа таймер с предделителем таким-то и т.п.
Я не против исключений из правил, но их не стоит выдавать за правило.
Я на atmega8 вообще без аппаратных таймеров делал программный UART-TX тупо nop-ами формировал задержку,
и работало-ведь, но я же объявляю это нормой. Сделать софтовый 1мс таймер настолько просто, что грех от этого отказываться.
И мне не понятно зачем? ТС говорил, что у него какие-то критические секции есть... думаю, больное место там.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 21 2018, 07:12
Сообщение #49


Гуру
******

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



Цитата(adnega @ Jun 21 2018, 10:05) *
И мне не понятно зачем? ТС говорил, что у него какие-то критические секции есть... думаю, больное место там.

Я думаю - там весь код одно сплошное больное место. Судя по постам ТСа... biggrin.gif
Go to the top of the page
 
+Quote Post
juvf
сообщение Jun 21 2018, 07:26
Сообщение #50


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(adnega @ Jun 21 2018, 12:05) *
Допускаю, что есть эксклюзивные задачи, в которых одного таймера до 65 мс достаточно,
65536 мс. не 65 мс, а 65 ТЫСЯЧ мс, это 65 секунд. И таймер один, но одновременно всяких интервалов и периодов можно задавать хоть сотню (как и на программном). Решение гибкое, воспроизводимое на множестве камней и архитектур. Никаких дополнительный аппаратных требований программных обработчиков, программного кода, настроек NVIC и т.п. Если зашли в критическую секцию (остановили прерывания), то таймер продолжит считать.

Цитата
тупо nop-ами формировал задержку .... я же объявляю это нормой
опечатка?

Цитата
И мне не понятно зачем?
Не знаю как объяснить? зачем в МК аппаратная перефирия? можно всё программно сделать, без таймеров, на ноп-ах и ногодрыгах.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 21 2018, 09:12
Сообщение #51


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(juvf @ Jun 21 2018, 10:26) *
зачем в МК аппаратная перефирия? можно всё программно сделать, без таймеров, на ноп-ах и ногодрыгах.

Я за полную загрузку периферии. В Cortex все унифицировали: есть одинаковый для всех SysTick и одинаковый NVIC.
За это переживать не надо.
Никогда не приходилось запрещать прерывания, а задачи решал самые разные. Для этого есть NVIC с ключевой буквой N,
типа вложенных прерываний с гибкой настройкой приоритетов. Недавно обсуждали SVC вместо критических секций.
Go to the top of the page
 
+Quote Post
Obam
сообщение Jun 21 2018, 16:08
Сообщение #52


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Цитата
долгие годы игры в покер научили меня вовремя скидывать слабую руку.

Долгие годы программирования "железа" должны были научить пользоваться документацией на это "железо" wink.gif

Цитата(Jenya7 @ Jun 21 2018, 08:12) *
то же самое - у него нет пределителя - я не могу создать тик с периодом и 1 миллисекунду.

RefMan на подсемейство K10: про PIT гл. 41 (всего 12 стр) разд. 41.4.3 волшебные слова "Chain mode" - тик будет с любым периодом. Редко у чего бывает "предделитель" в 32 разряда.


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post

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

 


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


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