Автор Тема: Микроконтроллер - как перспектива примочкостроения  (Прочитано 25767 раз)

0 Пользователей и 1 Гость просматривают эту тему.

KMG

  • Сообщений: 3776
    • ICQ клиент - 412221711
    • AOL клиент - Mike
    • Просмотр профиля
    • E-mail
Цитировать
Рад бы высказаться, да не секу в этом.
Однако, хотелось бы как-то увидеть он-боард (или "он-пояс") приблуду с радио-каналом для управления всякими эффектами и/или для генерации эффектов (это в качестве предложения/пожелания).
Нет ничего проще, два таких модуля
http://www.ti.com/tool/ez430-rf2500t
Один он-боард (или "он-пояс"), другой на приемной стороне с выходом на миди.
И рули чем хочешь, например таким лупером для педалборда

DDD

  • Сообщений: 10347
  • Имею личный текст
    • Просмотр профиля
    • E-mail
У буржуев сабж уже сделан?
« Ответ #201 : Сентября 02, 2011, 05:28:40 pm »
Чайницкое предположение: выходит, уже с такими штуками за границей играют?:
http://www.diystompboxes.com/smfforum/index.php?topic=93464.0
Готов подписаться под каждым своим словом

DDD

  • Сообщений: 10347
  • Имею личный текст
    • Просмотр профиля
    • E-mail
Вот тут тоже обсуждение по теме топика:
http://www.freestompboxes.org/viewtopic.php?f=29&t=4858
Готов подписаться под каждым своим словом

Peratron

  • Сообщений: 13579
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Цитировать
Чайницкое предположение: выходит, уже с такими штуками за границей играют?:
http://www.diystompboxes.com/smfforum/index.php?topic=93464.0
Шилд для ардуины для подключения поляны в 64 кнопки:
http://www.spikenzielabs.com/SpikenzieLabs/Button64Shield.html
« Последнее редактирование: Сентября 03, 2011, 10:39:14 am от peratron »
Схемотехническая мантра: титцешенкохоровицехилл. Повторять до просветления...

Peratron

  • Сообщений: 13579
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Схемотехническая мантра: титцешенкохоровицехилл. Повторять до просветления...

research

  • Гость
"...и 16 аналоговых выходов...."
афигенно перевели

ivana

  • Сообщений: 3
  • GtLab.Net forever!
    • Просмотр профиля
    • E-mail
Подскажите дилетанту :)
Хочу заказать отладочную плату http://starterkit.ru/html/index.php?name=shop&op=view&id=27
Насколько необходимо приобретение программатора-отладчика http://starterkit.ru/html/index.php?name=shop&op=view&id=16 ?
Или можно купить переходник USB-COM (у моего ноута нет железного COM-порта) и держать двустороннюю связь по нему, а программатор-отладчик никогда в жизни не понадобится поскольку в нем нет ничего полезного?

Rst7

  • Сообщений: 1619
  • Мимо проходил...
    • Просмотр профиля
    • E-mail
Цитировать
Хочу заказать отладочную плату http://starterkit.ru/html/index.php?name=shop&op=view&id=27

Вот это правильный выбор.

Цитировать
Насколько необходимо приобретение программатора-отладчика http://starterkit.ru/html/index.php?name=shop&op=view&id=16 ? Или можно купить переходник USB-COM (у моего ноута нет железного COM-порта) и держать двустороннюю связь по нему, а программатор-отладчик никогда в жизни не понадобится поскольку в нем нет ничего полезного?

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

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

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

ivana

  • Сообщений: 3
  • GtLab.Net forever!
    • Просмотр профиля
    • E-mail
Спасибо, вы подтвердили мои предположения. Я тоже склоняюсь к отладочной печати в гипертерминал и к маханию ножками. Просто думал - вдруг у этой железяки есть какие-то неоспоримые преимущества или режимы/фичи которые по другому никак не получить и которые я ещё не знаю, чтобы было основание ей пользоваться. Насколько я понял, это похоже на пошаговый отладчик программного кода в языках программирования высокого уровня на компе или то-же отладчик симулятора - только "настоящий" и железный, и однозначно работающий с периферией? Если процесс перепрошивки МК будет происходить быстро, тогда думаю будет проще несколько раз его перепрошить каждый раз выводя в отладочную печать то что нужно, и поймать ошибку.

Rst7

  • Сообщений: 1619
  • Мимо проходил...
    • Просмотр профиля
    • E-mail
Цитировать
Насколько я понял, это похоже на пошаговый отладчик программного кода в языках программирования высокого уровня на компе или то-же отладчик симулятора - только "настоящий" и железный, и однозначно работающий с периферией?

Да, так и есть.

Цитировать
Я тоже склоняюсь к отладочной печати в гипертерминал

Лучше не в гипертерминал. Одним хорошим профессионалом написан годный прошивальщик LPC из командной строки. Он после прошивки умеет сам быть терминалом. Курить тут - http://electronix.ru/forum/index.php?showtopic=29794
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен

Peratron

  • Сообщений: 13579
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Цитировать
Подскажите дилетанту :)
Хочу заказать отладочную плату http://starterkit.ru/html/index.php?name=shop&op=view&id=27
В принципе, можно обойтись загрузкой через последовательный порт - для этого предварительно нужно в кристалл залить специальную программку-downloader и соответствующем образом запрограммировать управляющие fuse (биты, которыми программируются режимы кристалла - в том числе, и возможность рестарта через даунлоадер). Но для этого понадобится по крайней мере однажды воспользоваться стандартным программатором - для того, что б этот ДЛ зашить в МК.

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

Если заниматься МК как следует - то без программатора (по крайней мере последовательного - через внутрисхемный программатор ака ISP) не обойтись. Одного кристалла будет мало - а бегать к соседу прошивать ДЛ в каждый новый, это не набегаешься.

Но вот начинать с зашитого кем то другим кристалла - это самое то. И наиболее правильно, если это будет именно Ардуино - это потом всякие отладочные комплекты на любой вкус будут. А сначала нужно, что б оно включилось и заработало - и ардуень в этом смысле непревзойдённа, поскольку предоставляет законченную среду, включающую гарантированно совместимое железо и программу (IDE).

Цитировать
Насколько необходимо приобретение программатора-отладчика http://starterkit.ru/html/index.php?name=shop&op=view&id=16 ?
На начальном этапе критическим параметром является документированность - если опираться на любой отладочный комплект, а тем паче собирать его самому, документации будет намного меньше и вероятность преуспеть значительно снижается.
Потому ещё раз я на первый подход предлагаю имено Ардуино - кто б что б иного про это не говорил.
Ардуинное железо само по себе является тем же самым отладочным комплектом - и можно писать на любом языке помимо стандартного ардуиновского диалекта Си.

Огромное количество периферии и библиотек значительно облегчают жизнь на этапе освоения.
У меня сейчас три конвенциональных ардуени не считая однокристальных версий - для экспериментов по связи разного музыкального оборудования в единую сеть.
При этом, минимальная ардуень - это просто чип АТМега8 с резистором на выводе RESET!
Делается он так - в кроватку Ардуино Северино ставится новый чип, в него по ISP прошивается загрузчик (одним нажатием), после чего из IDE закачивается прикладной скетч (пользовательские программы в домене ардуино принято именовать "скетчами").
После этого кристалл извлекается из кроватки и ставится в целевой модуль.
http://mk90.blogspot.com/2011/01/arduino-3-atmega8a-bootloader.html

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

Цитировать
Или можно купить переходник USB-COM (у моего ноута нет железного COM-порта) и держать двустороннюю связь по нему, а программатор-отладчик никогда в жизни не понадобится поскольку в нем нет ничего полезного?
Переходник должен быть продвинутым - поддерживать бит-банг режим ком-порта! То есть, обязательным является приобретение FT232RL или эквивалента. Простые шнурки как правло это не поддерживают.
Бит-банг программер - это программатор, в котором управление процессом внутрисхемного программирования производится через вспомогательные линии ком-порта.

Приобретя ардуень с USB ты автоматически приобретаешь такой программатор:
http://arduino.cc/en/Tutorial/ArduinoISP
http://freeduino.ru/arduino/isp.html

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

Цитировать
Насколько я понял, это похоже на пошаговый отладчик программного кода в языках программирования высокого уровня на компе или то-же отладчик симулятора - только "настоящий" и железный, и однозначно работающий с периферией?
Пошаговую отладку сложной математики (именно математики - то есть формульных вычислений) удобно делать в симуляторах - не вылезая в железо. Симуляторы есть в AVRStudio, Proteus и ряде других отладочных сред.
Когда математика выверена - можно вылезти в железо на хлеборезку. Или, если это в данном конкретном случае проходимт - сразу в целевое железо, отлаживая полный алгоритм через внутрисхемный программинг.

Цитировать
Если процесс перепрошивки МК будет происходить быстро, тогда думаю будет проще несколько раз его перепрошить каждый раз выводя в отладочную печать то что нужно, и поймать ошибку.
Так и делается - время перепрошивки сильно зависит от используемого адаптера ISP и варьирует от нескольких секунд, до нескольких десятков секунд.
Особенно удобно, если среда напрямую поддерживает программер.
Наиболее удобный - AVR ISP MkII. Он напрямую дружит с АВРСтудией - тогда скорректировал код, компильнул - и оно по умолчанию пишется в кристалл. Не надо выгружать объектный код, лезть в другое окно и шить его отдельной программой, поддерживающей твою железяку.

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

UPD: в порядке объективной критики ардуени - она ориентирована только на три базовых кристалла: АТмега8, АТмега168 и АТмега328.
Собственно говоря, это и есть единственный её реальный недостаток - который на самом деле является основой главных достоинств: многообразие возможностей на стартовом этапе только мешает - слишком большое количество степеней свободы осложняет реальный выбор.
Никто и ничто не мешает отработать задачу на этом стандартном железе - и лишь потом, будучи на 101% уверенным, переносить в любой другой кристалл.

ХИНТ: о чём сразу следует озаботиться - это собрать фьюз-доктора!
Совершенно определённо ты поначалу залочишь кучу кристаллов - просто из-за ошибок в установках фьюзов. А если ты во фьюзах записал запрет на RESET или на ISP, то доступ через простые программаторы у тебя накроется и ты сможешь снова работать с кристаллом, только "разлочив" его.
Для этого собирается специальное устройство, которое шьёт кристаллы по высокому напряжению и возвращает фьюзы в заводское состояние.
http://startcd.narod.ru/rstdisbl_mega8/rstdisbl.htm
http://www.getchip.net/posts/059-ispravlyaem-avr-fyuzy-pri-pomoshhi-atmega-fusebit-doctor/
http://avrdevice.ru/?page_id=225

ХИНТ2: собрать стандартную ардуень не составляет проблемы:
http://howtomakekit.blogspot.com/2009/11/arduino-severino.html
По серийному порту она может работать через любой убогий усб/сериал мост - поскольку использован стандартный протокол Tx/Rx...
« Последнее редактирование: Октября 02, 2011, 01:50:28 am от peratron »
Схемотехническая мантра: титцешенкохоровицехилл. Повторять до просветления...

Peratron

  • Сообщений: 13579
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Трёхосевой акселерометр в качестве датчика наклона:
Схемотехническая мантра: титцешенкохоровицехилл. Повторять до просветления...

Затворник

  • Сообщений: 271
    • Просмотр профиля
    • E-mail
Уважаемый Peratron! Вы уже наверное накрутили Ардуину вдоль и поперек. Скажите (навскидку) сколько контроллеров понадобится (это не считая обвязки, которая может быть принципиально любой и даже достаточно сложной) для того, чтобы в 12 каналах рулить тремя шаговыми двигателями. В каждом канале одномоментно задействовано не более одного двигателя. Время отклика пусть будет 0,1-0,5 секунды. То есть, из трех выбираем один, указываем ему направление вращения и даем команду на исполнение. Ограничение хода - программное (+ концевые выключатели на случай программного глюка  :D). Хорошо, если бы все оперативно рулилось с компьютера. Вот. Ответьте, пожалуйста! Лень в даташиты лезть и в теме искать. Вы в этом смысле - первоисточник. Спасибо!
« Последнее редактирование: Октября 02, 2011, 04:43:06 am от Husted »
Депрессия - это когда выбитые зубы собирают сломанными руками.

Rst7

  • Сообщений: 1619
  • Мимо проходил...
    • Просмотр профиля
    • E-mail
Цитировать
Цитировать
Подскажите дилетанту :)
Хочу заказать отладочную плату http://starterkit.ru/html/index.php?name=shop&op=view&id=27
В принципе, можно обойтись загрузкой через последовательный порт - для этого предварительно нужно в кристалл залить специальную программку-downloader и соответствующем образом запрограммировать управляющие fuse (биты, которыми программируются режимы кристалла - в том числе, и возможность рестарта через даунлоадер). Но для этого понадобится по крайней мере однажды воспользоваться стандартным программатором - для того, что б этот ДЛ зашить в МК.
...

Facepalm.jpg

Господин Peratron, Вы хотя-бы по ссылке сходили. Там на ARM отладочная плата, конкретно - LPC1768. Никаких фузов там нет, а начальный загрузчик с завода - наоборот есть.

Весь остальной текст соответственно к вопросу Ivana не имеет никакого отношения.
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен

ivana

  • Сообщений: 3
  • GtLab.Net forever!
    • Просмотр профиля
    • E-mail
На Электроникс.ру  спрашивать страшно, поэтому продолжу тут :)
"Одним хорошим профессионалом" (С) было сказано: 
Цитировать
Аналогично некорректно молча игнорировать (компиллятору - прим. переводчика), к сожалению, широко бездумно применяемое while( 1 ){.....}

Я первый раз увидел While(1) в коде KMG. Это меня ещё тогда помнится смутило, но мне было объяснено что это "корпоративный стандарт". Потом я подумал и решил, что логично постоянно сидеть в бесконечном цикле и ничего не делать, при этом по прерываниям не будут спешно делаться длинные процедуры - а только выставляться флаги, которые будут обрабатываться в нужном приоритете внутри этого бесконечного цикла. Потом я увидел эти While(1) во множестве фабричных примеров прямо с сайтов производителей. Но вышеприведенная цитата вернула меня к моим сомнениям. Хотя я понимаю что это по сравнению с другими вопросами - ловля блох  ::)

ЗЫ извините, поспешил с вопросом :) Полазил-почитал - речь о
Цитировать
While(1) vs for(;;)
и что первое не труЪ а второе по стандарту :)

ЗЗЫ а прикольно местный ВВ-декодер воспринял ";"+")" в конце for - вот тебе и пример, что пишешь и имеешь в виду одно, а компилятор выворачивает это абсолютно по другому!  ::)
« Последнее редактирование: Октября 02, 2011, 06:57:52 pm от Ivana »

KMG

  • Сообщений: 3776
    • ICQ клиент - 412221711
    • AOL клиент - Mike
    • Просмотр профиля
    • E-mail
Выход из main() означает завершение задачи, поэтому необходимо обеспечить зацикливание программы внутри main(). Как раз while(1){...} или for( ;; ){...} это и обеспечивают.
В других местах программы стоит конечно избегать таких конструкций без насущной необходимости.

Rst7

  • Сообщений: 1619
  • Мимо проходил...
    • Просмотр профиля
    • E-mail
Цитировать
while( 1 ){.....}

Есть адекватная форма записи вечного цикла:
for(;;){....}

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

С другой стороны, форма
do{...}while(0)
имеет право на жизнь и общепринята для обрамления функций в #define
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен

Rst7

  • Сообщений: 1619
  • Мимо проходил...
    • Просмотр профиля
    • E-mail
Цитировать
ЗЗЫ а прикольно местный ВВ-декодер воспринял

А есть правильный тег [сode]

:) ;) :D ;D >:( :( :o 8-) :-? ::) :P :-[ :-X :-/ :-* :'(

и без него:

 :) ;) :D ;D >:( :( :o 8-) :-? ::) :P :-[ :-X :-/ :-* :'(
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен

ivana

  • Сообщений: 3
  • GtLab.Net forever!
    • Просмотр профиля
    • E-mail
Вы уж простите меня за поспешные и глупые вопросы - просто наткнулся и спешно хотел вас застать пока вы оба онлайн  ::) Хотя, насчет "do{...}while(0)" он тоже прошелся (с этого в принципе и все началось  ::) ), аргументировал что достаточно просто "{...}". Но если про "while(1){...} vs for( ;; ){...}" я действительно все понял до конца, то про второй пример - нет, тем более вы говорите что это надо :) Буду курить копать дальше  ::)

Цитировать
А есть правильный тег [сode]
А я то думал - и как это у вас получается такие красивые вставки делать, да с полосой прокрутки, да без слова "Цитата"!  :) Век живи - век учись. Это к вопросу, что свои команды надо правильно обрамлять - и на С в том числе  ::) И к вопросу о том, что именно там я не хотел превращения его в смайлик - но исполнительный компилятор сделал это за меня :) Чувствую, я ещё пройдусь по полю с граблями с аналогичными случаями в С!  ::)
« Последнее редактирование: Октября 02, 2011, 07:11:08 pm от Ivana »

Rst7

  • Сообщений: 1619
  • Мимо проходил...
    • Просмотр профиля
    • E-mail
Цитировать
Хотя, насчет "do{...}while(0)" он тоже прошелся

Там Игорь прошелся по нему исключительно из-за того, что это было написано совершенно не к месту. Обычное применение такой конструкции - в изготовлении inline-функции через #define (пример, конечно, из пальца высосан)

//Годный способ:
#define foo(a,b) do{c=(a)+(b);}while(0)
//Говнокод (с возможностью массы побочных эффектов при ошибках):
#define foo_bad(a,b) c=a+b;
....
foo(1,2); //Ok
...
foo(1,2) //пропущена ; => ошибка.
...
foo_bad(1,2) //; пропущена, а ошибки нет.
...
« Последнее редактирование: Октября 02, 2011, 07:16:15 pm от Rst7 »
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен