Прошивка MegaD-328 (релизы, обсуждения, предложения)
-
- Администратор
- Сообщения: 2187
- Зарегистрирован: 29 май 2015, 21:23
- Откуда: Екатеринбург, Нижний Тагил
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Как практический пользователь RGB-подсветки длиной 15 метров могу сказать, что спросом пользуются только три способа управления. Все остальные отмерли за ненадобностью (даже DMX контроллер крутой на стене).
1. Прямой выбор цвета и яркости на планшете или телефоне.
2. Плавное (1Гц) переливание цветов через потухание с регулировкой максимальной яркости.
3. Моргание под музыку от микрофона отдельного контроллера.
Оборудование: лента Camelion 5050 - 3х5 метров; повторитель/усилитель Arlight и блок питания Meanwell непосредственно у ленты; китайский контроллер Music2; MegaD 14-IN + драйвер L298N.
1. Прямой выбор цвета и яркости на планшете или телефоне.
2. Плавное (1Гц) переливание цветов через потухание с регулировкой максимальной яркости.
3. Моргание под музыку от микрофона отдельного контроллера.
Оборудование: лента Camelion 5050 - 3х5 метров; повторитель/усилитель Arlight и блок питания Meanwell непосредственно у ленты; китайский контроллер Music2; MegaD 14-IN + драйвер L298N.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Это я для примера, практическая задача сделать меню для часов-будильника-термостата-читателя для ключей-таблеток с помощью трех кнопок, если просто одна кнопка-одно действие то ничего не получается сейчас вроде сделал но чет оно какое то не такое, все эти множественные нажатия , работает но слишком умноКак практический пользователь RGB-подсветки длиной 15 метров могу сказать, что спросом пользуются только три способа управления. Все остальные отмерли за ненадобностью (даже DMX контроллер крутой на стене).
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Здравствуйте.
Возникла проблема - на портах A6 и A7 не выполняется Action.
Версия прошивки - 3.34. Если были исправления такой проблемы, укажите пожалуйста в какой прошивке.
Возникла проблема - на портах A6 и A7 не выполняется Action.
Версия прошивки - 3.34. Если были исправления такой проблемы, укажите пожалуйста в какой прошивке.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
nevkon, а что мешает установить последнюю версию прошивки?
http://ab-log.ru/smart-house/ethernet/m ... 8-firmware
24.01.2016 ver 3.39
- Исправлена ошибка в работе портов А6 и А7 в режиме "<>", если ни один другой порт не сконфигурирован как АЦП.
http://ab-log.ru/smart-house/ethernet/m ... 8-firmware
24.01.2016 ver 3.39
- Исправлена ошибка в работе портов А6 и А7 в режиме "<>", если ни один другой порт не сконфигурирован как АЦП.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Заработало, но опрос производится слишком редко. Насколько сложно будет увеличить частоту опроса (хотя бы до 4-х раз в секунду вместо раза в 5 секунд)?
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
nevkon, я думаю это заметно скажется на производительности, поэтому считаю, что увеличивать частоту опроса, да еще так кардинально, не следует.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Попробовал скомпилировать прошивку 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
Делаю 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
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
От версии компилятора очень сильно зависит размер.
Я использую 4.8.1 в Debian 8.3. По размеру прошивка проходит, но впритык.
Может быть, 4.8.2 генерирует код больше или он сам скомпилирован с другими настройками по умолчанию.
Я использую 4.8.1 в Debian 8.3. По размеру прошивка проходит, но впритык.
Может быть, 4.8.2 генерирует код больше или он сам скомпилирован с другими настройками по умолчанию.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Можно вас попросить сделать компилированную версию с частым опросом А6 и А7 для меня? Похоже пока я подберу подходящий вариант компилятора потрачу уйму времени (в итоге я его все таки подберу). У меня они будут отрабатывать нажатие кнопок в редко используемых местах. Собственно где подправить я нашел (там всего 1 строчка), но с компиляцией пока затык.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
http://ab-log.ru/files/File/ip_manager3 ... a6-hex.zip
- Произведена небольшая оптимизация кода, которая позволила освободить несколько десятков байт памяти и улучшить производительность примерно на 5%
- Исправлена работа с длительными нажатиями, если порт настроен не для взаимодействия с ШИМ-портом.
- Исправлена ситуация, когда для некоторых входов, когда они были замкнуты, не срабатывал Action при включении устройства.
- Произведена небольшая оптимизация кода, которая позволила освободить несколько десятков байт памяти и улучшить производительность примерно на 5%
- Исправлена работа с длительными нажатиями, если порт настроен не для взаимодействия с ШИМ-портом.
- Исправлена ситуация, когда для некоторых входов, когда они были замкнуты, не срабатывал Action при включении устройства.
-
- Сообщения: 141
- Зарегистрирован: 22 июн 2015, 13:24
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Можно ли реализовать такую функцию (или в atmega2561 ):
С сервера отправляется GET запрос с параметрами на контроллер : номер порта выхода, номер порта входа (1-wire), температура, гистерезис.
Контроллер прописывает эти настройки в свойствах порта. Таким образом реализуется возможность формировать установки контроллера по внешним условиям.
С сервера отправляется GET запрос с параметрами на контроллер : номер порта выхода, номер порта входа (1-wire), температура, гистерезис.
Контроллер прописывает эти настройки в свойствах порта. Таким образом реализуется возможность формировать установки контроллера по внешним условиям.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
В php скрипте обновления есть возможность чтения/записи конфигурации. Можно использовать эту возможность, только учтите что при смене конфигурации мегу надо перезапускать (не думаю что вам это понравится). А так прошивка на текущей меге уже так вылизана что даже полшага в сторону уже делает ее невпихуемой в мегу. Никак не получается подобрать компилятор, видимо придется таки делать ВМ с конфигурацией автора.
-
- Сообщения: 141
- Зарегистрирован: 22 июн 2015, 13:24
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Раз megad-328 не потянет, то тогда это запрос функции на atmega2561. И конечно же без перезагрузки.
Плюс желательно научить контроллер общаться с внешним миром - например сделать возможность примитивного опроса по http/icmp внешних IP. Считать параметр с внешнего сервера - и в зависимости от него менять логику порта (на данный момент megad-328 может передать команду другой меге, а вот сама считать данные с меги или с другого IP по http - не может).
Плюс желательно научить контроллер общаться с внешним миром - например сделать возможность примитивного опроса по http/icmp внешних IP. Считать параметр с внешнего сервера - и в зависимости от него менять логику порта (на данный момент megad-328 может передать команду другой меге, а вот сама считать данные с меги или с другого IP по http - не может).
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Удалось собрать прошивку 3.40 так чтобы поместилась в контроллер. Возникла проблема - 9 и 11 порты поменяны местами. Видимо исходники лежат не те. Попробую еще 3.39. Потом напишу инструкцию как компилить можно легко, быстро и без особых мучений.
зы 3.39 с той же проблемой. Видимо компилятор.
зы 3.39 с той же проблемой. Видимо компилятор.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Я жутко извиняюсь, сам тупой. Использовал шлейф от флоппика для подключения и воткнул не тот выход (тот что кросс), так что повезло что еще ничего не спалил. Инструкция за мной. Все работает и даже АЦП более-менее отзывчивы на замыкания.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Значит инструкция для компиляции под форточками.
Идем сюда: 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О прошел проверку, так что когда будет не лень и я его приведу к красивому виду выложу.
Идем сюда: 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 скачиваний
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
На ардуиновском форуме подсказали как можно А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');
Буду думать как прикрутить.
Вот код:
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');
Буду думать как прикрутить.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
только уберите Serial.println ну и нужно давить дребезгACSR&(1<<ACO)? Serial.println('0') : Serial.println('1');
дребезг очень хороше давится с помощью этого
макрос TICK_SECOND-1с ,TICK_SECOND/x где x части секунды , в данном случае 1/60 секунды опрашивается кнопки , тем самым давится дребезгif(TickGet() - Anti_bounce > TICK_SECOND/60)
{
Anti_bounce = TickGet();
key=Read_Key();
}
подобные конструкции позволяют получить выдежки времени
интервал времени 5сif(TickGet() - x> TICK_SECOND*5)
{
x = TickGet();
}
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Andrey_B, Вот мои мысли по поводу перехода на 2560:
1. Корпус все таки увеличить в размерах, для того чтобы уместить два стандартных для 328 разъемов I/O. Вместо двух 328 будет одна мощная 2560... Редко приходится использовать только одну 328.
2. Можно поразмыслить по поводу внешней SRAM, аппаратно atmega2560 поддерживает до 64 К/байт. Я думаю в дальнейшем это пригодится. SRAM можно вынести на отдельный модуль и приобретать отдельно.
3. помимо SRAM можно EEPROM, и FLASH или разъем для SDCARD прикрутить. Или все это разместить на одном модуле.
Но для этого точно надо в новый корпус переносить, а цена я думаю станет не дороже двух 328.
1. Корпус все таки увеличить в размерах, для того чтобы уместить два стандартных для 328 разъемов I/O. Вместо двух 328 будет одна мощная 2560... Редко приходится использовать только одну 328.
2. Можно поразмыслить по поводу внешней SRAM, аппаратно atmega2560 поддерживает до 64 К/байт. Я думаю в дальнейшем это пригодится. SRAM можно вынести на отдельный модуль и приобретать отдельно.
3. помимо SRAM можно EEPROM, и FLASH или разъем для SDCARD прикрутить. Или все это разместить на одном модуле.
Но для этого точно надо в новый корпус переносить, а цена я думаю станет не дороже двух 328.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
RIMUS, как я уже писал, в модуль 4-DIN удалось уместить два стандартных 34-пиновых разъема. Они будут размещены там же, где и сейчас, но один будет угловым и слегка выходить за край платы, а второй выполнен в виде гребенки (без колодки). Внизу 2 АЦП разъема 3-х пиновых останутся для совместимости. Разъем для программатора уедет в глубь корпуса, а на этом месте появится 6 подтянутых 4,7КОм портов, к которым можно будет подключать цифровые датчики.
Формально получится полноценно использовать 36 портов, из которых 28 с уже существующими исполнительными модулями.
Оставшиеся свободные порты также будут выведены на разъем, но в глубине корпуса (для особых энтузиастов, которым позарез нужны будут все порты).
Что касается памяти, то по сравнению с atmega328 здесь ее столько, что хватит надолго. А когда встанет вопрос нехватки, можно будет думать про внешние микросхемы или переход на другие чипы. Будем исходить из реальных задач, а не просто так наращивать мегапикселы.
Формально получится полноценно использовать 36 портов, из которых 28 с уже существующими исполнительными модулями.
Оставшиеся свободные порты также будут выведены на разъем, но в глубине корпуса (для особых энтузиастов, которым позарез нужны будут все порты).
Что касается памяти, то по сравнению с atmega328 здесь ее столько, что хватит надолго. А когда встанет вопрос нехватки, можно будет думать про внешние микросхемы или переход на другие чипы. Будем исходить из реальных задач, а не просто так наращивать мегапикселы.