Перейти к контенту
МОРСКОЙ АКВАРИУМ - форум Аква Лого

Пресноводные В аквариумистике используется относительно небольшое количество видов улиток. Чаще всего их наличие носит декоративный характер. Но, безусловно, улитки приносят и пользу. Прежде всего, эти труженики объедают низшие сорные водоросли, которые, создавая плёнку на стёклах и декорациях, портят внешний вид аквариума. Также улитки подъедают остатки корма, оставшиеся после обильного кормления, не давая портится воде.

Жемчуг из песчинки

Жаба на питоне

Морской чёрт-обжора

svyaz

DIY 6-Канальный контроллер LED c тач-панелью "3.2"

Рекомендуемые сообщения

Ну тема -то вообще про контроллер светильника, не находишь?

Остальное - примочки которые никто не смотрел и не проверял (и я в том числе). ;)

Поделиться этим сообщением


Ссылка на сообщение

понял.

просто думал что уже кто то таки примочки делал - воспользоватся чужим трудом так сказать ))

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

 

 

 

Не подскажете на каких пинах SD карта висит?

Вот в этом наборе:

http://www.aliexpress.com/store/product/Fr..._574051579.html

Вляпался нежданно. Вечер убил - так карту и не подцепил.

Поделиться этим сообщением


Ссылка на сообщение

понял.

просто думал что уже кто то таки примочки делал - воспользоватся чужим трудом так сказать ))

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

 

Не подскажете на каких пинах SD карта висит?

Вот в этом наборе:

http://www.aliexpres..._574051579.html

Вляпался нежданно. Вечер убил - так карту и не подцепил.

 

На стандартных

 

SDchipSelect pin 53;

MISO -pin 50

MOSI -pin 51

CLK- pin 52

Изменено пользователем Oleg_il (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

Цитата

Первое что бросилось в глаза - я правильно понял, что watch dog timer выключен

 

Правильно. И использовать его нельзя. При его срабатывании не обнуляются флаги WDT, и процессор навечно остается с работающим вачдогом с минимальным 15мсек таймаутом. Вывести из этого его может только сброс по питанию. Это ошибка бутлоадера

Ну ребята, вы даете. Как же вы пепелац без гравицапы (без включенного WDT) из гаража выкатываете? Непорядок.

Нет никаких проблем исправить исправить кривой бутлоадер, тем более что все уже сделано за нас. Распаковываем приаттаченый файл stk500boot_v2_mega2560_working.zip и прошиваем... Я прошил с помощью PonyPog (так как мой любимый и безотказный uniprof.exe не потянул, как мне показалось, старшие адреса меги 2560, как-то он странно с ними работает, не рискнул им прошивать). В качестве программатора опять же наипростейший "пять проводков"... правда, с первого раза не получилось, как оказалось я залил соленной водой разъемчик на шлейфе и он окислился совершенно, но прочистил и все прошилось. Теперь у меня watch dog timer работает как надо и естественно я его включу в программы.

 

Второй этап, врубиться как самому компиллировать бутлоадеры, которые лежат в папке arduino\hardware\arduino\bootloaders, чтобы можно было самому исправлять то, что нужно... да и вообще, приятно иметь полный доступ к телу процессора :) Пока делаю так:

в windows: Выполнить, набираем cmd, в открывшемся окне переходим на диск, где стоит arduino (у меня диск D )... короче вот последовательность команд (не забыв поправить пути):

D:

set BASEDIR=D:\arduino\hardware

set DIRAVRUTIL=%BASEDIR%\tools\avr\utils\bin

set DIRAVRBIN=%BASEDIR%\tools\avr\bin

set DIRAVRAVR=%BASEDIR%\tools\avr\avr\bin

set DIRLIBEXEC=%BASEDIR%\tools\avr\libexec\gcc\avr\4.3.2

set OLDPATH=%PATH%

@path %DIRAVRUTIL%;%DIRAVRBIN%;%DIRAVRAVR%;%DIRLIBEXEC%;%PATH%

cd %BASEDIR%\arduino\bootloaders\test_boot_loader

%DIRAVRUTIL%\make.exe clean

%DIRAVRUTIL%\make.exe mega2560

@path %OLDPATH%

 

В итоге в папке с исходником появляется hex файл ... но что-то он больше оригинала получается, надо еще поработать....

Поделиться этим сообщением


Ссылка на сообщение

В итоге в папке с исходником появляется hex файл ... но что-то он больше оригинала получается, надо еще поработать....

Скачал и установил WinAVR, добавил ему в меню команду make mega2560, теперь просто открываю исходник бутлоадера, редактирую что надо, дальше клик на make clean, затем make mega2560 и вуаля, имею прошивку на выходе. Файл идентичен оригинальному в составе arduino (в отличие от того, что генерит их родной ардуиновский компиллятор)

Поделиться этим сообщением


Ссылка на сообщение

Ну молодец, соскучился по программированию видно.

То, что ты проделал - сложно будет повторить большинству пользователей.

Если есть желание, попробуй немного по другому. В инете много статей как использовать в качестве isp программатора 2й экземпляр ардуины, и как я понимаю не обязательно мегу.

Нано, за червонец - тоже годится. Вот это - былобы здорово и поможет всем. У меня на все это времени совсем небыло.

 

И кстати, раз уж ты полез в это, а что за опция есть в самой оболочке ардуино burn butloader, разве ей нельзя?

 

РС: То, что ты писал выше, что в твоем контроллере раз какоето время проходит сброс- это не здорово, сам понимаешь, что это значит что в алгоритме есть ошибка, или нерасчетный таймаут. Идеально - постараться просчитать все такие ситуации, а WDT - это уже последний довод. :1486:

Изменено пользователем Oleg_il (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

Сложного вообще ничего нет (вся эта куча страшных команд в моем предыдущем сообщении - это если возникло странное желание самому скомпиллировать прошивку из исходника или если надо редактировать исходник).

 

Можно взять готовый файл прошивки из моего предыдущего сообщения, и прошить его в процессор через LTP порт (это реально просто - пять проводочков от указанных пинов LTP разъема на указанные пины разъема ICSP на плате ардуины).

 

Или, как ты сказал, опция burn butloader.

Скачанная прошивка (hex файл) кладется в папку arduino\bootloaders\stk500v2, надо заменить имеющийся там оригинальный файл stk500boot_v2_mega2560.hex на новый (новый переименовать в stk500boot_v2_mega2560.hex).

Затем подключаем программатор, в простейшем случае тот же самый "пять проводков" но проводки к другим пинам припаяны, вот здесь нарисовано, проще не бывает.

Выбрать в меню Программатор -> Paralel programmer и burn butloader. Вроде и все. Но я этот вариант не пробовал - неохота перепаивать проводки от LTP порта, а во-вторых ... какая разница какой программой прошивать, шлейф на ICSP разъем на плате ардуины все равно цеплять и там и там надо.

 

Засада только в том, что LTP порт на компе сейчас редкость.

 

У меня второй ардуины нет (а покупать - это ждать два месяца посылку как обычно). Вообще, куча готовых программаторов продаются, к USB подключаются, наверное и копеечные есть, я не интересовался. Любой, который может шить мегу 2560 пойдет наверное.

Поделиться этим сообщением


Ссылка на сообщение

Да я понимаю - что ничего страшного в этом нет.

Надо только чтобы руки дошли. У меня есть какой-то jtag универсальный, сходу это не пошло, а больше я попыток не делал.

Но попробовать через ардуину - проще. Ладно, у меня есть еще комплекты, когда дойдут руки - обсудим этот вариант.

 

Но и без экрана, ты можешь сейчас попробовать, работает WDT теперь или нет?

Поделиться этим сообщением


Ссылка на сообщение

Но и без экрана, ты можешь сейчас попробовать, работает WDT теперь или нет?

Работает, я это сразу как перепрошил проверил.

 

То есть, с оригинальным загрузчиком было так - после первого же срабатывание WDT - ардуино начинает ресетиться как сумашедший (после ресета управление получает загрузчик и пока он там возится, снова срабатывает WDT и так до бесконечности. До начала исполнения нашей программы, где мы могли бы перенастроить WDT, дело не доходит.

 

Решить проблему можно было бы понаставив asm("wdr") в коде загрузчика и там же перенастроить WDT на более длинный интервал, но разработчик новой прошивки сделал проще - сразу после старта, в самом начале проверяется флаг WDRF (вач дог ресет флаг в регистре MCUSR), если перезагрузка произошла из-за срабатывания WDT, то управление сразу передается на адрес основной программы. Где мы первым делом настраиваем WDT :)

Поделиться этим сообщением


Ссылка на сообщение
У меня второй ардуины нет (а покупать - это ждать два месяца посылку как обычно). Вообще, куча готовых программаторов продаются, к USB подключаются, наверное и копеечные есть, я не интересовался. Любой, который может шить мегу 2560 пойдет наверное.

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

 

Самый дешевый, пожалуй, USBASP - 4 доллара с пересылкой. Насколько помню, он совместим с STK500. Дома валяется где-то такой вроде. Надо будет попробовать прошить на нем бутлоадер :)

Изменено пользователем vahegan (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

Самый дешевый, пожалуй, USBASP - 4 доллара с пересылкой. Насколько помню, он совместим с STK500. Дома валяется где-то такой вроде. Надо будет попробовать прошить на нем бутлоадер :)

Точно совместим с STK500 ? А то по ссылке никакой инфы нет. Если да, я бы купил. Чтоб было :)

Поделиться этим сообщением


Ссылка на сообщение

Извиняюсь что немного не по теме топика, разбираюсь с программированием в ардуино ...

 

В CodeVisionAVR было достаточно задекларировать переменную со словом eeprom и она помещалась в EEPROM процессора автоматом. Далее работа с ними ничем не отличается от обычных переменных, например:

eeprom int x; // переменная x в EEPROM

int y; // переменная y в оперативке

у=х; // чтение из EEPROM

x=25; // запись в EEPROM

 

Я правильно понимаю, что в среде ардуино таого нет и работа с EEPROM идет через ж... (через функции типа EEPROM.read(адрес);) ?

Поделиться этим сообщением


Ссылка на сообщение

Точно совместим с STK500 ? А то по ссылке никакой инфы нет. Если да, я бы купил. Чтоб было :)

Карен, я тоже его взял, "чтоб было", благодаря цене в 4 доллара :) Правда, как купил, так и не дошли руки его опробовать.

Это известный прог USBASP, но на него можно залить прошивку AVR-Doper, после чего он станет STK500-совместимым. Вот здесь подробнее про это. И здесь тоже немного. Но сам не пробовал пока.

Изменено пользователем vahegan (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение
Я правильно понимаю, что в среде ардуино таого нет и работа с EEPROM идет через ж... (через функции типа EEPROM.read(адрес);) ?

Ну не знаю насколько это ж...., вопрос конкретного языка и привычки.

Работа с еепром возможна в нескольких вариантах

EEPROM.write(адрес, дата)

k = EEPROM.read(адрес)

 

Это если нужен доступ к отдельным адресам

Если запись/чтение массива то, есть функция библиотечная writeAnything.h

и через нее доступ к массиву выглядит так

EEPROM_writeAnything(адрес начала, WAVEsettings);

и WAVEsettings - заранее определенный массив данных

который сформирован типа так

 

struct config_w

{

int waveMode;

int altPump1m;

int altPump1s;

int altPump2m;

int altPump2s;

int synchMode;

int synchPumpOnM;

int synchPumpOnS;

int synchPumpOffM;

int synchPumpOffS;

} WAVEsettings;

 

Ну или просто read/write и адрес крутишь в цикле.

 

 

 

Посмотри тут http://arduino.cc/en/Reference/HomePage - это основной сайт. Там и описание языка и примеры.

Ну и есть книги на этот счет.

Изменено пользователем Oleg_il (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

Ну не знаю насколько это ж...., вопрос конкретного языка и привычки.

Работа с еепром возможна в нескольких вариантах

EEPROM.write(адрес, дата)

k = EEPROM.read(адрес)

 

Это если нужен доступ к отдельным адресам

Если запись/чтение массива то, есть функция библиотечная writeAnything.h

и через нее доступ к массиву выглядит так

EEPROM_writeAnything(адрес начала, WAVEsettings);

и WAVEsettings - заранее определенный массив данных

который сформирован типа так

 

struct config_w

{

int waveMode;

int altPump1m;

int altPump1s;

int altPump2m;

int altPump2s;

int synchMode;

int synchPumpOnM;

int synchPumpOnS;

int synchPumpOffM;

int synchPumpOffS;

} WAVEsettings;

 

Ну или просто read/write и адрес крутишь в цикле.

 

 

 

Посмотри тут http://arduino.cc/en...erence/HomePage - это основной сайт. Там и описание языка и примеры.

Ну и есть книги на этот счет.

 

Озадачился вопросом длины шлейфа..... То есть есть ардуина, если через шлейф идут управляющие сигналы шим..., 2-3 метра не помеха? или надо меньше? То есть вариант драйвера на радитаторе, ардуино далеко, 2-3 метра не помеха?

Поделиться этим сообщением


Ссылка на сообщение

Нормально.

Не думаю что на таких расстояниях будут проблемы.

Поделиться этим сообщением


Ссылка на сообщение

В общем, сегодня, ругаясь и чертыхаясь на убогость ардуиновской среды и потратив пол дня, таки удалось заставить ее (плату Arduino) получать и понимать формат команд от моего лед-контроллера (прога под windows).

Теперь осталось дождаться шилда от Олега, чтобы можно было подключить экран и тогда можно будет написать прогу под винду для управления контроллером с компа вместо (или в дополнение) к тач скрину.

Поделиться этим сообщением


Ссылка на сообщение

Карен приветствую, было бы замечательно с прогой под винду... там дело втанет еще с блютуз модулем и будет красота...

Поделиться этим сообщением


Ссылка на сообщение

Блютус-модуль, насколько мне сказал Олег, к его шилду предусмотрен. А что касается программной части, процессору нет никакой разницы откуда читать и куда писать - по USB шнуру в витруальный COM порт, или через блютуску туда же, так что если будет написан этот код управления контроллером с удаленной проги под винду, то заработает и блютус и все остальное :) Но у меня сейчас, с переходом моего основного компа на Win7 64bit связь по блютусу с двумя светильниками стала глючить, мы этот вопрос обсуждали с Сергеем (Starcomputer который), у него в его проектах аналогично. Видимо что-то седьмая винда пишет от себя, что намертво вешает блютус модуль в светильнике. Помогает только передергивание питания в светильнике... можно конечно сделать так, чтобы этим автоматом занимался процессор... короче это детали, надо будет разбираться. Лишних проводов неохота в светильник от компа тащить.

 

Есть еще вариант с радиомодулями, которые Ваге советует. Но я не уверен. У меня есть аналогичные (но старые, возможно на других чипах, не вникал), работали на редкость нестабильно. Но пробивали гораздо дальше блютуски.

 

Ну и последнее - я с ардуиной всего второй день знакомлюсь и сказать честно мне нравится только железо, а процесс программирования, редактор, язык и прочие штучки очень раздражают и не дают эффективно работать, так что все может и затянется на дольше, чем хотелось бы.

Поделиться этим сообщением


Ссылка на сообщение

Карен, ну я же тебе дал линки на нормальную среду (или вторник :biggrin: ), а ты тут чертыхаешься и рассказываешь какая это кака их оболочка.

Не поленись, установи, вернешься к нормальной работе.

 

мы этот вопрос обсуждали с Сергеем (Starcomputer который), у него в его проектах аналогично. Видимо что-то седьмая винда пишет от себя, что намертво вешает блютус модуль в светильнике.

И что, никто не понял как это происходит?

 

РС: Я с их средой выдохся через неделю, после знакомства.

Поделиться этим сообщением


Ссылка на сообщение

Это ты в цивилизации живешь, а я все еще в деревне в каменном веке, мне скачать все эти гагабайты с дома нереально :)

А в город на работу мне ехать неохота,друзья там уже все скачали, надо съездить и забрать на флешке... недели через две только... А пока буду ругаться. :)

Поделиться этим сообщением


Ссылка на сообщение

Почти разобрался с SD картой вот на этом чуде:

http://www.aqualogo.ru/phpbb2/go/?http://www.aqualogo.ru/phpbb2/go/?http://www.aliexpress.com/store/product/Freeshipping-offer-Tracking-number-ATmega2560-16AU-3-2-TFT-LCD-Shield-Touch-Screen-SD-Reader-for/108092_574051579.html

 

Пины нифига не стандартные - 51 и 52-ой местами поменяли. Починил - хотя бы инициализация карты прошла. Правда не читается.

Думаю дело в 20кОм (10 на шилде, и еще 10 плате дисплея) - многовато, нет?

Ткните пальцем, если не сложно, на правильную схемку подключения SD карты к меге.

Поделиться этим сообщением


Ссылка на сообщение

И что, никто не понял как это происходит?

Детально нет, но я предложил workaround - проц проверяет не подключен ли в данный момент блютус (то есть просто смотрим уровень на блютусной ноге, куда индикаторный светодиод подключен), если связи нет, то периодически сбрасываем питание на блютуску или еще как-то ее ресетим. Раз в 15 минут например.

Глюк проявляется в том, что в очередной раз запустив LedController на компе обнаруживается что из винды пропал виртуальный ком-порт, на котором блютус висит. Манипуляции с виндой, попытки нового поиска и новой установки блютус устройств не помогают. Помогает выключение и включение контроллера.

Поделиться этим сообщением


Ссылка на сообщение
А в город на работу мне ехать неохота,друзья там уже все скачали, надо съездить и забрать на флешке... недели через две только... А пока буду ругаться. :)

А ты жену пошли, а то как ты сам когдато сказал, она у тебя вечно в море пропадает, а ты на берегу королем сидишь :biggrin:

 

Пины нифига не стандартные - 51 и 52-ой местами поменяли. Починил - хотя бы инициализация карты прошла. Правда не читается.

Думаю дело в 20кОм (10 на шилде, и еще 10 плате дисплея) - многовато, нет?

Ткните пальцем, если не сложно, на правильную схемку подключения SD карты к меге.

1. Стандартное подключение для меги я тебя уже сказал. Оно-же фигурирует в демопримерах, только нужно откомментировать нужное.

Много/мало - надо хоть схему шилда знать или номер его версии, а то так можно долго гадать.

2. Работа с SD картой - совсем занятие не для начинающего, ты уж прости.

3. Карты больше 1GB в любом случае у тебя работать не будут

:wink:

Поделиться этим сообщением


Ссылка на сообщение

Карен у меня твой контроллер с первых дней на 64бит винде - подвисаний никогда не было

 

блютус лично для меня удобней тем что проводов нет...

Поделиться этим сообщением


Ссылка на сообщение

Пожалуйста, авторизуйтесь, чтобы оставить комментарий

Вы сможете оставлять комментарии после авторизации



Войти

×
×
  • Создать...

Политика обработки персональных данных