Прошивка MegaD-328 (релизы, обсуждения, предложения)

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
comparator
Сообщения: 516
Зарегистрирован: 20 окт 2012, 12:40
Откуда: Мюнхен

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение comparator » 29 май 2014, 18:13

Работа с DHT на чистых задержках не приводит ни к чему хорошему, по моим измерениям тактовая у DHT плавает на +-20%. Что нельзя покрыть чистыми delay'ями.
В своей библиотеке я работаю по прерываниям , дополнительно используется таймер. Плюс учтен момент с нестабильностью.

Устойчиво работают 2 из 3х DHT22. На Tiny с внутренним генератором.
С DHT11 статистики нет, так как они могут показать только 1 параметр точно, при каких условиях их калибровали.

Андрей посмотрите, может быть используете в своем проекте.

Собственно библиотека

Andrey_B
Администратор
Сообщения: 5329
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 30 май 2014, 11:55

comparator, спасибо!
Правда проблема в том, что все таймеры заняты (один для дебоунсинга кнопок, два для портов ШИМ).

comparator
Сообщения: 516
Зарегистрирован: 20 окт 2012, 12:40
Откуда: Мюнхен

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение comparator » 30 май 2014, 12:42

Andrey_B писал(а):comparator, спасибо!
Правда проблема в том, что все таймеры заняты (один для дебоунсинга кнопок, два для портов ШИМ).
Если таймер 1 перевести с предделителя 256 на 8, то можно его использовать. Монопольный режим не нужен, нам нужно только состояние счетчика на данный момент. С предделителем 256 погрешность будет большая, 0 от 1 не отличим. А счетчику без разницы считать до 244 или 7812.
Будет время, попробую поиграться на выходных.

asteroid
Сообщения: 42
Зарегистрирован: 13 апр 2013, 02:16

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение asteroid » 31 май 2014, 23:15

Еще заметил я в версии beta5 такую особенность.
Когда порту в режиме PWM присваиваешь какое то значение и жмешь "применить" то применяется.
Жмешь сохранить, сбрасывается в 0 значение.
И еще, если после применения пропало питание на устройстве, то значение PWM не запоминается.
Это так надо или это ошибка ?

Andrey_B
Администратор
Сообщения: 5329
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 02 июн 2014, 16:51

asteroid, это не баг.
Сохранение конфигурации порта приводит к рестарту устройства. Текущее состояние портов в EEPROM не сохраняются. В результате значение PWM 0
Когда-то было обсуждение на этот счет. И была разумная аргументированная точка зрения. Количество циклов записи EEPROM не очень большое. А заранее мы не знаем о том, каким образом может использоваться устройство. Представьте себе, что необходимо что-то переключать несколько раз в секунду (например, цветомузыка или управление ЖК-дисплеем). В таком режиме EEPROM проживет не долго.
А делать отдельную настройку - сохранять/не сохранять для каждого порта как-то не очень рационально. Каждая такая настройка - ресурсы МК.
Но можно, например, предусмотреть такую фичу. После включения устройство связывается с сервером (по определенному запросу) и как бы спрашивает его какое состояние портов восстановить. Сервер же может сохранять текущее состояние сколько угодно.

dimonix
Сообщения: 368
Зарегистрирован: 19 фев 2012, 22:01
Откуда: Сколково

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение dimonix » 02 июн 2014, 17:10

Andrey_B писал(а): ...
Но можно, например, предусмотреть такую фичу. После включения устройство связывается с сервером (по определенному запросу) и как бы спрашивает его какое состояние портов восстановить. Сервер же может сохранять текущее состояние сколько угодно.
Вот это действительно нужно - отправка запроса на сервер после перезагрузки. Возможно даже два варианта запросов: 1) софт рестарт (после сохранения конфигурации) и 2) хард рестарт (после сброса по питанию).

asteroid
Сообщения: 42
Зарегистрирован: 13 апр 2013, 02:16

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение asteroid » 02 июн 2014, 18:08

Сервер же может сохранять текущее состояние сколько угодно.
Спасибо за совет.
Чего то не подумал, я же могу сам сделать так, что бы после восстановления электричества, сервер (мой) сразу отправил команду с теми данными, какие были на момент когда все рухнуло.

Andrey_B
Администратор
Сообщения: 5329
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 11 июн 2014, 19:09

http://ab-log.ru/files/File/ip_manager3 ... _beta1.zip

Это очень тестовая прошивка.
В настройках в закладке MegaD-ID появилась опция "srv loop" (при перепрошивке нужно очистить EEPROM)
В случае ее включения, устройство раз в минуту (можно изменить в исходниках) отправляет на сервер состояние всех портов.
Примерно так.
192.168.0.14 - - [11/Jun/2014:18:59:31 +0400] "GET /megad.php?mdid=123&all=OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF;OFF;OFF;OFF;OFF;OFF;OFF;63;516 HTTP/1.1" 200 173 "-" "tgr/1.1"

Почему это может быть полезным
- На сервере можно настроить скрипт, который будет обновлять состояние портов в БД, таким образом в Web-интерфейсе домашнего сайта будет всегда актуальная информация
- Так можно отслеживать доступность и работоспособность устройства
- Самое главное - в качестве сервера можно указать компьютер в Интернете. Таким образом, не имея прямого доступа к устройству (например, оно размещено в приватной сети), можно осуществлять контроль и управление им из Интернета. Устройство, сообщая информацию о портах, также выполнит команды, которые получит от сервера. А такой "компьютер" в Интернете скоро будет.

Mamurluk
Сообщения: 4
Зарегистрирован: 04 июл 2014, 06:58

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Mamurluk » 07 июл 2014, 02:31

Andrey_B, здравствуйте!
Велик ваш труд, да пребудет с вами сила :)

Мне вот что интересно. Возможно ли в ближайшую прошивку добавить функцию инкрементального счетчика по одному из входов с выдачей информации по Ethernet на какой-либо сервер по выбранному пользователем порту?
Если да, то я вижу это следующим образом - некий порт переводится в режим подсчета импульсов на входе, данные суммируются в регистре и по заданному промежутку сумма передаются на сервер. так же необходимо предусмотреть сброс счетчика на ноль.
Я думаю, данная функция пригодилась бы многим

А так же было бы неплохо в полях Server и NetAction сделать возможность указывать любой порт

Mixman
Сообщения: 395
Зарегистрирован: 17 фев 2013, 23:49
Откуда: Волгодонск, Ростовская обл.
Контактная информация:

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Mixman » 07 июл 2014, 13:42

А зачем нагружать этой задачей мегу? Сделайте скрипт на сервере и пусть он по расписанию считывает данные с меги. Хотя можно и каждое срабатывание входа обрабатывать сервером (подкорректировать mod_megad.php)

Andrey_B
Администратор
Сообщения: 5329
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 07 июл 2014, 17:00

Mamurluk, любой порт типа IN (то есть вход) давно уже снабжен счетчиком и считает все срабатывания (согласно настройке: P, R, P&R).
Сброс счетчика происходит командой типа
http://192.168.0.14/sec/?pt=3&cnt=0

Значение счетчика сервер может запросить у устройства командой
http://192.168.0.14/sec/?pt=3&cmd=get

Но и само устройство теперь способно сообщать всю информацию о своих портах на сервер (включая значения счетчиков) один раз в минуту.
Config -> Megad-ID -> srv_loop

Mamurluk
Сообщения: 4
Зарегистрирован: 04 июл 2014, 06:58

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Mamurluk » 10 июл 2014, 10:56

Большое спасибо за разъяснение :)

alexsis_76

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение alexsis_76 » 11 июл 2014, 16:54

добрый день , хочу спросить у сведующих , в мега-д есть функция когда порт настроен на вход он может считать входные импульсы,вопрос в следующем действительно ли необходимо на каждом порту иметь счетчик импульсов, может быть лучше организовать счетчики на основе внешних прерываний ,правда их будет всего 3 но в программе не надо будет каждый раз опрашивать порт на наличие импульсов, контроллер все сделает сам, прерывания могут настраиваться по фронту по срезу ,любое изменение логического уровня генерирует запрос прерывания

Andrey_B
Администратор
Сообщения: 5329
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 11 июл 2014, 17:00

alexsis_76, а можете расшифровать? Что-то я ничего не понял.

alexsis_76

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение alexsis_76 » 11 июл 2014, 17:27

любой порт типа IN (то есть вход) давно уже снабжен счетчиком и считает все срабатывания (согласно настройке: P, R, P&R)
вопрос был задан вот по какому поводу, у меня есть устройства (ethernet)на мега 32 ореинтированные для работы без сервера , сообщения на сервер носят уведомительный характер, так вот решил я его подреставрировать ,добавить ему дружелюбности и взять кое что из мега-д , в контроллере есть ноги INT внешние прерывания , так вот я думаю в качестве счетчиков использывать их ну и другое применение найдется, всяко удобней чем каждый раз дергать порт в поисках импульсов для счета, вот я и спросил часто ли востребована данная функция(счетчик импульсов)
прерывания могут настраиваться по фронту по срезу ,любое изменение логического уровня генерирует запрос
очень удобно , завел и забыл , когда событие произойдет тебя оповестят

Andrey_B
Администратор
Сообщения: 5329
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 11 июл 2014, 17:40

К сожалению предложение не укладывается в универсальный подход. Все 14 портов могут теоретически потребовать функцию счетчика.
А что до удобства и оптимизации, то какая по сути разница. Контроллер все равно по большому счету ничем не занят.

alexsis_76

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение alexsis_76 » 11 июл 2014, 18:06

К сожалению предложение не укладывается в универсальный подход
это не предложение ,это был вопрос
А что до удобства и оптимизации, то какая по сути разница
не только ,бывают события которые требуют немедленной реакции, пока программа опрашивает порты(прерывания возникают асинхронно), пока советуется с сервером , может быть уже поздно
Контроллер все равно по большому счету ничем не занят
в мега-д да , ничем,(хотя он все время пытается узнать у enc не получала ли она что нибудь из сети) в моем варианте он работает а SD картой , мероприятие довольно затратное по времени,при загрузке странички с карты пинг подтормаживает 15-20мс, если еще прибавить измерение ацп на всех 7 каналах с инструкциями типа while(), задежки для 1ware , можем что нибудь и пропустить

Andrey_B
Администратор
Сообщения: 5329
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 11 июл 2014, 19:05

alexsis_76 писал(а):бывают события которые требуют немедленной реакции, пока программа опрашивает порты(прерывания возникают асинхронно), пока советуется с сервером , может быть уже поздно
Думаю, в реальной жизни вряд ли найдутся такие ситуации, при которых MegaD пропустит событие. Не мезоны же с бозонами нам регистрировать ;)
Хотя мысль с внешними прерываниями, конечно, интересная.

А насчет SD. Я лично допускаю и приветствую все возможные комбинации, в том числе с периферией, но считаю, что есть некая грань, перешагнув через которую, уже много проще взять готовые решения на ARM с поддержкой ядром Linux. Это как с инструментом (что-то у меня сегодня все про одно). Хороший ручной инструмент всегда заточен под выполнение конкретных задач, но зато прекрасно заточен. А ежели надо вот так и так, да глубже и мощнее, то вызывай экскаватор. Но это просто точка зрения. Ничего более.

alexsis_76

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение alexsis_76 » 11 июл 2014, 19:12

А насчет SD
там все не сильно тяжело, немножко скриптов , немножко css , захотелось красивого веба , а с памятью в меге сами знаете как
да вот посмотрите http://ab-log.ru/forum/viewtopic.php?f= ... &start=220 там внизу фотографии

shaman1010
Сообщения: 142
Зарегистрирован: 12 ноя 2013, 00:34

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение shaman1010 » 11 июл 2014, 23:34

alexsis_76 писал(а):действительно ли необходимо на каждом порту иметь счетчик импульсов, может быть лучше организовать счетчики на основе внешних прерываний ,правда их будет всего 3
alexsis_76 - можно поступить проще. Выделяем группу портов, которые могут быть IN-ами. Добавляем по одному диоду на ногу в сторону лапы с прерыванием. И имеем все, что нужно: много входов, которые можно подсчитывать, и все на одном прерывании. Т.е. дергаем лапу IN, а она через диод дергает параллельно прерывание. Контроллер увидел прерывание - проверил какая лапа нажалась и прибавил счетчик к ней.
Таким образом можно и что-то вроде многоканального диммера организовать. Или повесить геркон на вертушку и считать что-то...

Ответить