|
embedded cron |
|
|
2 страниц
< 1 2
|
 |
Ответов
(15 - 20)
|
Dec 2 2015, 09:51
|

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

|
Цитата(evgen2 @ Dec 2 2015, 12:26)  Причём тут вайфай? Веб морда с тысипями кушает память, а в M0 ее кот наплакал - 8-12 кб А как вы будете подключать М0 в сеть, где будут бегать ваши TCP пакеты? Размер занимаемой озу стеком TCP/IP сильно зависит от числа одновременных одкрытых соедений, других поддерживаемых протоколов, в М0 ни у кого нет RMI интерфейса, чтобы подключить эзернет, но есть spi и uart как минимум, к ним пожно подключать внешние крохотные модули с реализаванных внутри них TCP/IP. В этом случае даже 8-битный адруино справиться с задачей на ура. Я для примера предложил самый бюджетный и простой вариант - вайфай ESP. Цитата которая несколько меньше линукса, Ну, это все меняет
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Dec 2 2015, 10:32
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(arhiv6 @ Dec 2 2015, 12:33)  А какой минимальный шаг времени нужен? Поддержка дат нужна? Или просто "запуск задачи через час", "запуск задачи раз в сутки"? Если второй вариант, можно сделать свой планировщик, взяв за основу этот. Умеет периодический запуск задач. отложенный запуск. О, спасибо. Минимализм, как и хотелось. И можно и RTC прикручивать. Цитата(AVI-crak @ Dec 2 2015, 12:40)  Это невозможно на физическом уровне. Ваш мк будет управлять физикой с двумя состояниями - вкл-выкл, ну может быть ещё шим - но у него тоже пишется единственное значение. Значит все эти глюки необходимо разрулить ещё до фактической установки будильника. Функция - будильник каждую секунду - задаётся с некорректными значениями неиспользуемых разрядов будильника. Например каждую секунду - число секунд, а минуты, часы дни - года FFFF. Тогда при установке будильника можно будет задействовать отдельный канал со спец режимом, именно для этих целей, но таких каналов кажись всего один штук. Ну и управление физикой будет очень ограниченным. С этим делом прекрасно справляется программный таймер, там даже ничего изобретать не нужно. Почему невозможно? Просыпаемся по RTC, смотрим, какие есть "задачи", если нет - то спим дальше, если есть - выполняем их - последовательно - типа дрыгнуть ногами, запустить АПЦ и дождаться результата (т.е. квазиодновременно, если у нас минимальный квант от RTC секунда), перед тем как заснуть пробегаемся по будильникам, находим ближайший, программируем время следующего прерывания RTC и засыпаем. RTC позволяет (более лучше спать и) меньше потреблять, чем программный/нутряной таймер. Цитата(Forger @ Dec 2 2015, 12:51)  А как вы будете подключать М0 в сеть, где будут бегать ваши TCP пакеты? Размер занимаемой озу стеком TCP/IP сильно зависит от числа одновременных одкрытых соедений, других поддерживаемых протоколов, в М0 ни у кого нет RMI интерфейса, чтобы подключить эзернет, но есть spi и uart как минимум, к ним пожно подключать внешние крохотные модули с реализаванных внутри них TCP/IP. В этом случае даже 8-битный адруино справиться с задачей на ура. Я для примера предложил самый бюджетный и простой вариант - вайфай ESP. Ну, это все меняет  Всё равно веб сервер надо будет в М0 делать. Но сама идея мне нравится, как раз под дивайс, в котором крон должен жить. Вайфай ESP - это ESP8266 или есть другие варианты?
|
|
|
|
|
Dec 2 2015, 16:45
|
Профессионал
    
Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439

|
Цитата(evgen2 @ Dec 2 2015, 01:04)  А вот не подскажет ли кто - есть ли в природе embedded cron не для линукса, а для мелкопроцессоров типа ARM Cortex 3, и чтоб в исходниках на Це, и чтоб памяти не ел, и чтоб difftime мухой считал без double. Если вам надо сделать просто запуск задач по определенным моментам времени, то можно создать функцию которую вызываете каждую секунду, в ней считаете минуты, часы, дни. секунды, минуты, часы, дни считаете в глобальных переменных. Заводите необходимое количество структур моментов времени срабатывания содержаших обработчик явления, далее простой обработчик, который каждую секунду сравнивает все структуры с текущим временем и все. Правда difftime не считает. Могу рассказать более подробно (с примерами имплементации) если интересно.
|
|
|
|
|
Dec 2 2015, 19:34
|
Частый гость
 
Группа: Участник
Сообщений: 182
Регистрация: 16-10-15
Пользователь №: 88 894

|
Цитата(evgen2 @ Dec 2 2015, 17:32)  Почему невозможно? Просыпаемся по RTC, смотрим, какие есть "задачи", если нет - то спим дальше, если есть - выполняем их - последовательно - типа дрыгнуть ногами, запустить АПЦ и дождаться результата (т.е. квазиодновременно, если у нас минимальный квант от RTC секунда), перед тем как заснуть пробегаемся по будильникам, находим ближайший, программируем время следующего прерывания RTC и засыпаем. RTC позволяет (более лучше спать и) меньше потреблять, чем программный/нутряной таймер. Да вот фига. Просыпаемся когда уже пора что-то делать, потому как будильник на это время взведён. Иначе смысл в будильнике отпадает, можно на программных таймерах считать, с точностью в миллисекунды. Завёл одну переменную в 64 бита - и железяка её за всю твою жизнь не обнулит.
|
|
|
|
|
Dec 2 2015, 23:02
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(AVI-crak @ Dec 2 2015, 22:34)  Да вот фига. Просыпаемся когда уже пора что-то делать, потому как будильник на это время взведён. Иначе смысл в будильнике отпадает, можно на программных таймерах считать, с точностью в миллисекунды. Да фига. Я как раз об этом и говорю. Цитата(AVI-crak @ Dec 2 2015, 22:34)  Завёл одну переменную в 64 бита - и железяка её за всю твою жизнь не обнулит. не всю. До разряда батарейки/зависания/сбоя
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|