Pull to refresh
26
0
Сергей Келер @nwwind

Сисадмин

Send message
Можно и ртос, если влезет. Я с нею ещё не играл.
Боюсь, что «взять ртос» примерно равно «забыть про arduino ide».
Задача стояла максимально спрятать код, сделать библиотеку а ля ардуина. У меня там кода всего ничего, но он не мешает прочтению кода уже пользовательского, по делу, прячет переменные состояния и таймера в приватные у класса. То есть, не отвлекает от основной логики.
Я не хотел делать на колбеках такое изначально. Там выше интересный код с использованием __LINE__ в качестве состояния, кстати. И вообще, макросы заслуживают там вдумчивого чтения.
Я, если и начну делать что-то дальше, сделаю на ООП плюсово и наследованием от класса SmartTask, который будет дёргать методы порождённого класса, а SmartOS :) будет по списку бегать таких тасков.
Я ещё в яслях :)
У меня есть stm32, это сильно не то. Там порог входа сильно выше. Там всё очень сложно и даже помигать светодиодом чтобы, надо мозг ломать долго. Ардуина для поделок, я их и делаю.
Спасибо за макросы, я как раз ломаю голову над ними, чтобы заменить if(obj.Now) { действие }
С другой стороны, так тоже ничего, понятно.
Использование таймера заставляет всё делать с ним, то есть, нельзя абстрагироваться от него.
Ээээ…
Ну, если я спрячу таймер1 внутри своего класса, а потом захочу в самом скетче им попользоваться (я же не знаю потроха класса SmartDelay), то код превратится в тыкву.
В задачах как раз стояло сделать нечно, что можно спрятать, подключить и забыть про код внутри. Ардуино-стайл некий.
Спасибо.
state-machine под это будет в следующей статье. Я там с клавиатурой разбирался и в итоге получился абстректный класс с МКА внутри. Сегодня/завтра опубликую.
Хммм… Пойду там макросы потрошить. Интересно.
Задача каждая должна укладываться в квант времени. Здесь реализована ленивая кооперативная многозадачность, которой часто и так хватает, а частенько именно её и надо.
Чёрт! Там даже протокол такой же. Пойду убью себя ап стену… :(
Ардуино — это кубики для начинающих и для простых поделок. Для этого прокладка ардуины, его абстракция над железом заслуживают всяческого уважения и поощрения. :)
так и есть, но есть нюанс, там есть три группы прерываний и можно назначить им обработчик. Погугли changeInterrupt или как-то так. Но обработчик ставится на группу и внутри него надо разбираться, какая нога дёрнула, это делается не очень переносимым кодом. Не ардуинский стиль получается.
rtos да, но она тоже память ест. Речь не идёт о чём-то серьёзном и да, для микроволновки или теплицы сгодится. Для промышленного применения, возможно, не стоит и ide ардуиновской пользоваться, верно?

на атмега328 всего два внешних прерывания, прочие можно обрабатывать, но это будет точно не переносимый код и сильно зависимый от камня. Прочие прерывания группируются по нескольку портов и их надо разделять ещё как-то в обработчике.

Я думаю перейти с микросекунд в более удобные миллисекунды, практика показала, что лишние нули лично мне не нужны, кстати.

Перспективы же роста — перейти на stm32 :)
Это из той же оперы, на самом деле. Всё-равно заставляет переписывать логику программы.
В прерывании же надо что-то сделать и быстро выйти. С моим подходом нет такого жёсткого отграничения. Понятно, что это не реальное время и не многозадачность, так, припарка. Для ардуининых задач пока хватает :)
Timer1 — сила, но…
Это, конечно, перл, но разберётесь :)
Для телефонии обычно интервалы номеров фуфу как неудобно, а префиксы — это самое то.
http://nw-wind.livejournal.com/227076.html
Я когда-то давно написал программу преобразования интервалов в минимальный набор префиксов.
Пользуйтесь!
12 ...
7

Information

Rating
Does not participate
Location
Всеволожск, Санкт-Петербург и область, Россия
Registered
Activity