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

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

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

Сообщение GruNT » 28 авг 2014, 15:36

Изменение настроек не дают вообще ни каких результатов ни в какую сторону. Может кто знает в чем дело?

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

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

Сообщение GruNT » 28 авг 2014, 18:28

Подключил 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?
Может кто встречал подобное....

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

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

Сообщение GruNT » 28 авг 2014, 19:03

Взял я тот "ошибочный" HEX из Atmel Studio и запустил на эмуляторе. Работает!!!
Вопрос. Это студия брешет или прошивка на контроллер не вся заливается?

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

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

Сообщение Andrey_B » 28 авг 2014, 19:17

У меня с 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)

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

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

Сообщение GruNT » 28 авг 2014, 19:23

Я в шоке!!!

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 раз.

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

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

Сообщение GruNT » 28 авг 2014, 19:24

То есть реально HEX нормальный, а суммарно проект - нет? Что за бред. Попробую версию студии другую поставить....

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

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

Сообщение GruNT » 28 авг 2014, 19:54

Поставил 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 с ошибкой компилятора

Sergey
Сообщения: 34
Зарегистрирован: 04 окт 2011, 03:16

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

Сообщение Sergey » 07 сен 2014, 01:25

Подключил прибор к OpenHab' у. И вот какой досадный момент, необходимо представление шима не 0-255, а 0-100. Можно подправить прошивку?

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

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

Сообщение Andrey_B » 12 сен 2014, 18:20

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

Добавлена возможность задать порт сервера (по умолчанию 80).

alex546
Сообщения: 1
Зарегистрирован: 17 сен 2014, 00:30

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

Сообщение alex546 » 17 сен 2014, 21:59

Друзья пытаюсь прошить по указанной шпаргалке, однако имею ряд проблем в частности:
Но сначала нужно правильно выставить 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
все вроде бы прошло ровно
1. Все устройства в локальной сети можно просканировать командой

Код: Выделить всё

php megad-cfg.php --scan
Скрипт отобразит IP-адреса подключенных устройств, даже если они находятся в другой IP-сети!
php megad-cfg.php --scan не дает вообще ни какого вывода, сама мега ни на какие запросы не отвечает, сканер сети IP которые хотябы примерно могут быть мегой не находит.

Чего делать?

Sergey
Сообщения: 34
Зарегистрирован: 04 окт 2011, 03:16

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

Сообщение Sergey » 24 сен 2014, 16:40

Уже выше писал про необходимость управлять шимом не 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>"));

}

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

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

Сообщение GruNT » 30 сен 2014, 14:57

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 этот работает.

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

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

Сообщение GruNT » 30 сен 2014, 15:34

Кто-нибудь подключал к контроллеру микросхему EEROM через I2C интерфейс?

А что делать если портов не хватает? Может имеет смысл разработать модуль расширения портов для MegaD-328 через тот-же I2C?
Считаю что несколько MegaD-328 на предположим одну комнату не целесообразно.
У кого какие мысли по этому поводу?

x13dev
Сообщения: 396
Зарегистрирован: 22 окт 2012, 11:40
Откуда: Бавария

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

Сообщение x13dev » 30 сен 2014, 15:54

GruNT писал(а):Кто-нибудь подключал к контроллеру микросхему EEROM через I2C интерфейс?

А что делать если портов не хватает? Может имеет смысл разработать модуль расширения портов для MegaD-328 через тот-же I2C?
Считаю что несколько MegaD-328 на предположим одну комнату не целесообразно.
У кого какие мысли по этому поводу?
Мысли стандартные, достаточно ответить на вопросы: длинна линии связи? топология? скорость реакции? необходимая периферия?
Решение собирается из доступных компонент. Но вопрос наверное в цене?

ЗЫ. Насколько я помню для I2C сантиметров 30. Маловато для комнаты.

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

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

Сообщение GruNT » 30 сен 2014, 19:39

Собственно идея такова...
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.
Кто что скажет по этому поводу?

Sergey
Сообщения: 34
Зарегистрирован: 04 окт 2011, 03:16

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

Сообщение Sergey » 01 окт 2014, 16:34

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, но не очень красиво все выглядит

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

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

Сообщение GruNT » 01 окт 2014, 18:05

Sergey, может покажете в чем не красиво)))? Занимаюсь Web-программированием. Может помогу чем?

P.S. С OpenHab не работал. Предпочитаю чистое программирование.

dimik2000
Сообщения: 34
Зарегистрирован: 13 сен 2012, 12:51

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

Сообщение dimik2000 » 05 окт 2014, 12:05

Вопрос автору:
Имеется MegaD (Arduino NANO+ENC28J60, timeout.h поправлен на 16MHz) версия прошивки 3.24b2.
P11 настроен как DSen, сенсор DHT22.
Опрос датчика 1 раз в минуту.
Проблема в том что после приблизительно получаса работы датчик возвращает значения 0. Сброс не помогает. Лечится только перепрошивкой MegaD (причем EPROM не обнуляю).
Вопрос: что делать, как лечить?

asteroid
Сообщения: 42
Зарегистрирован: 13 апр 2013, 02:16

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

Сообщение asteroid » 07 окт 2014, 01:38

dimik2000 писал(а):Проблема в том что после приблизительно получаса работы датчик возвращает значения 0
У меня в точь то же самое было как раз с arduino +DHT22.
Только бывало так, что нули через час начинались, а бывало, что через 5 - 15 часов.
Если ставить в работу сразу два датчика, (DHT11 и DHT22) то с 11 никогда не было проблем никаких.
Проблемы только с 22.
Я начал грешить на датчик DHT22 и действительно, купивши у разных продавцов (в куче получилось 6 шт) я из них нашел один какой совсем не виснет, работает месяцами. А три датчика вешаются почти сразу (5 - 30 мин.).
Выкинуть датчики сильно жалко, по этому я понял, что если прервать только питание датчика, то показания возобновляются.
Я и запитал датчик с одного из выводов меги.
И если показания нулевые, сервер какой управляет мегой, "передергивает" питание посылая 0 и 1 на вывод, какой я взял для питания, и сразу после, запрос на получение показаний. Нули больше не появлялись.
Но я ничего не делал с timeout.h мне было намного проще в ардуине поправить фьюзы, напаять вывод тактирования наружу от меги (не разведен на плате) и затактировать мегу от ENC28J60.

dimik2000
Сообщения: 34
Зарегистрирован: 13 сен 2012, 12:51

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

Сообщение dimik2000 » 07 окт 2014, 09:40

Спасибо большое!
Действительно помогло передергивание питания на DHT.
Будем искать нормальные датчики :(
А не подскажете у кого купили не виснущие?

Ответить