Прошивка MegaD-328 (релизы, обсуждения, предложения)
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Изменение настроек не дают вообще ни каких результатов ни в какую сторону. Может кто знает в чем дело?
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Подключил MakeFile и компилятор из WinAVR в Atmel Studio. Чудеса))
text data bss dec hex filename
27760 1060 1278 30098 7592 megad-328.elf
Что в WinAVR что в Atmel Studio - 1 в 1)) Но Atmel Studio говорит что памяти все равно нет!
Error 1 Program Memory Usage : 28598 bytes 87,3 % Full
Data Memory Usage : 2338 bytes 114,2 % Full (Memory Overflow)
EEPROM Memory Usage : 742 bytes 72,5 % Full GccApplication3 0 0 GccApplication3
При этом у WinAVR все OK. Проверил
Такое ощущение что WinAVR просто компилирует и все и по барабану какой там объем. Выходной hex закинул в Proteus - работает прекрасно))) Получается объем нормальный? Но почему тогда Atmel Studio при идентичных настройках не хочет собирать hex?
Может кто встречал подобное....
text data bss dec hex filename
27760 1060 1278 30098 7592 megad-328.elf
Что в WinAVR что в Atmel Studio - 1 в 1)) Но Atmel Studio говорит что памяти все равно нет!
Error 1 Program Memory Usage : 28598 bytes 87,3 % Full
Data Memory Usage : 2338 bytes 114,2 % Full (Memory Overflow)
EEPROM Memory Usage : 742 bytes 72,5 % Full GccApplication3 0 0 GccApplication3
При этом у WinAVR все OK. Проверил
Такое ощущение что WinAVR просто компилирует и все и по барабану какой там объем. Выходной hex закинул в Proteus - работает прекрасно))) Получается объем нормальный? Но почему тогда Atmel Studio при идентичных настройках не хочет собирать hex?
Может кто встречал подобное....
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Взял я тот "ошибочный" HEX из Atmel Studio и запустил на эмуляторе. Работает!!!
Вопрос. Это студия брешет или прошивка на контроллер не вся заливается?
Вопрос. Это студия брешет или прошивка на контроллер не вся заливается?
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
У меня с 3.23beta1 так:
===
avr-size -C --mcu=atmega328 megad-328.elf
AVR Memory Usage
----------------
Device: atmega328
Program: 27706 bytes (84.6% Full)
(.text + .data + .bootloader)
Data: 1572 bytes (76.8% Full)
(.data + .bss + .noinit)
EEPROM: 742 bytes (72.5% Full)
(.eeprom)
===
avr-size -C --mcu=atmega328 megad-328.elf
AVR Memory Usage
----------------
Device: atmega328
Program: 27706 bytes (84.6% Full)
(.text + .data + .bootloader)
Data: 1572 bytes (76.8% Full)
(.data + .bss + .noinit)
EEPROM: 742 bytes (72.5% Full)
(.eeprom)
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Я в шоке!!!
avr-size megad-328.elf
text data bss dec hex filename
27760 1060 1278 30098 7592 megad-328.elf
avr-size -C --mcu=atmega328 megad-328.elf
AVR Memory Usage
----------------
Device: atmega328
Program: 28078 bytes (85.7% Full)
(.text + .data + .bootloader)
Data: 1596 bytes (77.9% Full)
(.data + .bss + .noinit)
EEPROM: 742 bytes (72.5% Full)
(.eeprom)
Expl.: data=initialized data, bss=uninitialized data, text=code
make: Leaving directory `C:/Users/?ыхъёхщ/Desktop/megad-3.22'
Done executing task "RunCompilerTask".
Task "RunOutputFileVerifyTask"
GccApplication3(0,0): Program Memory Usage : 28598 bytes 87,3 % Full
Data Memory Usage : 2338 bytes 114,2 % Full (Memory Overflow)
EEPROM Memory Usage : 742 bytes 72,5 % Full
Done executing task "RunOutputFileVerifyTask" -- FAILED.
avr-size megad-328.elf
text data bss dec hex filename
27760 1060 1278 30098 7592 megad-328.elf
avr-size -C --mcu=atmega328 megad-328.elf
AVR Memory Usage
----------------
Device: atmega328
Program: 28078 bytes (85.7% Full)
(.text + .data + .bootloader)
Data: 1596 bytes (77.9% Full)
(.data + .bss + .noinit)
EEPROM: 742 bytes (72.5% Full)
(.eeprom)
Expl.: data=initialized data, bss=uninitialized data, text=code
make: Leaving directory `C:/Users/?ыхъёхщ/Desktop/megad-3.22'
Done executing task "RunCompilerTask".
Task "RunOutputFileVerifyTask"
GccApplication3(0,0): Program Memory Usage : 28598 bytes 87,3 % Full
Data Memory Usage : 2338 bytes 114,2 % Full (Memory Overflow)
EEPROM Memory Usage : 742 bytes 72,5 % Full
Done executing task "RunOutputFileVerifyTask" -- FAILED.
Последний раз редактировалось GruNT 28 авг 2014, 19:28, всего редактировалось 1 раз.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
То есть реально HEX нормальный, а суммарно проект - нет? Что за бред. Попробую версию студии другую поставить....
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Поставил Atmel Studio 6.2 проблема решилась)))))
Program Memory Usage : 27718 bytes 84,6 % Full
Data Memory Usage : 1572 bytes 76,8 % Full
EEPROM Memory Usage : 742 bytes 72,5 % Full
Версию 6.0 с ошибкой компилятора
Program Memory Usage : 27718 bytes 84,6 % Full
Data Memory Usage : 1572 bytes 76,8 % Full
EEPROM Memory Usage : 742 bytes 72,5 % Full
Версию 6.0 с ошибкой компилятора
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Подключил прибор к OpenHab' у. И вот какой досадный момент, необходимо представление шима не 0-255, а 0-100. Можно подправить прошивку?
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
http://ab-log.ru/files/File/ip_manager3 ... _beta2.zip
Добавлена возможность задать порт сервера (по умолчанию 80).
Добавлена возможность задать порт сервера (по умолчанию 80).
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Друзья пытаюсь прошить по указанной шпаргалке, однако имею ряд проблем в частности:
вроде все ок прошло, далее
все вроде бы прошло ровно
Чего делать?
выставляем фьюзыНо сначала нужно правильно выставить fuse-bits.
Low: 0x60
High: 0xD8
Вот пример для avrdude и AVRISP mkII
avrdude -c avrispmkII -P usb -p m328p -U lfuse:w:0x60:m -U hfuse:w:0xD8:m
Код: Выделить всё
/usr/share/arduino/hardware/tools/avrdude -C/usr/share/arduino/hardware/tools/avrdude.conf -cstk500v1 -P/dev/ttyUSB0 -b19200 -patmega328p -U lfuse:w:0x60:m -U hfuse:w:0xD8:m
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.05s
avrdude: Device signature = 0x1e950f
avrdude: reading input file "0x60"
avrdude: writing lfuse (1 bytes):
Writing | ################################################## | 100% 0.06s
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0x60:
avrdude: load data lfuse data from input file 0x60:
avrdude: input file 0x60 contains 1 bytes
avrdude: reading on-chip lfuse data:
Reading | ################################################## | 100% 0.02s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xD8"
avrdude: writing hfuse (1 bytes):
Writing | ################################################## | 100% 0.06s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xD8:
avrdude: load data hfuse data from input file 0xD8:
avrdude: input file 0xD8 contains 1 bytes
avrdude: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.02s
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: safemode: Fuses OK (H:05, E:D8, L:60)
avrdude done. Thank you.
Далее загружаем в МК, собственно, сам бутлоадер.
http://ab-log.ru/files/File/megad-boot/ ... oot_11.zip
Код: Выделить всё
/usr/share/arduino/hardware/tools/avrdude -C/usr/share/arduino/hardware/tools/avrdude.conf -v -v -v -v -patmega328p -cstk500v1 -P/dev/ttyUSB0 -b19200 -Uflash:w:/home/alex/avr/megad-boot.hex:i
льем прошивкуПрошивать будем новую прошивку 3.14 beta 1, так как в ней содержится важные изменения, связанные с процессом апгрейда прошивки.
http://ab-log.ru/files/File/ip_manager3 ... a1_hex.zip
Пользоваться скриптом просто (ну по крайней мере мне так кажется).
После того, как прошит бутлоадер, в МК нет основной программы, работает только бутлоадер, поэтому прошиваем такгдеКод: Выделить всё
php megad-cfg.php --fw megad-328.hex -f
--fw имя файла прошивки
-f параметр, отвечающий за прошивку _чистого_ устройства, в режиме, когда работает только бутлоадер
Код: Выделить всё
alex@alex-ESPRIMO-Mobile-U9200:~$ php /home/alex/avr/megad-cfg.php --fw /home/alex/avr/megad-328.hex -f
Connecting... OK
Erasing firmware... OK
Writing firmware... OK
Restarting device... OK
php megad-cfg.php --scan не дает вообще ни какого вывода, сама мега ни на какие запросы не отвечает, сканер сети IP которые хотябы примерно могут быть мегой не находит.1. Все устройства в локальной сети можно просканировать командойСкрипт отобразит IP-адреса подключенных устройств, даже если они находятся в другой IP-сети!Код: Выделить всё
php megad-cfg.php --scan
Чего делать?
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Уже выше писал про необходимость управлять шимом не 0-255 а 0-100, подскажите где поменять привод числа к процентам?
// Форма для PWM
if (_port_m == 1 )
{
if ( mode == 0 )
{
plen=fill_tcp_data_p(buf,plen,PSTR("<br><form style=display:inline action=/"));
plen=fill_tcp_data(buf,plen,password);
plen=fill_tcp_data_p(buf,plen,PSTR("/>"));
plen=fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=pt value="));
plen=fill_tcp_data(buf,plen,gStrbuf);
plen=fill_tcp_data_p(buf,plen,PSTR(">"));
plen=fill_tcp_data_p(buf,plen,PSTR("PWM (0-255): <input type=text name=pwm size=3 value="));
}
if ( port_letter == 'D' )
{
if ( port_num == 5 )
itoa(OCR0B, temp, 10);
else if ( port_num == 6 )
itoa(OCR0A, temp, 10);
else if ( port_num == 3 )
itoa(OCR2B, temp, 10);
}
plen=fill_tcp_data(buf,plen,temp);
if ( mode == 0 )
plen=fill_tcp_data_p(buf,plen,PSTR("> <input type=submit value=change></form>"));
}
// Форма для PWM
if (_port_m == 1 )
{
if ( mode == 0 )
{
plen=fill_tcp_data_p(buf,plen,PSTR("<br><form style=display:inline action=/"));
plen=fill_tcp_data(buf,plen,password);
plen=fill_tcp_data_p(buf,plen,PSTR("/>"));
plen=fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=pt value="));
plen=fill_tcp_data(buf,plen,gStrbuf);
plen=fill_tcp_data_p(buf,plen,PSTR(">"));
plen=fill_tcp_data_p(buf,plen,PSTR("PWM (0-255): <input type=text name=pwm size=3 value="));
}
if ( port_letter == 'D' )
{
if ( port_num == 5 )
itoa(OCR0B, temp, 10);
else if ( port_num == 6 )
itoa(OCR0A, temp, 10);
else if ( port_num == 3 )
itoa(OCR2B, temp, 10);
}
plen=fill_tcp_data(buf,plen,temp);
if ( mode == 0 )
plen=fill_tcp_data_p(buf,plen,PSTR("> <input type=submit value=change></form>"));
}
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Sergey писал(а):Уже выше писал про необходимость управлять шимом не 0-255 а 0-100, подскажите где поменять привод числа к процентам?
// Форма для PWM
if (_port_m == 1 )
{
if ( mode == 0 )
{
plen=fill_tcp_data_p(buf,plen,PSTR("<br><form style=display:inline action=/"));
plen=fill_tcp_data(buf,plen,password);
plen=fill_tcp_data_p(buf,plen,PSTR("/>"));
plen=fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=pt value="));
plen=fill_tcp_data(buf,plen,gStrbuf);
plen=fill_tcp_data_p(buf,plen,PSTR(">"));
plen=fill_tcp_data_p(buf,plen,PSTR("PWM (0-255): <input type=text name=pwm size=3 value="));
}
if ( port_letter == 'D' )
{
if ( port_num == 5 )
itoa(OCR0B, temp, 10);
else if ( port_num == 6 )
itoa(OCR0A, temp, 10);
else if ( port_num == 3 )
itoa(OCR2B, temp, 10);
}
plen=fill_tcp_data(buf,plen,temp);
if ( mode == 0 )
plen=fill_tcp_data_p(buf,plen,PSTR("> <input type=submit value=change></form>"));
}
OpenHab как я понял что то вроде CMS для "умного дома". А значит web - программирование ни кто не отменял.
Напиши свой item для OpenHab где будет от 0 до 255 )))). Это вывод из статьи на сайте http://habrahabr.ru/post/232969/ в "Настройка item-ов и binding-ов".
Dimmer это класс. Следовательно можно либо свой класс написать, либо написать item иного класса с возможностью регулировки от 0 до 255.
P.S. По сути можно поправить стандартный Dimmer. 0-100 это скорее всего для внутреннего функционирования, а выходные сделать 0-255 это уже надо разбираться как OpenHab этот работает.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Кто-нибудь подключал к контроллеру микросхему EEROM через I2C интерфейс?
А что делать если портов не хватает? Может имеет смысл разработать модуль расширения портов для MegaD-328 через тот-же I2C?
Считаю что несколько MegaD-328 на предположим одну комнату не целесообразно.
У кого какие мысли по этому поводу?
А что делать если портов не хватает? Может имеет смысл разработать модуль расширения портов для MegaD-328 через тот-же I2C?
Считаю что несколько MegaD-328 на предположим одну комнату не целесообразно.
У кого какие мысли по этому поводу?
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Мысли стандартные, достаточно ответить на вопросы: длинна линии связи? топология? скорость реакции? необходимая периферия?GruNT писал(а):Кто-нибудь подключал к контроллеру микросхему EEROM через I2C интерфейс?
А что делать если портов не хватает? Может имеет смысл разработать модуль расширения портов для MegaD-328 через тот-же I2C?
Считаю что несколько MegaD-328 на предположим одну комнату не целесообразно.
У кого какие мысли по этому поводу?
Решение собирается из доступных компонент. Но вопрос наверное в цене?
ЗЫ. Насколько я помню для I2C сантиметров 30. Маловато для комнаты.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Собственно идея такова...
MegaD-328 - это узел. Предположим берем по одному на комнату.
На этаже предположим 3 комнаты (3 - MegaD-328). Их соединяем хабом.
Один хаб на этаж (чтоб через этажи только один провод тянуть). Если 3 этажа (с подвалом), то получается 2 хаба и 1 роутер (с lan входами) к примеру.
Затем куда-нибудь включаем сервер на той же Cubieboard2. Вот собственно и вся топология.
Ну а исполнители уже к MegaD-328 какому нужно цепляем...
Так вот.
Написано было про модульный принцип построения MegaD-328.
Под ним я понимаю что к MegaD-328 должно подключаться куча всякой периферии..., а если мы вывели все порты...то по сути вся периферия это блок реле.. . Или я ошибаюсь?
Может стоит подумать о переходе к различным модулям общающимися с MegaD-328 через I2C (при это не идет речи о больших расстояниях, они стоят рядом).
К примеру нужны исполнители.. Берем блок реле, подключаем его к MegaD-328... На сервере даем команду включить лампочку на порте 1 модуля реле - команду принимает MegaD-328 и дублирует по I2C - блок реле принимает и выполняет.
Нужен ЖК-дисплей? Берем ЖК-модуль и подключаем. Посылаем Фразу с сервера (команда) - MegaD-328 читает, обрабатывает и посылает ЖК-модулю - ЖК-модуль самостоятельно занимается выведением значения.
Ну и так далее. Смысл в том что можно включить не только один блок реле, а 2,3...и т.д. Сколько нужно. А по цене что касается. То 2 MegaD-328 и 2 блока реле дороже чем 1 MegaD-328 и 2 блока реле на простом контроллере с регистром сдвига (считал). С ЖК-модулем песня та же. Мы не теряем MegaD-328 на задачи отображения значений...
MegaD-328 блоком управления работы модулей по Enternet. А сервер управляет всеми MegaD-328.
Кто что скажет по этому поводу?
MegaD-328 - это узел. Предположим берем по одному на комнату.
На этаже предположим 3 комнаты (3 - MegaD-328). Их соединяем хабом.
Один хаб на этаж (чтоб через этажи только один провод тянуть). Если 3 этажа (с подвалом), то получается 2 хаба и 1 роутер (с lan входами) к примеру.
Затем куда-нибудь включаем сервер на той же Cubieboard2. Вот собственно и вся топология.
Ну а исполнители уже к MegaD-328 какому нужно цепляем...
Так вот.
Написано было про модульный принцип построения MegaD-328.
Под ним я понимаю что к MegaD-328 должно подключаться куча всякой периферии..., а если мы вывели все порты...то по сути вся периферия это блок реле.. . Или я ошибаюсь?
Может стоит подумать о переходе к различным модулям общающимися с MegaD-328 через I2C (при это не идет речи о больших расстояниях, они стоят рядом).
К примеру нужны исполнители.. Берем блок реле, подключаем его к MegaD-328... На сервере даем команду включить лампочку на порте 1 модуля реле - команду принимает MegaD-328 и дублирует по I2C - блок реле принимает и выполняет.
Нужен ЖК-дисплей? Берем ЖК-модуль и подключаем. Посылаем Фразу с сервера (команда) - MegaD-328 читает, обрабатывает и посылает ЖК-модулю - ЖК-модуль самостоятельно занимается выведением значения.
Ну и так далее. Смысл в том что можно включить не только один блок реле, а 2,3...и т.д. Сколько нужно. А по цене что касается. То 2 MegaD-328 и 2 блока реле дороже чем 1 MegaD-328 и 2 блока реле на простом контроллере с регистром сдвига (считал). С ЖК-модулем песня та же. Мы не теряем MegaD-328 на задачи отображения значений...
MegaD-328 блоком управления работы модулей по Enternet. А сервер управляет всеми MegaD-328.
Кто что скажет по этому поводу?
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
GruNT писал(а):Sergey писал(а):Уже выше писал про необходимость управлять шимом не 0-255 а 0-100, подскажите где поменять привод числа к процентам?
// Форма для PWM
if (_port_m == 1 )
{
if ( mode == 0 )
{
plen=fill_tcp_data_p(buf,plen,PSTR("<br><form style=display:inline action=/"));
plen=fill_tcp_data(buf,plen,password);
plen=fill_tcp_data_p(buf,plen,PSTR("/>"));
plen=fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=pt value="));
plen=fill_tcp_data(buf,plen,gStrbuf);
plen=fill_tcp_data_p(buf,plen,PSTR(">"));
plen=fill_tcp_data_p(buf,plen,PSTR("PWM (0-255): <input type=text name=pwm size=3 value="));
}
if ( port_letter == 'D' )
{
if ( port_num == 5 )
itoa(OCR0B, temp, 10);
else if ( port_num == 6 )
itoa(OCR0A, temp, 10);
else if ( port_num == 3 )
itoa(OCR2B, temp, 10);
}
plen=fill_tcp_data(buf,plen,temp);
if ( mode == 0 )
plen=fill_tcp_data_p(buf,plen,PSTR("> <input type=submit value=change></form>"));
}
OpenHab как я понял что то вроде CMS для "умного дома". А значит web - программирование ни кто не отменял.
Напиши свой item для OpenHab где будет от 0 до 255 )))). Это вывод из статьи на сайте http://habrahabr.ru/post/232969/ в "Настройка item-ов и binding-ов".
Dimmer это класс. Следовательно можно либо свой класс написать, либо написать item иного класса с возможностью регулировки от 0 до 255.
P.S. По сути можно поправить стандартный Dimmer. 0-100 это скорее всего для внутреннего функционирования, а выходные сделать 0-255 это уже надо разбираться как OpenHab этот работает.
Пробывал делать item, но не очень красиво все выглядит
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Sergey, может покажете в чем не красиво)))? Занимаюсь Web-программированием. Может помогу чем?
P.S. С OpenHab не работал. Предпочитаю чистое программирование.
P.S. С OpenHab не работал. Предпочитаю чистое программирование.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Вопрос автору:
Имеется MegaD (Arduino NANO+ENC28J60, timeout.h поправлен на 16MHz) версия прошивки 3.24b2.
P11 настроен как DSen, сенсор DHT22.
Опрос датчика 1 раз в минуту.
Проблема в том что после приблизительно получаса работы датчик возвращает значения 0. Сброс не помогает. Лечится только перепрошивкой MegaD (причем EPROM не обнуляю).
Вопрос: что делать, как лечить?
Имеется MegaD (Arduino NANO+ENC28J60, timeout.h поправлен на 16MHz) версия прошивки 3.24b2.
P11 настроен как DSen, сенсор DHT22.
Опрос датчика 1 раз в минуту.
Проблема в том что после приблизительно получаса работы датчик возвращает значения 0. Сброс не помогает. Лечится только перепрошивкой MegaD (причем EPROM не обнуляю).
Вопрос: что делать, как лечить?
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
У меня в точь то же самое было как раз с arduino +DHT22.dimik2000 писал(а):Проблема в том что после приблизительно получаса работы датчик возвращает значения 0
Только бывало так, что нули через час начинались, а бывало, что через 5 - 15 часов.
Если ставить в работу сразу два датчика, (DHT11 и DHT22) то с 11 никогда не было проблем никаких.
Проблемы только с 22.
Я начал грешить на датчик DHT22 и действительно, купивши у разных продавцов (в куче получилось 6 шт) я из них нашел один какой совсем не виснет, работает месяцами. А три датчика вешаются почти сразу (5 - 30 мин.).
Выкинуть датчики сильно жалко, по этому я понял, что если прервать только питание датчика, то показания возобновляются.
Я и запитал датчик с одного из выводов меги.
И если показания нулевые, сервер какой управляет мегой, "передергивает" питание посылая 0 и 1 на вывод, какой я взял для питания, и сразу после, запрос на получение показаний. Нули больше не появлялись.
Но я ничего не делал с timeout.h мне было намного проще в ардуине поправить фьюзы, напаять вывод тактирования наружу от меги (не разведен на плате) и затактировать мегу от ENC28J60.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Спасибо большое!
Действительно помогло передергивание питания на DHT.
Будем искать нормальные датчики
А не подскажете у кого купили не виснущие?
Действительно помогло передергивание питания на DHT.
Будем искать нормальные датчики
А не подскажете у кого купили не виснущие?