Forger 26 7 ноября, 2017 Опубликовано 7 ноября, 2017 · Жалоба Да чего сейчас только нету в этих ARM-ах. Но, выходит, что не все об этом знают ... ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 244 7 ноября, 2017 Опубликовано 7 ноября, 2017 · Жалоба вы шину GPIO не захватили, а по ней сейчас другой поток занят важным делом - писк на зумер выводит. А зачем её захватывать? Как почту/телефон/телеграф/интернет? (сегодняшняя дата навеяла ;) Во всех МК на Cortex-M с которыми мне приходилось иметь дело, периферия GPIO имеет средства для атомарной модификации отдельных битов порта (ну или хотя-бы находится в области bit-band). Можете пиликать вашим динамиком сколько угодно. После того как ознакомитесь с мануалом на периферию своего МК. Первое, что приходит в голову так:sm.gif о как, у меня также, только я не знал что это SST называется. Просто каруселька и все У Вас на вашей карусельке в любимом суперцикле, пока процессор сидит в очередной паузе (для ногодрочества динамиком), никакая полезная работа не выполняется. А в случае с РТОС на время такой паузы, время CPU будет передано другой менее приоритетной задаче, которая в нём сейчас нуждается, либо процессор будет выполнять WFI/WFE экономя миллиамперы. А у вас просто будет всё тупо висеть и впустую жрать миллиамперы. Вот в этом как раз и есть главное преимущество РТОС с её задачами/потоками от суперцикла. И с современными объёмами ОЗУ в МК, как правило не составляет труда выделить каждой задаче необходимое кол-во стека. Ну если руки конечно не совсем из неподходящего места растут, то памяти это много не займёт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 7 ноября, 2017 Опубликовано 7 ноября, 2017 · Жалоба Ну не знаю, у меня на Ардуино все проще, а на малинке тем более, на питоне. :fman: А у вас сложно как то, dma какие то, А как это "зачем захватывать". Под gpio драйвер надо, может gpio в Калифорнии висят и управляются какими нибудь post запросами. А вот тут вроде проще https://developer.microsoft.com/en-us/windo...les/helloblinky но я не уверен, что win10 iot влезет в процессор без mmu. О, кстати идея, сейчас залью винду эту на малину, интересно какая частота в цикле мигания получится Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 8 ноября, 2017 Опубликовано 8 ноября, 2017 · Жалоба А где тут DMA и что и куда оно грузит? О, это длинная запутанная история - https://geektimes.ru/post/284248/ Ну не знаю, у меня на Ардуино все проще, а на малинке тем более, на питоне. :fman: Эт как гнаться за семью зайцами. Нет, хардварная платформа должна быть своя. Тогда из нее можно выжать максимум: и прерывания в прерываниях, и SST, и RTOS, и всё вместе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 8 ноября, 2017 Опубликовано 8 ноября, 2017 · Жалоба ОК, слив опять защитан. Счет 2:0 :) У меня сей уважаемый господин (под псевдонимом dasm), уже давно находится в списке игнора форума. Ради него старался и нашел такую опцию. Ничего не потерял B) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 8 ноября, 2017 Опубликовано 8 ноября, 2017 · Жалоба Ради него старался и нашел такую опцию. Ничего не потерял B) Хм, удобная функция, спасибо за подсказку! Пригодится ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Студент заборстроительного 0 8 ноября, 2017 Опубликовано 8 ноября, 2017 (изменено) · Жалоба Super Simple Tasker - один из вариантов реализации вытесняющей многозадачности для микроконтроллеров. Может быть я стал слишком старый и "отстал от поезда", поэтому на всякий случай спрошу: НАФИГА ??? Чем не годится готовая RTOS? В частности freeRTOS позволяет использовать вложенные прерывания без подобного "дрочева".... :laughing: Сейчас каждый джуниор считает своим долгом написать свою RTOS При этом НИХРЕНА в этом не понимая. И при этом считает, что его RTOS - это какое-то откровение в мире RTOS. Кто из нас по молодости не писал свою RTOS, и кто из нас в старости не осознал, что маялся дурью и тратил время на всякую не нужную ерунду Я сейчас вспоминаю сколько времени я на это угрохал. Лучше б тёлок молодых порол. Тогда они мне ещё теоретически могли "дать". Не то что сейчас Как минимум, это интересно - попробовать разные подходы к построению ПО. Вот вот. О чём я и сказал Изменено 8 ноября, 2017 пользователем Студент заборстроительного Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 8 ноября, 2017 Опубликовано 8 ноября, 2017 · Жалоба Я сейчас вспоминаю сколько времени я на это угрохал. Лучше б тёлок молодых порол. Аналогичная ситуация! Но только мне удалось наваять свою простейшую ось относительно быстро, после "наиграться" с ней и в итоге поставил готовую чужую и больше этот вопрос не поднимал. С другой стороны, до сих пор вот мне очень интересно познавать новые фишки в мире эмбедед ПО, в частности, относительно недавно "изучал" .netmicro, недавно чуть "по-тискал" micro java (или как там она зовется) .... Короче, удалил их к чертовой бабушке - рано еще, времена еще не пришли, нынешние МК пока еще слишком ватные для таких "вещей". Кстати, в данный момент уперся в необходимость применения такой вещи (пишу под плюсами) - паттерн "фабрика объектов", а совсем недавно освоил паттерн "делегатов" . Удивительно, но теперь они реально мне понадобились, хотя в свое время хихикал над другими: "гы-гы, плюсы, шаблоны, паттерны" ... Но, ребяты, изобретать самодельный колхозный шедулер = городить "велосипед с квадратными колесами" "из говна и палок" - это уже, прям, лютая дикость :01: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 244 8 ноября, 2017 Опубликовано 8 ноября, 2017 · Жалоба Для тех, кто не в теме: в ARM Cortex есть такой механизм - BitBanging (вроде правильно написал). может есть, а может и нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 8 ноября, 2017 Опубликовано 8 ноября, 2017 · Жалоба может есть, а может и нет. Суть от этого не меняется - лаконичный код под классической RTOS после переписывания под SST превращается в банальный говнокод (см. посты #31 и #33). Отсюда мораль: если вы видите перед собой говнокод, то смотрите на тип шедулера. Если стоит SST, "карусельку" или "супер-мега-гипер-луп", то шансы для этого кода все еще есть ... Если этот говонокод умудрились соорудить даже под классической RTOS, то код - в помойку, автора кода - за кассу в "магнит" :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 8 ноября, 2017 Опубликовано 8 ноября, 2017 · Жалоба Да уж.. сколько чудных открытий :) человек недавно паттерны открыл и берется судить о говнокоде. Ничего, склетон освоите, посетителя - про свой прошлый код также писать будете. А только все это фигня, сейчас функциональное программирование в моде. И снова все говнокодом покажется. Большая ошибка судить людей по паре постов, думая что они ничего не знают, а я такой плюсанутый и ртоснутый на всю голову. С возрастом пойдет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 8 ноября, 2017 Опубликовано 8 ноября, 2017 · Жалоба склетон освоите Паттерна "склетон" не существует, но вангую, что речь шла про синглтон. Опиской это не назовешь, поэтому очевидно вы даже не пользовались им ни разу ... Короче, счет 3:0 К слову: по-началу, по неопытности я использовал синглтон слишком активно где надо и не надо ... но это было давным-давно и больше так не делаю )) "С возрастом пройдет" Суперлуп (или "карусельки") проходят у подавляющего большинства настоящих программеров (не ардуинщиков или куберов) еще в "ясельном" возрасте. Но, судя по всему, еще попадаются редкие уникальные исключения.... Расслабьтесь, никто не собирается менять ваш образ мышления: "поздно пить боржоми ..." :) Большая ошибка судить людей по паре постов, думая что они ничего не знают Однако, ваших "пары постов" вполне для этого хватило - что не пост, то "пук в лужу" :laughing: А только все это фигня, сейчас функциональное программирование в моде. Да, что вы говорите?! Ну, засуньте в обычный МК (не распберри) хотя бы что-то напоминающее эту "моду". Покажите пример... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ig_z 0 9 ноября, 2017 Опубликовано 9 ноября, 2017 · Жалоба С другой стороны, до сих пор вот мне очень интересно познавать новые фишки в мире эмбедед ПО, в частности, относительно недавно "изучал" .netmicro, недавно чуть "по-тискал" micro java (или как там она зовется) .... Короче, удалил их к чертовой бабушке - рано еще, времена еще не пришли, нынешние МК пока еще слишком ватные для таких "вещей". Кстати, в данный момент уперся в необходимость применения такой вещи (пишу под плюсами) - паттерн "фабрика объектов", а совсем недавно освоил паттерн "делегатов" . Удивительно, но теперь они реально мне понадобились, хотя в свое время хихикал над другими: "гы-гы, плюсы, шаблоны, паттерны" ... Держите нас в курсе, несдержанный вы наш. И ни в коем случае по теме ничего не говорите, потеряете реноме в каждой бочке затычка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 9 ноября, 2017 Опубликовано 9 ноября, 2017 · Жалоба в каждой бочке затычка Ну, да, а влезать в чужую беседу, особенно если сам в ней "не в зуб ногой" - это по-Вашему норм :01: И ни в коем случае по теме ничего не говорите А у вас-то есть что добавить по теме - SST ("каруселька" и т. п.)? Или тоже можно "открывать счет"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 17 ноября, 2017 Опубликовано 17 ноября, 2017 · Жалоба Возвращаясь к оригинальной теме по поводу прерывания из прерывания. У меня попроще задача и я не думал, что в 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 будет не нужна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться