Прошивка MegaD-328 (релизы, обсуждения, предложения)
-
- Сообщения: 516
- Зарегистрирован: 20 окт 2012, 12:40
- Откуда: Мюнхен
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Работа с DHT на чистых задержках не приводит ни к чему хорошему, по моим измерениям тактовая у DHT плавает на +-20%. Что нельзя покрыть чистыми delay'ями.
В своей библиотеке я работаю по прерываниям , дополнительно используется таймер. Плюс учтен момент с нестабильностью.
Устойчиво работают 2 из 3х DHT22. На Tiny с внутренним генератором.
С DHT11 статистики нет, так как они могут показать только 1 параметр точно, при каких условиях их калибровали.
Андрей посмотрите, может быть используете в своем проекте.
Собственно библиотека
В своей библиотеке я работаю по прерываниям , дополнительно используется таймер. Плюс учтен момент с нестабильностью.
Устойчиво работают 2 из 3х DHT22. На Tiny с внутренним генератором.
С DHT11 статистики нет, так как они могут показать только 1 параметр точно, при каких условиях их калибровали.
Андрей посмотрите, может быть используете в своем проекте.
Собственно библиотека
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
comparator, спасибо!
Правда проблема в том, что все таймеры заняты (один для дебоунсинга кнопок, два для портов ШИМ).
Правда проблема в том, что все таймеры заняты (один для дебоунсинга кнопок, два для портов ШИМ).
-
- Сообщения: 516
- Зарегистрирован: 20 окт 2012, 12:40
- Откуда: Мюнхен
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Если таймер 1 перевести с предделителя 256 на 8, то можно его использовать. Монопольный режим не нужен, нам нужно только состояние счетчика на данный момент. С предделителем 256 погрешность будет большая, 0 от 1 не отличим. А счетчику без разницы считать до 244 или 7812.Andrey_B писал(а):comparator, спасибо!
Правда проблема в том, что все таймеры заняты (один для дебоунсинга кнопок, два для портов ШИМ).
Будет время, попробую поиграться на выходных.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Еще заметил я в версии beta5 такую особенность.
Когда порту в режиме PWM присваиваешь какое то значение и жмешь "применить" то применяется.
Жмешь сохранить, сбрасывается в 0 значение.
И еще, если после применения пропало питание на устройстве, то значение PWM не запоминается.
Это так надо или это ошибка ?
Когда порту в режиме PWM присваиваешь какое то значение и жмешь "применить" то применяется.
Жмешь сохранить, сбрасывается в 0 значение.
И еще, если после применения пропало питание на устройстве, то значение PWM не запоминается.
Это так надо или это ошибка ?
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
asteroid, это не баг.
Сохранение конфигурации порта приводит к рестарту устройства. Текущее состояние портов в EEPROM не сохраняются. В результате значение PWM 0
Когда-то было обсуждение на этот счет. И была разумная аргументированная точка зрения. Количество циклов записи EEPROM не очень большое. А заранее мы не знаем о том, каким образом может использоваться устройство. Представьте себе, что необходимо что-то переключать несколько раз в секунду (например, цветомузыка или управление ЖК-дисплеем). В таком режиме EEPROM проживет не долго.
А делать отдельную настройку - сохранять/не сохранять для каждого порта как-то не очень рационально. Каждая такая настройка - ресурсы МК.
Но можно, например, предусмотреть такую фичу. После включения устройство связывается с сервером (по определенному запросу) и как бы спрашивает его какое состояние портов восстановить. Сервер же может сохранять текущее состояние сколько угодно.
Сохранение конфигурации порта приводит к рестарту устройства. Текущее состояние портов в EEPROM не сохраняются. В результате значение PWM 0
Когда-то было обсуждение на этот счет. И была разумная аргументированная точка зрения. Количество циклов записи EEPROM не очень большое. А заранее мы не знаем о том, каким образом может использоваться устройство. Представьте себе, что необходимо что-то переключать несколько раз в секунду (например, цветомузыка или управление ЖК-дисплеем). В таком режиме EEPROM проживет не долго.
А делать отдельную настройку - сохранять/не сохранять для каждого порта как-то не очень рационально. Каждая такая настройка - ресурсы МК.
Но можно, например, предусмотреть такую фичу. После включения устройство связывается с сервером (по определенному запросу) и как бы спрашивает его какое состояние портов восстановить. Сервер же может сохранять текущее состояние сколько угодно.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Вот это действительно нужно - отправка запроса на сервер после перезагрузки. Возможно даже два варианта запросов: 1) софт рестарт (после сохранения конфигурации) и 2) хард рестарт (после сброса по питанию).Andrey_B писал(а): ...
Но можно, например, предусмотреть такую фичу. После включения устройство связывается с сервером (по определенному запросу) и как бы спрашивает его какое состояние портов восстановить. Сервер же может сохранять текущее состояние сколько угодно.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Спасибо за совет.Сервер же может сохранять текущее состояние сколько угодно.
Чего то не подумал, я же могу сам сделать так, что бы после восстановления электричества, сервер (мой) сразу отправил команду с теми данными, какие были на момент когда все рухнуло.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
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-интерфейсе домашнего сайта будет всегда актуальная информация
- Так можно отслеживать доступность и работоспособность устройства
- Самое главное - в качестве сервера можно указать компьютер в Интернете. Таким образом, не имея прямого доступа к устройству (например, оно размещено в приватной сети), можно осуществлять контроль и управление им из Интернета. Устройство, сообщая информацию о портах, также выполнит команды, которые получит от сервера. А такой "компьютер" в Интернете скоро будет.
Это очень тестовая прошивка.
В настройках в закладке 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-интерфейсе домашнего сайта будет всегда актуальная информация
- Так можно отслеживать доступность и работоспособность устройства
- Самое главное - в качестве сервера можно указать компьютер в Интернете. Таким образом, не имея прямого доступа к устройству (например, оно размещено в приватной сети), можно осуществлять контроль и управление им из Интернета. Устройство, сообщая информацию о портах, также выполнит команды, которые получит от сервера. А такой "компьютер" в Интернете скоро будет.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Andrey_B, здравствуйте!
Велик ваш труд, да пребудет с вами сила
Мне вот что интересно. Возможно ли в ближайшую прошивку добавить функцию инкрементального счетчика по одному из входов с выдачей информации по Ethernet на какой-либо сервер по выбранному пользователем порту?
Если да, то я вижу это следующим образом - некий порт переводится в режим подсчета импульсов на входе, данные суммируются в регистре и по заданному промежутку сумма передаются на сервер. так же необходимо предусмотреть сброс счетчика на ноль.
Я думаю, данная функция пригодилась бы многим
А так же было бы неплохо в полях Server и NetAction сделать возможность указывать любой порт
Велик ваш труд, да пребудет с вами сила
Мне вот что интересно. Возможно ли в ближайшую прошивку добавить функцию инкрементального счетчика по одному из входов с выдачей информации по Ethernet на какой-либо сервер по выбранному пользователем порту?
Если да, то я вижу это следующим образом - некий порт переводится в режим подсчета импульсов на входе, данные суммируются в регистре и по заданному промежутку сумма передаются на сервер. так же необходимо предусмотреть сброс счетчика на ноль.
Я думаю, данная функция пригодилась бы многим
А так же было бы неплохо в полях Server и NetAction сделать возможность указывать любой порт
-
- Сообщения: 395
- Зарегистрирован: 17 фев 2013, 23:49
- Откуда: Волгодонск, Ростовская обл.
- Контактная информация:
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
А зачем нагружать этой задачей мегу? Сделайте скрипт на сервере и пусть он по расписанию считывает данные с меги. Хотя можно и каждое срабатывание входа обрабатывать сервером (подкорректировать mod_megad.php)
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
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
Сброс счетчика происходит командой типа
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
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Большое спасибо за разъяснение
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
добрый день , хочу спросить у сведующих , в мега-д есть функция когда порт настроен на вход он может считать входные импульсы,вопрос в следующем действительно ли необходимо на каждом порту иметь счетчик импульсов, может быть лучше организовать счетчики на основе внешних прерываний ,правда их будет всего 3 но в программе не надо будет каждый раз опрашивать порт на наличие импульсов, контроллер все сделает сам, прерывания могут настраиваться по фронту по срезу ,любое изменение логического уровня генерирует запрос прерывания
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
alexsis_76, а можете расшифровать? Что-то я ничего не понял.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
вопрос был задан вот по какому поводу, у меня есть устройства (ethernet)на мега 32 ореинтированные для работы без сервера , сообщения на сервер носят уведомительный характер, так вот решил я его подреставрировать ,добавить ему дружелюбности и взять кое что из мега-д , в контроллере есть ноги INT внешние прерывания , так вот я думаю в качестве счетчиков использывать их ну и другое применение найдется, всяко удобней чем каждый раз дергать порт в поисках импульсов для счета, вот я и спросил часто ли востребована данная функция(счетчик импульсов)любой порт типа IN (то есть вход) давно уже снабжен счетчиком и считает все срабатывания (согласно настройке: P, R, P&R)
очень удобно , завел и забыл , когда событие произойдет тебя оповестятпрерывания могут настраиваться по фронту по срезу ,любое изменение логического уровня генерирует запрос
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
К сожалению предложение не укладывается в универсальный подход. Все 14 портов могут теоретически потребовать функцию счетчика.
А что до удобства и оптимизации, то какая по сути разница. Контроллер все равно по большому счету ничем не занят.
А что до удобства и оптимизации, то какая по сути разница. Контроллер все равно по большому счету ничем не занят.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
это не предложение ,это был вопросК сожалению предложение не укладывается в универсальный подход
не только ,бывают события которые требуют немедленной реакции, пока программа опрашивает порты(прерывания возникают асинхронно), пока советуется с сервером , может быть уже поздноА что до удобства и оптимизации, то какая по сути разница
в мега-д да , ничем,(хотя он все время пытается узнать у enc не получала ли она что нибудь из сети) в моем варианте он работает а SD картой , мероприятие довольно затратное по времени,при загрузке странички с карты пинг подтормаживает 15-20мс, если еще прибавить измерение ацп на всех 7 каналах с инструкциями типа while(), задежки для 1ware , можем что нибудь и пропуститьКонтроллер все равно по большому счету ничем не занят
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Думаю, в реальной жизни вряд ли найдутся такие ситуации, при которых MegaD пропустит событие. Не мезоны же с бозонами нам регистрироватьalexsis_76 писал(а):бывают события которые требуют немедленной реакции, пока программа опрашивает порты(прерывания возникают асинхронно), пока советуется с сервером , может быть уже поздно
Хотя мысль с внешними прерываниями, конечно, интересная.
А насчет SD. Я лично допускаю и приветствую все возможные комбинации, в том числе с периферией, но считаю, что есть некая грань, перешагнув через которую, уже много проще взять готовые решения на ARM с поддержкой ядром Linux. Это как с инструментом (что-то у меня сегодня все про одно). Хороший ручной инструмент всегда заточен под выполнение конкретных задач, но зато прекрасно заточен. А ежели надо вот так и так, да глубже и мощнее, то вызывай экскаватор. Но это просто точка зрения. Ничего более.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
там все не сильно тяжело, немножко скриптов , немножко css , захотелось красивого веба , а с памятью в меге сами знаете какА насчет SD
да вот посмотрите http://ab-log.ru/forum/viewtopic.php?f= ... &start=220 там внизу фотографии
-
- Сообщения: 142
- Зарегистрирован: 12 ноя 2013, 00:34
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
alexsis_76 - можно поступить проще. Выделяем группу портов, которые могут быть IN-ами. Добавляем по одному диоду на ногу в сторону лапы с прерыванием. И имеем все, что нужно: много входов, которые можно подсчитывать, и все на одном прерывании. Т.е. дергаем лапу IN, а она через диод дергает параллельно прерывание. Контроллер увидел прерывание - проверил какая лапа нажалась и прибавил счетчик к ней.alexsis_76 писал(а):действительно ли необходимо на каждом порту иметь счетчик импульсов, может быть лучше организовать счетчики на основе внешних прерываний ,правда их будет всего 3
Таким образом можно и что-то вроде многоканального диммера организовать. Или повесить геркон на вертушку и считать что-то...