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

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
d.v.ermakov
Администратор
Сообщения: 2187
Зарегистрирован: 29 май 2015, 21:23
Откуда: Екатеринбург, Нижний Тагил

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

Сообщение d.v.ermakov » 12 фев 2016, 16:03

Как практический пользователь RGB-подсветки длиной 15 метров могу сказать, что спросом пользуются только три способа управления. Все остальные отмерли за ненадобностью (даже DMX контроллер крутой на стене).
1. Прямой выбор цвета и яркости на планшете или телефоне.
2. Плавное (1Гц) переливание цветов через потухание с регулировкой максимальной яркости.
3. Моргание под музыку от микрофона отдельного контроллера.

Оборудование: лента Camelion 5050 - 3х5 метров; повторитель/усилитель Arlight и блок питания Meanwell непосредственно у ленты; китайский контроллер Music2; MegaD 14-IN + драйвер L298N.

alexsis_76

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

Сообщение alexsis_76 » 12 фев 2016, 16:50

Как практический пользователь RGB-подсветки длиной 15 метров могу сказать, что спросом пользуются только три способа управления. Все остальные отмерли за ненадобностью (даже DMX контроллер крутой на стене).
Это я для примера, практическая задача сделать меню для часов-будильника-термостата-читателя для ключей-таблеток с помощью трех кнопок, если просто одна кнопка-одно действие то ничего не получается :( сейчас вроде сделал но чет оно какое то не такое, все эти множественные нажатия , работает но слишком умно

nevkon
Сообщения: 268
Зарегистрирован: 23 апр 2014, 14:48

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

Сообщение nevkon » 13 фев 2016, 20:27

Здравствуйте.
Возникла проблема - на портах A6 и A7 не выполняется Action.
Версия прошивки - 3.34. Если были исправления такой проблемы, укажите пожалуйста в какой прошивке.

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

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

Сообщение Andrey_B » 13 фев 2016, 20:34

nevkon, а что мешает установить последнюю версию прошивки?
http://ab-log.ru/smart-house/ethernet/m ... 8-firmware
24.01.2016 ver 3.39
- Исправлена ошибка в работе портов А6 и А7 в режиме "<>", если ни один другой порт не сконфигурирован как АЦП.

nevkon
Сообщения: 268
Зарегистрирован: 23 апр 2014, 14:48

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

Сообщение nevkon » 13 фев 2016, 21:22

Заработало, но опрос производится слишком редко. Насколько сложно будет увеличить частоту опроса (хотя бы до 4-х раз в секунду вместо раза в 5 секунд)?

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

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

Сообщение Andrey_B » 13 фев 2016, 22:34

nevkon, я думаю это заметно скажется на производительности, поэтому считаю, что увеличивать частоту опроса, да еще так кардинально, не следует.

nevkon
Сообщения: 268
Зарегистрирован: 23 апр 2014, 14:48

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

Сообщение nevkon » 14 фев 2016, 17:29

Попробовал скомпилировать прошивку 3.40 - пишет что слишком большая. avr-gcc - 4.8.2, avr-libc - 1.8.0, binutils-avr - 2.23.1
Делаю make, вывод:
avr-gcc -g -mmcu=atmega328p -Wall -W -Os -fno-split-wide-types -fno-tree-scev-cprop -mcall-prologues -Wl,-gc-section -fdata-sections -ffunction-sections -Wl,--relax -Os -c main.c
avr-gcc -g -mmcu=atmega328p -Wall -W -Os -fno-split-wide-types -fno-tree-scev-cprop -mcall-prologues -Wl,-gc-section -fdata-sections -ffunction-sections -Wl,--relax -Os -c ip_arp_udp_tcp.c
avr-gcc -g -mmcu=atmega328p -Wall -W -Os -fno-split-wide-types -fno-tree-scev-cprop -mcall-prologues -Wl,-gc-section -fdata-sections -ffunction-sections -Wl,--relax -Os -c enc28j60.c
avr-gcc -g -mmcu=atmega328p -Wall -W -Os -fno-split-wide-types -fno-tree-scev-cprop -mcall-prologues -Wl,-gc-section -fdata-sections -ffunction-sections -Wl,--relax -Os -c websrv_help_functions.c
avr-gcc -g -mmcu=atmega328p -Wall -W -Os -fno-split-wide-types -fno-tree-scev-cprop -mcall-prologues -Wl,-gc-section -fdata-sections -ffunction-sections -Wl,--relax -Os -c hw_dht.c
avr-gcc -g -mmcu=atmega328p -Wall -W -Os -fno-split-wide-types -fno-tree-scev-cprop -mcall-prologues -Wl,-gc-section -fdata-sections -ffunction-sections -Wl,--relax -o megad-328.elf -Wl,-Map,megad-328.map main.o ip_arp_udp_tcp.o enc28j60.o websrv_help_functions.o hw_dht.o
avr-objcopy -R .eeprom -O ihex megad-328.elf megad-328.hex
avr-size megad-328.elf
text data bss dec hex filename
28388 1108 1280 30776 7838 megad-328.elf

Expl.: data=initialized data, bss=uninitialized data, text=code

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

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

Сообщение Andrey_B » 14 фев 2016, 17:48

От версии компилятора очень сильно зависит размер.
Я использую 4.8.1 в Debian 8.3. По размеру прошивка проходит, но впритык.
Может быть, 4.8.2 генерирует код больше или он сам скомпилирован с другими настройками по умолчанию.

nevkon
Сообщения: 268
Зарегистрирован: 23 апр 2014, 14:48

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

Сообщение nevkon » 14 фев 2016, 18:16

Можно вас попросить сделать компилированную версию с частым опросом А6 и А7 для меня? Похоже пока я подберу подходящий вариант компилятора потрачу уйму времени (в итоге я его все таки подберу). У меня они будут отрабатывать нажатие кнопок в редко используемых местах. Собственно где подправить я нашел (там всего 1 строчка), но с компиляцией пока затык.

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

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

Сообщение Andrey_B » 14 фев 2016, 21:31

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

- Произведена небольшая оптимизация кода, которая позволила освободить несколько десятков байт памяти и улучшить производительность примерно на 5%
- Исправлена работа с длительными нажатиями, если порт настроен не для взаимодействия с ШИМ-портом.
- Исправлена ситуация, когда для некоторых входов, когда они были замкнуты, не срабатывал Action при включении устройства.

Andrey2509
Сообщения: 141
Зарегистрирован: 22 июн 2015, 13:24

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

Сообщение Andrey2509 » 15 фев 2016, 09:32

Можно ли реализовать такую функцию (или в atmega2561 ):
С сервера отправляется GET запрос с параметрами на контроллер : номер порта выхода, номер порта входа (1-wire), температура, гистерезис.
Контроллер прописывает эти настройки в свойствах порта. Таким образом реализуется возможность формировать установки контроллера по внешним условиям.

nevkon
Сообщения: 268
Зарегистрирован: 23 апр 2014, 14:48

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

Сообщение nevkon » 15 фев 2016, 11:18

В php скрипте обновления есть возможность чтения/записи конфигурации. Можно использовать эту возможность, только учтите что при смене конфигурации мегу надо перезапускать (не думаю что вам это понравится). А так прошивка на текущей меге уже так вылизана что даже полшага в сторону уже делает ее невпихуемой в мегу. Никак не получается подобрать компилятор, видимо придется таки делать ВМ с конфигурацией автора.

Andrey2509
Сообщения: 141
Зарегистрирован: 22 июн 2015, 13:24

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

Сообщение Andrey2509 » 15 фев 2016, 11:36

Раз megad-328 не потянет, то тогда это запрос функции на atmega2561. И конечно же без перезагрузки.
Плюс желательно научить контроллер общаться с внешним миром - например сделать возможность примитивного опроса по http/icmp внешних IP. Считать параметр с внешнего сервера - и в зависимости от него менять логику порта (на данный момент megad-328 может передать команду другой меге, а вот сама считать данные с меги или с другого IP по http - не может).

nevkon
Сообщения: 268
Зарегистрирован: 23 апр 2014, 14:48

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

Сообщение nevkon » 15 фев 2016, 19:07

Удалось собрать прошивку 3.40 так чтобы поместилась в контроллер. Возникла проблема - 9 и 11 порты поменяны местами. Видимо исходники лежат не те. Попробую еще 3.39. Потом напишу инструкцию как компилить можно легко, быстро и без особых мучений.
зы 3.39 с той же проблемой. Видимо компилятор.

nevkon
Сообщения: 268
Зарегистрирован: 23 апр 2014, 14:48

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

Сообщение nevkon » 15 фев 2016, 19:26

Я жутко извиняюсь, сам тупой. Использовал шлейф от флоппика для подключения и воткнул не тот выход (тот что кросс), так что повезло что еще ничего не спалил. Инструкция за мной. Все работает и даже АЦП более-менее отзывчивы на замыкания.

nevkon
Сообщения: 268
Зарегистрирован: 23 апр 2014, 14:48

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

Сообщение nevkon » 15 фев 2016, 20:50

Значит инструкция для компиляции под форточками.
Идем сюда: https://www.arduino.cc/en/Main/OldSoftw ... s#previous
Берем версию 1.6.0 (лучше которая зип).
Распаковываем на диск С в путь без русских букв (лучше в корень, тогда получим C:\arduino-1.6.0\).
Распаковываем прошивку в полученную папку (например C:\arduino-1.6.0\).
Распаковываем туда же приложенный архив. В батнике нужно исправить пути к файлам исходников, приложен для версии 3.40, можно сделать универсальный по желанию.
Можно запустить батник напрямую, но вы не увидите вывод информации, лучше через командную строку.
Можно заливать hex файл - он появится рядом с батником.

Собственно для линукса думаю такой метод тоже прокатит, но надо будет исправить пути в файле с инструкциями.
Пробовал компилить в 1.6.5 - получился больше hex на несколько байт, но тоже поместился. Кому не лень может поперебирать версии на лучший вариант.

зы модуль 8И8О прошел проверку, так что когда будет не лень и я его приведу к красивому виду выложу.
Вложения
MegaD-328_3.40.zip
(466 байт) 207 скачиваний

nevkon
Сообщения: 268
Зарегистрирован: 23 апр 2014, 14:48

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

Сообщение nevkon » 16 фев 2016, 09:37

На ардуиновском форуме подсказали как можно А6 и А7 использовать как цифровые входы (т.е. получать лог. 0 или 1).
Вот код:
ADCSRA&=~(1<<ADEN); //отключить ацп
ADCSRB|=1<<ACME;//использовать мультиплексор
ADMUX=(1<<MUX2)|(1<<MUX1)|(1<<MUX0); //подключить вход А7
ACSR=(0<<ACD)|(1<<ACBG); //включить компаратор, сравнивать с ареф
ACSR&(1<<ACO)? Serial.println('0') : Serial.println('1');
Буду думать как прикрутить.

alexsis_76

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

Сообщение alexsis_76 » 16 фев 2016, 12:03

ACSR&(1<<ACO)? Serial.println('0') : Serial.println('1');
только уберите Serial.println ну и нужно давить дребезг
дребезг очень хороше давится с помощью этого
if(TickGet() - Anti_bounce > TICK_SECOND/60)
{
Anti_bounce = TickGet();
key=Read_Key();
}
макрос TICK_SECOND-1с ,TICK_SECOND/x где x части секунды , в данном случае 1/60 секунды опрашивается кнопки , тем самым давится дребезг
подобные конструкции позволяют получить выдежки времени
if(TickGet() - x> TICK_SECOND*5)
{
x = TickGet();

}
интервал времени 5с

RIMUS
Сообщения: 2
Зарегистрирован: 12 фев 2016, 12:30

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

Сообщение RIMUS » 17 фев 2016, 17:13

Andrey_B, Вот мои мысли по поводу перехода на 2560:
1. Корпус все таки увеличить в размерах, для того чтобы уместить два стандартных для 328 разъемов I/O. Вместо двух 328 будет одна мощная 2560... Редко приходится использовать только одну 328.
2. Можно поразмыслить по поводу внешней SRAM, аппаратно atmega2560 поддерживает до 64 К/байт. Я думаю в дальнейшем это пригодится. SRAM можно вынести на отдельный модуль и приобретать отдельно.
3. помимо SRAM можно EEPROM, и FLASH или разъем для SDCARD прикрутить. Или все это разместить на одном модуле.
Но для этого точно надо в новый корпус переносить, а цена я думаю станет не дороже двух 328.

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

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

Сообщение Andrey_B » 17 фев 2016, 18:08

RIMUS, как я уже писал, в модуль 4-DIN удалось уместить два стандартных 34-пиновых разъема. Они будут размещены там же, где и сейчас, но один будет угловым и слегка выходить за край платы, а второй выполнен в виде гребенки (без колодки). Внизу 2 АЦП разъема 3-х пиновых останутся для совместимости. Разъем для программатора уедет в глубь корпуса, а на этом месте появится 6 подтянутых 4,7КОм портов, к которым можно будет подключать цифровые датчики.
Формально получится полноценно использовать 36 портов, из которых 28 с уже существующими исполнительными модулями.
Оставшиеся свободные порты также будут выведены на разъем, но в глубине корпуса (для особых энтузиастов, которым позарез нужны будут все порты).
Что касается памяти, то по сравнению с atmega328 здесь ее столько, что хватит надолго. А когда встанет вопрос нехватки, можно будет думать про внешние микросхемы или переход на другие чипы. Будем исходить из реальных задач, а не просто так наращивать мегапикселы.

Ответить