Как спать в течение короткого фиксированного времени?

Моду
Пн 10 сентября 2018 г., 13:36
Привет, я использую это Прекрасный планировщик с большим успехом с моими клонами клена. Тем не менее, мне не хватает одной ключевой функции этого планировщика, который является режимом низкой мощности.
Когда у планировщика нет задач, которые можно бежать на Millis (), он спит MCU на 1 мс. Это отлично работает для AVR, но у меня проблемы с реализацией на стороне STM32Duino.

Я хотел бы что -то похожее на сторону AVR, сон, который открыт для всех прерываний, особенно прерывание обновлений Millis.

В соответствии с https: // github.com/stm32duino/stm32lowpower , Минимальный сон с часами RTC составляет 1000 мс, так что, очевидно, не очень хорошо.

Моя текущая попытка можно найти в моя вилка.

Любые указатели будут приветствовать.

Стивестронг
Пн 10 сентября 2018 г. 14:05
Как насчет этого: https: // github.com/hocarm/stm32f103-tut ... _hal_pwr.в ?

Или эти темы:
https: // www.STM32duino.com/viewtopic.PHP?t = 2964
https: // www.STM32duino.com/viewtopic.PHP?t = 658

G ** gle - твой друг ;)

Моду
Пн 10 сентября 2018 г. 15:31
https: // www.STM32duino.com/viewtopic.PHP?t = 658 Как вы думаете, где я получил большую часть информации и ссылок на репо? : mrgreen:

AG123
Пн 10 сентября 2018 г., 17:07
Попробуйте это long received = 0; const unsigned long buffer_size = 128; uint8_t buffer[buffer_size]; void setup() { Serial1.begin(9600); } [...] void loop() { [...] while(Serial1.available()){ buffer[received++ % buffer_size] = Serial1.read(); } }

Хейсан
Пн 10 сентября 2018 г. 18:01
Это выглядит очень интересно... Интересно, каким эффектом будет добавить это в вашу программу: void loop() { [...] if(Serial1.available()){ buffer[received++ % buffer_size] = Serial1.read(); } }

AG123
Вторник 11 сентября 2018 г. 12:49
Обратите внимание, что на STM32 есть только один поток выполнения, следовательно,display.print("Received: "); display.print(received); display.println(" byte(s)"); for (int xx=0; xx

Mrburnette
Вторник 11 сентября 2018 г. 1:24
Моду...

Я предполагаю, что вы читаете AN2629.

Зачем вам нужен низкопроводный, агрегатный питание от аккумуляторов? Почему задача запланировано? Я знаком с Freertos и часто использую его под Arduino, но с ESP32.

Вы, вероятно, нашли эту старую нить о низкой мощности, https: // www.STM32duino.com/viewtopic.PHP?t = 298 Но у этого не было сложности планировщика задач.

Лично вы можете захотеть изучить Freertos на STM32: https: // www.Google.com/search?Q = Freerto ... 3+низкая сила

AG123
Вторник 11 сентября 2018 г. 7:29 утра
Привет, Рэй,
Я обнаружил, что Freertos сложно использовать в MM/BP, что частично из -за наличия только 20 тыс. Памяти, память фрагментируется в схеме Freertos, а каждая задача выделяла свой собственный стек и т. Д., Которые дополнительно фрагментируют память.
Я использую петлю события [b]And most importantly, they will be able to learn a lot more in uProcessor programming than using Arduino. [/b]However, this can an double-edge sword, since a huge amount of time could be sucked into this. Another choice is Arduino Due, it might not be able to run all standard libraries out of the box either, as I understand. So this will be a really tough decision, and this was the reason why I posted my question.

Моду
Вторник 11 сентября 2018 г. 8:59 утра
Спасибо всем за комментарии, я расскажу, как только получу мои инструменты снова и сделаю несколько тестов. И, видимо, было какое -то чтение, которое я пропустил, так что сначала я на нем.
[Mrburnette - Вторник 11 сентября 2018 г. 1:24 утра] - Зачем вам нужен низкий энергопотребление, блок питания на батареях?
Да, почти все мои проекты работают за аккумулятор. Кроме того, я стараюсь сделать низкую мощность в качестве принципа, вы не поймете меня на задержку с циклами задержки. Может быть, это потому, что я потратил годы, делая устройства BLE в течение нескольких месяцев на батареи монетной ячейки: P
[Mrburnette - Вторник 11 сентября 2018 г. 1:24 утра] - почему задача? Я знаком с Freertos и часто использую его под Arduino, но с ESP32.
Мне очень удобно с ООП -ориентированными планировщиками, так что это мой первый выбор: он позволяет мне легко создавать сложную логику времени. Что касается RTOS, я некоторое время следил за этим тропой, но пришел к выводу, что накладные расходы, как с точки зрения памяти, так и сложность проекта, не стоили того, что для единственного (очевидного) выгоды от более точного времени, когда планировщик прозрачный Функция низкой/мощности. Я также абстрагировал интерфейс задачи/планировщика, поэтому я могу перевернуться в RTO, если захочу, но пока я люблю эти маленькие планировщики. Кроме того, большинство RTOSS созданы для C и статических функций, поэтому у меня были Мой выстрел в Слои Ооп на вершине Freertos на STM32DUINO.

Mrburnette
Ср 12 сентября 2018 г. 12:44
Вещи более сложны, чем простой цикл выше, но эта схема работает очень хорошо, стек разнадосят после того, как каждый класс обработки событий обрабатывает событие, Не могу спорить с рабочим кодом.
Что касается RTOS, я некоторое время следил за этим тропой, но пришел к выводу, что накладные расходы, как с точки зрения памяти, так и сложность проекта, не стоили того, что для единственного (очевидного) выгоды от более точного времени, когда планировщик прозрачный Функция низкой/мощности. Ты профессионал, мне не нужно пытаться убедить тебя в чем -либо. Иди и повеселиться.

Луча

Моду
Ср 12 сентября 2018 г. 10:07 утра
[Mrburnette - Ср 12 сентября 2018 г. 12:44] - Ты профессионал, мне не нужно пытаться убедить тебя в чем -либо. Иди и повеселиться.
Боже мой, я не профессионал, по крайней мере, когда дело доходит до встроенного. Я воспринял ваше предложение серьезно, потому что я здесь, чтобы учиться, поэтому я оправдывал свой выбор: если вы видите какую -либо ошибку в моей логике или другом угле, который я не вижу, пожалуйста, скажите :)

Что касается моего заключения, кажется, я был не единственным.
[AG123 - Вторник 11 сентября 2018 г., 7:29 утра] - Используя это, я думаю, что можно заставить вещи работать в MM/BP, где в противном случае у вас не хватает памяти
Да, это именно то поведение, которое я повторяю, хотя и в библиотеке планировщика.

Mrburnette
Ср 12 сентября 2018 г. 12:08
Modu:

Я получил образование в качестве EE и работал в корпоративности до ухода в отставку в 2010 году. Мой опыт кодирования был полностью мини-компьютерами, пока я не купил P.Эн.Т. а позже Apple II и начал писать в ассемблере. Позже я написал, используя IBM PC, и в то время, даже в корпоративном, 1M RAM был обычным и, возможно, расширенной картой памяти, если вам повезло. Учимся быть фругильным с оперативной памятью. И эта чертовла архитектура Intel в P.я.Т.А. В те дни.

В наши дни компилятор и линкера для рук просто замечательные ... C ++ на AVR с 2K (или менее) SRAM.

Когда я спросил «почему» ваше объяснение было удовлетворительным - потому что вы можете, и вам удобно в собственной взломанной способности. Вы находитесь в элитной группе, поэтому мне не было ничего, кроме как пожелать вам удовольствия. Я, конечно, не предлагаю такого ответа на большинство пользователей форума, как для масс, лучше всего ходить в середине пути, а не выйти из пути и исследовать в кустах.

Луча

Хейсан
Ср 12 сентября 2018 12:32
[Mrburnette - Ср. 12 сентября 2018 г. 12:08 вечера] - человек учится быть фругиле с Рам. И эта чертовла архитектура Intel в P.я.Т.А. В те дни.
Возвращение некоторых вспоминаний о том, как играть в «шахматы» на Sinclair ZX80... Весь приложение + хранилище + буфер кадров текстового режима в 1 КБ ОЗУ (хотя я уверен, что были некоторые вызовы для подпрограммы в 4 КБ ПЗУ). Я вкладываю «шахматы» в цитаты, так как противник ИИ был действительно не очень хорошим :ржу не могу: .

Современные MCU заставляют первые домашние компьютеры действительно похожими на динозавров, которых они...

Моду
Чт 13 сентября 2018 г. 8:47 утра
Луча,

Спасибо за добрые слова.
В наши дни компилятор и линкера для рук просто замечательные ... C ++ на AVR с 2K (или менее) SRAM. Не мог согласиться больше. Это причина, по которой я лично влюбился в встроенное программирование.