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

 
 
5 страниц V  « < 2 3 4 5 >  
Reply to this topicStart new topic
> Прерывание в прерывании, Для реализации Super Simple Tasker
Forger
сообщение Nov 7 2017, 21:44
Сообщение #46


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

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(AlexandrY @ Nov 7 2017, 23:41) *
Да чего сейчас только нету в этих ARM-ах.


Но, выходит, что не все об этом знают ... wink.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 7 2017, 21:46
Сообщение #47


Гуру
******

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



Цитата(DASM @ Nov 7 2017, 21:05) *
вы шину GPIO не захватили, а по ней сейчас другой поток занят важным делом - писк на зумер выводит.

А зачем её захватывать? Как почту/телефон/телеграф/интернет? (сегодняшняя дата навеяла wink.gif
Во всех МК на Cortex-M с которыми мне приходилось иметь дело, периферия GPIO имеет средства для атомарной модификации отдельных битов порта (ну или хотя-бы находится в области bit-band). Можете пиликать вашим динамиком сколько угодно. После того как ознакомитесь с мануалом на периферию своего МК.

Цитата(DASM @ Nov 7 2017, 21:05) *
Первое, что приходит в голову так:sm.gif о как, у меня также, только я не знал что это SST называется. Просто каруселька и все

У Вас на вашей карусельке в любимом суперцикле, пока процессор сидит в очередной паузе (для ногодрочества динамиком), никакая полезная работа не выполняется. А в случае с РТОС на время такой паузы, время CPU будет передано другой менее приоритетной задаче, которая в нём сейчас нуждается, либо процессор будет выполнять WFI/WFE экономя миллиамперы. А у вас просто будет всё тупо висеть и впустую жрать миллиамперы.
Вот в этом как раз и есть главное преимущество РТОС с её задачами/потоками от суперцикла. И с современными объёмами ОЗУ в МК, как правило не составляет труда выделить каждой задаче необходимое кол-во стека. Ну если руки конечно не совсем из неподходящего места растут, то памяти это много не займёт.
Go to the top of the page
 
+Quote Post
DASM
сообщение Nov 7 2017, 22:35
Сообщение #48


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Ну не знаю, у меня на Ардуино все проще, а на малинке тем более, на питоне. fman.gif А у вас сложно как то, dma какие то, А как это "зачем захватывать". Под gpio драйвер надо, может gpio в Калифорнии висят и управляются какими нибудь post запросами. А вот тут вроде проще https://developer.microsoft.com/en-us/windo...les/helloblinky но я не уверен, что win10 iot влезет в процессор без mmu. О, кстати идея, сейчас залью винду эту на малину, интересно какая частота в цикле мигания получится
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 8 2017, 06:13
Сообщение #49


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(DASM @ Nov 7 2017, 23:01) *
А где тут DMA и что и куда оно грузит?

О, это длинная запутанная история - https://geektimes.ru/post/284248/

Цитата(DASM @ Nov 8 2017, 00:35) *
Ну не знаю, у меня на Ардуино все проще, а на малинке тем более, на питоне. fman.gif

Эт как гнаться за семью зайцами.
Нет, хардварная платформа должна быть своя.
Тогда из нее можно выжать максимум: и прерывания в прерываниях, и SST, и RTOS, и всё вместе.
Go to the top of the page
 
+Quote Post
AVR
сообщение Nov 8 2017, 08:44
Сообщение #50


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Forger @ Nov 7 2017, 22:36) *
ОК, слив опять защитан. Счет 2:0 sm.gif

У меня сей уважаемый господин (под псевдонимом dasm), уже давно находится в списке игнора форума.
Ради него старался и нашел такую опцию. Ничего не потерял cool.gif


--------------------
Go to the top of the page
 
+Quote Post
Forger
сообщение Nov 8 2017, 12:53
Сообщение #51


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

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(AVR @ Nov 8 2017, 11:44) *
Ради него старался и нашел такую опцию. Ничего не потерял cool.gif

Хм, удобная функция, спасибо за подсказку! Пригодится wink.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Студент заборстр...
сообщение Nov 8 2017, 16:41
Сообщение #52


Местный
***

Группа: Участник
Сообщений: 317
Регистрация: 16-09-17
Пользователь №: 99 334



Цитата(Forger @ Nov 7 2017, 16:02) *
Цитата(arhiv6 @ Nov 7 2017, 15:00) *

Super Simple Tasker - один из вариантов реализации вытесняющей многозадачности для микроконтроллеров.


Может быть я стал слишком старый и "отстал от поезда", поэтому на всякий случай спрошу: НАФИГА ???
Чем не годится готовая RTOS? В частности freeRTOS позволяет использовать вложенные прерывания без подобного "дрочева".... laughing.gif

Сейчас каждый джуниор считает своим долгом написать свою RTOS biggrin.gif
При этом НИХРЕНА в этом не понимая.
И при этом считает, что его RTOS - это какое-то откровение в мире RTOS.

Кто из нас по молодости не писал свою RTOS, и кто из нас в старости не осознал, что маялся дурью и тратил время на всякую не нужную ерунду biggrin.gif

Я сейчас вспоминаю сколько времени я на это угрохал. Лучше б тёлок молодых порол. Тогда они мне ещё теоретически могли "дать". Не то что сейчас




Цитата(arhiv6 @ Nov 7 2017, 16:17) *
Как минимум, это интересно - попробовать разные подходы к построению ПО.

Вот вот.
О чём я и сказал

Сообщение отредактировал Студент заборстроительного - Nov 8 2017, 16:38
Go to the top of the page
 
+Quote Post
Forger
сообщение Nov 8 2017, 20:41
Сообщение #53


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

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Студент заборстроительного @ Nov 8 2017, 19:41) *
Я сейчас вспоминаю сколько времени я на это угрохал. Лучше б тёлок молодых порол.

Аналогичная ситуация! biggrin.gif
Но только мне удалось наваять свою простейшую ось относительно быстро, после "наиграться" с ней и в итоге поставил готовую чужую и больше этот вопрос не поднимал.

С другой стороны, до сих пор вот мне очень интересно познавать новые фишки в мире эмбедед ПО, в частности, относительно недавно "изучал" .netmicro, недавно чуть "по-тискал" micro java (или как там она зовется) ....
Короче, удалил их к чертовой бабушке - рано еще, времена еще не пришли, нынешние МК пока еще слишком ватные для таких "вещей".

Кстати, в данный момент уперся в необходимость применения такой вещи (пишу под плюсами) - паттерн "фабрика объектов", а совсем недавно освоил паттерн "делегатов" .
Удивительно, но теперь они реально мне понадобились, хотя в свое время хихикал над другими: "гы-гы, плюсы, шаблоны, паттерны" ...

Но, ребяты, изобретать самодельный колхозный шедулер = городить "велосипед с квадратными колесами" "из говна и палок" - это уже, прям, лютая дикость 01.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 8 2017, 20:49
Сообщение #54


Гуру
******

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



Цитата(Forger @ Nov 7 2017, 21:36) *
Для тех, кто не в теме: в ARM Cortex есть такой механизм - BitBanging (вроде правильно написал).

может есть, а может и нет.
Go to the top of the page
 
+Quote Post
Forger
сообщение Nov 8 2017, 20:54
Сообщение #55


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

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(jcxz @ Nov 8 2017, 23:49) *
может есть, а может и нет.

Суть от этого не меняется - лаконичный код под классической RTOS после переписывания под SST превращается в банальный говнокод (см. посты #31 и #33).
Отсюда мораль: если вы видите перед собой говнокод, то смотрите на тип шедулера. Если стоит SST, "карусельку" или "супер-мега-гипер-луп", то шансы для этого кода все еще есть ...
Если этот говонокод умудрились соорудить даже под классической RTOS, то код - в помойку, автора кода - за кассу в "магнит" sm.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
DASM
сообщение Nov 8 2017, 21:23
Сообщение #56


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Да уж.. сколько чудных открытий sm.gif человек недавно паттерны открыл и берется судить о говнокоде. Ничего, склетон освоите, посетителя - про свой прошлый код также писать будете. А только все это фигня, сейчас функциональное программирование в моде. И снова все говнокодом покажется. Большая ошибка судить людей по паре постов, думая что они ничего не знают, а я такой плюсанутый и ртоснутый на всю голову. С возрастом пойдет
Go to the top of the page
 
+Quote Post
Forger
сообщение Nov 8 2017, 23:29
Сообщение #57


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

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(DASM @ Nov 9 2017, 00:23) *
склетон освоите

Паттерна "склетон" не существует, но вангую, что речь шла про синглтон.
Опиской это не назовешь, поэтому очевидно вы даже не пользовались им ни разу ...
Короче, счет 3:0

К слову: по-началу, по неопытности я использовал синглтон слишком активно где надо и не надо ... но это было давным-давно и больше так не делаю ))

Цитата(DASM)
"С возрастом пройдет"

Суперлуп (или "карусельки") проходят у подавляющего большинства настоящих программеров (не ардуинщиков или куберов) еще в "ясельном" возрасте.
Но, судя по всему, еще попадаются редкие уникальные исключения....

Расслабьтесь, никто не собирается менять ваш образ мышления: "поздно пить боржоми ..." sm.gif

Цитата
Большая ошибка судить людей по паре постов, думая что они ничего не знают

Однако, ваших "пары постов" вполне для этого хватило - что не пост, то "пук в лужу" laughing.gif

Цитата
А только все это фигня, сейчас функциональное программирование в моде.

Да, что вы говорите?!
Ну, засуньте в обычный МК (не распберри) хотя бы что-то напоминающее эту "моду". Покажите пример...


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
ig_z
сообщение Nov 9 2017, 20:15
Сообщение #58


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



QUOTE (Forger @ Nov 8 2017, 22:41) *
С другой стороны, до сих пор вот мне очень интересно познавать новые фишки в мире эмбедед ПО, в частности, относительно недавно "изучал" .netmicro, недавно чуть "по-тискал" micro java (или как там она зовется) ....
Короче, удалил их к чертовой бабушке - рано еще, времена еще не пришли, нынешние МК пока еще слишком ватные для таких "вещей".

Кстати, в данный момент уперся в необходимость применения такой вещи (пишу под плюсами) - паттерн "фабрика объектов", а совсем недавно освоил паттерн "делегатов" .
Удивительно, но теперь они реально мне понадобились, хотя в свое время хихикал над другими: "гы-гы, плюсы, шаблоны, паттерны" ...

Держите нас в курсе, несдержанный вы наш. И ни в коем случае по теме ничего не говорите, потеряете реноме в каждой бочке затычка
Go to the top of the page
 
+Quote Post
Forger
сообщение Nov 9 2017, 21:41
Сообщение #59


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

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(ig_z @ Nov 9 2017, 23:15) *
в каждой бочке затычка

Ну, да, а влезать в чужую беседу, особенно если сам в ней "не в зуб ногой" - это по-Вашему норм 01.gif

Цитата
И ни в коем случае по теме ничего не говорите

А у вас-то есть что добавить по теме - SST ("каруселька" и т. п.)? Или тоже можно "открывать счет"? biggrin.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
syoma
сообщение Nov 17 2017, 10:45
Сообщение #60


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

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Возвращаясь к оригинальной теме по поводу прерывания из прерывания.
У меня попроще задача и я не думал, что в ARM ее не так просто решить в лоб.

Грубо говоря допустим нужен примитивный Preemptive Scheduler, который бы запускал две функции Step_10ms() и Step_1s() с определенными интервалами 10мс и 1с соответственно. Step_10ms имеет высший приоритет, чем Step_1s(). Функции полностью независимые, железа и общей памяти не используют. Step_10ms() исполняется миллисекунды за 3, Step_1s() - за 100мс. То есть Step_10ms() должна прерывать исполнение Step_1s(), когда нужно.
Обе функции защищены от overrun - при запуске выставляют флаг, так что если функция вдруг вызовется опять во время своего исполнения - она это проконтролирует и система вылетит в ошибку.

Я, недолго думая, дописал в SysTick_handler (обработчик SysTick, который вызывается раз в 1мс) указанную конструкцию (псевдокод без намека на правильный синтаксис, приоритеты не расставлены)
Код
void SysTick_handler(void)
{
static uint16_t Timer_10ms = 9;
static uint16_t Timer_1s = 999;

if (Timer_10ms) Timer_10ms--;
   else
  {
   Timer_10ms = 9u;
   Step_10ms(); //Вызываем 10мс функцию
  }

if (Timer_1s) Timer_1s--;
   else
  {
   Timer_1s = 999u;
   Step_1s(); //Вызываем 1с функцию
  }
}


Каково же было мое удивление, когда оказалось, что ARM не поддерживает reentrant прерывания и выполнение Step_1s() полностью блокирует прерывание и Step_10ms() при этом не исполняется. Нашел в инете, что народ играется ассемблером и пытается восстанавливать стек и прочие вещи, чтобы процессор опять мог заходить в это же прерывание, но хотелось бы узнать - есть ли простое решение, без RTOS, так как кроме этой функции RTOS будет не нужна.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 10:01
Рейтинг@Mail.ru


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