бываетС того момента и заблуждаюсь
Прошивка MegaD-328 (релизы, обсуждения, предложения)
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
несколько модулей на 1 голову?Andrey_B писал(а):Да, из новостей. Тестируется проект на atmega2560/atmega2561.
Планируется плавный переход на этот чип. На первом этапе atmega328 будет заменена на atmega2561 с полной аппаратной совместимостью с ранее выпущенными исполнительными модулями.
и выходы ШИМ будут все свободны для использования? их там немного..
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Как я и написал, полная аппаратная совместимость на данном этапе означает, что можно будет просто заменить плату/модуль в уже существующей и работающей системе и все будет работать как прежде.Dron писал(а):несколько модулей на 1 голову?Andrey_B писал(а):Да, из новостей. Тестируется проект на atmega2560/atmega2561.
Планируется плавный переход на этот чип. На первом этапе atmega328 будет заменена на atmega2561 с полной аппаратной совместимостью с ранее выпущенными исполнительными модулями.
и выходы ШИМ будут все свободны для использования? их там немного..
То есть модуль внешне и по части подключений и разъемов будет полностью идентичным. Все те же 14+2 портов, но: а) оперативной памяти в 4 раза больше; б) флеша в 8 раз больше; в) 8 АЦП портов и 7 ШИМ портов. г) доп. АЦП порты, которые были ранее, смогут работать и как входы/выходы. Это будет модуль для прямой замены существующего. А дальше посмотрим.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Итак, тестирование показало, что MegaD-328 МОЖЕТ работать с шиной I2C. Ура?kod.begemot писал(а):Это было бы шикарно. Эх... ведь если удастся реализовать I2C - ведь можно будет и дисплей небольшой, к примеру, прикошачить без костылей 1-wire и задействуя только 2 ноги...Andrey_B писал(а):kod.begemot, боюсь даже отказавшись от DHT мы не разместим реализацию I2C. Впрочем, есть одна мысль. Проверю - доложу. Вот только датчика у меня такого нет, поэтому нужно время, чтобы его заказать.
И вот, как это работает.
Конечно, в существующую прошивку реализация I2C поместиться не может. И дело даже не в самой реализации базовых функций. I2C достаточно простой протокол. Сложность в том, что все устройства для I2C разные, схема взаимодействия с ними разная. Все это тянуть в прошивку нецелесообразно. Поэтому я решил вопрос проще и как мне кажется интереснее.
Я немного поправил прошивку, чтобы имелась возможность через HTTP менять режим работы порта типа NC, то есть переключать его в режим входа или выхода. А далее написал реализацию I2C на PHP. Что в итоге?
Теперь мы берем, к примеру, MegaD-14-IN, подключаем ведомое устройство (датчик или еще что) к 2 портам (один порт тактирование SCL, другой шина данных SDA) и настраиваем их как NC.
Далее запускаем программу, которая дергает этими портами через HTTP, получает/отправляет данные.
Код программы можно менять на компьютере. Соответственно реализовать работу можно с любым устройством без необходимости вносить какие-то изменения в прошивку.
I2C - протокол, у которого нет минимальной скорости работы. Для большинства устройств максимальная частота 100кГц. В режим вот такой программной эмуляции, происходящей через HTTP получается скорость порядка 70-75 Гц. Это немного, но стоит сказать, что чаще всего нужно считать всего несколько байт, поэтому сеанс такой связи будет занимать, может быть, 1-3 секунды. При этом устройство не блокируется.
Более подробно с публикованием кода I2C-PHP напишу позже, когда у меня будет датчик BMP180.
-
- Сообщения: 400
- Зарегистрирован: 21 сен 2013, 00:38
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
А что по ценам? 2560 вроде бы как в 3 раза дороже, а 2561 так и вообще раз в 5...
P.S. а так - всё вкусно предлагаете
Приятно, если будет поддерживаться и ветка для старой версии...
P.P.S. Программная реализация I2C через скрипт - по моему идея великолепная!
P.S. а так - всё вкусно предлагаете
Приятно, если будет поддерживаться и ветка для старой версии...
P.P.S. Программная реализация I2C через скрипт - по моему идея великолепная!
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
имхо... только личное мнение:Andrey_B писал(а): Как я и написал, полная аппаратная совместимость на данном этапе означает, что можно будет просто заменить плату/модуль в уже существующей и работающей системе и все будет работать как прежде.
То есть модуль внешне и по части подключений и разъемов будет полностью идентичным. Все те же 14+2 портов, но: а) оперативной памяти в 4 раза больше; б) флеша в 8 раз больше; в) 8 АЦП портов и 7 ШИМ портов. г) доп. АЦП порты, которые были ранее, смогут работать и как входы/выходы. Это будет модуль для прямой замены существующего. А дальше посмотрим.
сделать обратную совместимость со старыми исполнительными модулями важно и нужно. НО!! при этом можно полноценно подключать ДВА любых исполнительных модуля.
зачем полностью и абсолютно кастрировать новый камень ради обратной совместимости?
просто два разъёма под два исполнительных модуля. как минимум. а ещё можно сделать возможность (это усложнение, но памяти реально много) работать в режиме совместимости (кастрированный режим, со старыми модулями) и новый полноценный режим для использования всех (или большинства) новых возможностей.
ещё раз повторюсь, это просто моё личное видение перехода на новый процессор
Вы ошибаетесь. ATmega2560 и ATmega2561kod.begemot писал(а):А что по ценам? 2560 вроде бы как в 3 раза дороже, а 2561 так и вообще раз в 5...
61я дешевле
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Dron, ну хорошо, а куда вы разместите второй шлейф? На плате и главным образом в корпусе для этого не очень много места.
А размер корпуса в данном случае имеет важное значение. Вот, к примеру, у вас смонтированный щиток, все под завязку. Захочется сделать апгрейд, а корпус в уже существующее посадочное место не лезет...
"61я дешевле"
Это зависит от того, где, как и сколько брать. Да и при сегодняшних резких скачках курсов валют цена компонента понятие не очень точное.
А даже если разница и есть, то в стоимости конечного продукта она несущественна.
А размер корпуса в данном случае имеет важное значение. Вот, к примеру, у вас смонтированный щиток, все под завязку. Захочется сделать апгрейд, а корпус в уже существующее посадочное место не лезет...
"61я дешевле"
Это зависит от того, где, как и сколько брать. Да и при сегодняшних резких скачках курсов валют цена компонента понятие не очень точное.
А даже если разница и есть, то в стоимости конечного продукта она несущественна.
-
- Сообщения: 400
- Зарегистрирован: 21 сен 2013, 00:38
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Dron, признаю - таких цен не видел. Смотрел на ebay.com.
Андрей, А что если оптимизировать использование пинов нынешнего разъёма? Можно сделать переходник с нового разъёма (к примеру 40 pin) на два старых, а в новом уменьшить количество "земли"... При этом чередование "земли" и сигнальных жил можно сохранить после переходника... Простой печатный переходник, 40 pin - 2x34.
Андрей, А что если оптимизировать использование пинов нынешнего разъёма? Можно сделать переходник с нового разъёма (к примеру 40 pin) на два старых, а в новом уменьшить количество "земли"... При этом чередование "земли" и сигнальных жил можно сохранить после переходника... Простой печатный переходник, 40 pin - 2x34.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
kod.begemot, думал о таком варианте. Но тоже возникает масса разных вопросов.
Все-таки считаю целесообразным на данный момент пойти поэтапно.
Все-таки считаю целесообразным на данный момент пойти поэтапно.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Итак, тестирование показало, что MegaD-328 МОЖЕТ работать с шиной I2C
а если задействовать аппаpатный модуль i2c, там кода всего с десяток строкА далее написал реализацию I2C на PH
а как Вы видите управление индикатором по шине ? нет сервера нет и индикации о как
а может задуматься о переходе на последовательный интерфейс, выйдет дороже но и возможностей поболееА что если оптимизировать использование пинов нынешнего разъёма? Можно сделать переходник с нового разъёма (к примеру 40 pin) на два старых, а в новом уменьшить количество "земли"...
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Я говорю о проекте в целом, а не о конкретном устройстве, которое делается для себя.alexsis_76 писал(а):а если задействовать аппаpатный модуль i2c, там кода всего с десяток строкА далее написал реализацию I2C на PH
Преимущество программной реализации и заключается в том, что можно использовать уже готовый контроллер и ничего дополнительно не задействовать.
Это во-первых. А, во-вторых, работа с каждым устройством для шины I2C строится по-разному. Одни устройства нужно инициализировать, другие управляются через запись данных в контрольные регистры, третьи требуют получение калибровочных коэффициентов и расчет значения по сложной формуле. И что, все это тянуть в прошивку? Громадным преимуществом программной реализации является то, что весь код можно хранить на сервере. А контроллер, таким образом, позволяет подключать любые устройства, работающие по шине I2C, не привязываясь к каким-то "поддержкам" со стороны прошивки.
Снова и снова вынужден повторять. Я рассматриваю "Умный Дом" как систему в целом, а не как набор отдельных элементов. Во главе этой системы стоит главный управляющей элемент - сервер. Конечно, остановка сервера приведет с ограничениям в работе Умного Дома. Но можно ли полноценно реализовать абсолютно гибкую автоматику в "распределенной" системе? Вопрос дискуссионный и не для данной темы. С моей точки зрения нельзя.alexsis_76 писал(а): а как Вы видите управление индикатором по шине ? нет сервера нет и индикации о как
Простой пример. Я хочу отображать данные с метеостанции с USB-интерфейсом. Как эти данные в принципе могут отображаться без сервера? Различных устройств в доме может быть очень много. Все они могут работать по разным шинам, протоколам и т.д. Сервер является связующим звеном. Делать из MegaD-328 сервер я не хочу, так как писать алгоритмы (а именно алгоритмы и есть Умный Дом), использовать массу уже готового ПО, на сервере на порядки проще. Все это проговаривалось сотни раз...
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
к примеру, у меня 4 головы и 4 исполнителя. после апгрейда будет 2 головы и 4 исполнителя. так что "головы" можно делать крупнее. и экономически это на треть дешевле выйдет, чем 2 головыAndrey_B писал(а):Вот, к примеру, у вас смонтированный щиток, все под завязку. Захочется сделать апгрейд, а корпус в уже существующее посадочное место не лезет...
как вариант, делать разъёмы на голове не 40-пин, а 20-пин. для совместимости можно использовать платку-переходник 20->40. всё равно выгоднее.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Dron, возможно. Подумаю по этому поводу.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Можно попробовать уместить второй разъём на стороне ethernet, вполне должен влезть. ISP вынести на плату с индикаторами, используется редко, мешать не будет. А от аналоговых портов на 3 пина можно отказаться. Конечно сложновато будет все это упаковать, вместе с ENC, но и они есть в других корпусах. И обратная совместимость и правильные размеры устройства в одном флаконе.
-
- Сообщения: 516
- Зарегистрирован: 20 окт 2012, 12:40
- Откуда: Мюнхен
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Андрей, немного по поводу I2C.
Не обязательно устраивать ногодрыг, можно использовать аппаратный следующим образом:
у нас драйвер принимает на входе структуру:т.е. для всех устройств у нас один драйвер, а обработка ваполняется на стороне сервера.
собственно сами драйвера
BMP180 довольно сложна для работы, рассмотрим LM75
на вход драйвера даем структуру: addr, 0x03, 0x01, 0x02, 0x00
address: адрес 0x48 - 0x4F
access: 0x03 - чтение/запись
write: 1 - не используется
read: 2 байта на чтение.
data[]: 0x00 - данные для записи, start conversion
после получаем ответ
address: адрес 0x48 - 0x4F
access: 0x10 - все в порядке либо ошибки
write: 1 - байт записано
read: 2 - байта считано
data[]: 0x16, 0x66 - 22.4 градуса
Не обязательно устраивать ногодрыг, можно использовать аппаратный следующим образом:
у нас драйвер принимает на входе структуру:
Код: Выделить всё
typedef struct
{
uint8_t address; // адрес устройства на шине
uint8_t access; // доступ 1 запись, 2 чтение, остальные биты игнорируются
uint8_t write; // байт на запись, сейчас не используется
uint8_t read; // байт на чтение
uint8_t data[]; // данные для записи
} TWI_FRAME_t;
собственно сами драйвера
BMP180 довольно сложна для работы, рассмотрим LM75
на вход драйвера даем структуру: addr, 0x03, 0x01, 0x02, 0x00
address: адрес 0x48 - 0x4F
access: 0x03 - чтение/запись
write: 1 - не используется
read: 2 байта на чтение.
data[]: 0x00 - данные для записи, start conversion
после получаем ответ
address: адрес 0x48 - 0x4F
access: 0x10 - все в порядке либо ошибки
write: 1 - байт записано
read: 2 - байта считано
data[]: 0x16, 0x66 - 22.4 градуса
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
comparator, я думал о таком режиме. Примерно в том же виде реализована сейчас работа с ИК.
Часть черновой работы выполняет контроллер, а сервер раздает команды.
Но проблема в том, что в atmega328 нет доступного флеша даже для этого. Ну то есть приходится выкраивать каждый байт под какие-то правки.
Отчасти поэтому были форсированы работы по переезду на 2561.
С другой же стороны, у нас есть GET-параметр "cmd", который предназначен для выполнения сценария типа ""8:1;9:1;8:0" и так далее.
Это позволяет реализовать в одном запросе не один дрыг, а сразу пачку.
В результате, к примеру, опрос простейшего ведомого занимает порядка 0,3-0,4 секунды. То есть вполне себе быстро.
И в этом смысле какая разница, как именно это реализовано. Зато 0 байт в графе потраченного флеша и десяток строк на PHP.
Но в 2561 к аппаратной реализации можно будет вернуться, если в этом будет реальная необходимость. Ведь работа с подобными датчиками не требует сверхвысокой скорости. Им еще и время подавай для формирования/конвертации значений.
Часть черновой работы выполняет контроллер, а сервер раздает команды.
Но проблема в том, что в atmega328 нет доступного флеша даже для этого. Ну то есть приходится выкраивать каждый байт под какие-то правки.
Отчасти поэтому были форсированы работы по переезду на 2561.
С другой же стороны, у нас есть GET-параметр "cmd", который предназначен для выполнения сценария типа ""8:1;9:1;8:0" и так далее.
Это позволяет реализовать в одном запросе не один дрыг, а сразу пачку.
В результате, к примеру, опрос простейшего ведомого занимает порядка 0,3-0,4 секунды. То есть вполне себе быстро.
И в этом смысле какая разница, как именно это реализовано. Зато 0 байт в графе потраченного флеша и десяток строк на PHP.
Но в 2561 к аппаратной реализации можно будет вернуться, если в этом будет реальная необходимость. Ведь работа с подобными датчиками не требует сверхвысокой скорости. Им еще и время подавай для формирования/конвертации значений.
-
- Сообщения: 400
- Зарегистрирован: 21 сен 2013, 00:38
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Да, чую что следующий давай будет уже "Ultra-2561", если ещё и поддержка дисплеев, термодатчиков дешёвых, bmp-180... А ИК управление, а можно добавить и считывание... Да если ещё можно будет и термостаты строить на внутренней логике на LM75...
И так комбайн универсальный, а будет и того круче!
P.S. 2561 выбрана из-за более удобного корпуса?
И так комбайн универсальный, а будет и того круче!
P.S. 2561 выбрана из-за более удобного корпуса?
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Развитию проекта мешает, прежде всего, ограничения в виде отсутствия достаточного количества памяти. Поэтому не так важно сколько портов, важен объем памяти.kod.begemot писал(а):P.S. 2561 выбрана из-за более удобного корпуса?
У 2561 меньше ног. Часть из них не будет на первом этапе даже разведена на плате. Исполнительный модуль тоже не хочется увеличивать в размерах, так как это приличное удорожание, а не всем нужно много портов.
Идея с двумя исполнительными модулями лучше, но эта тема для отдельной проработки.
А вот "бренд" MegaD-328 уже стал таким привычным, что название менять не хочется... Но какое-то отличие, наверное, должно быть.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Андрей, подскажите, может ли Мега отрабатывать длинные нажатия без помощи внешнего сервера? Очень хотелось бы иметь такой функционал
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Evgeniy, а что значит "отрабатывать"? Полагаю это означает, что должно быть два разных поля Action для обычного и длинного нажатия. К сожалению в рамках atmega328 это реализовать нельзя.
Или вы имеете ввиду отправку на сервер информации о длинном нажатии?
Или вы имеете ввиду отправку на сервер информации о длинном нажатии?