0
Кстати, попробовал только что откомпилировать тестовый проект под AVRASM (какой же он всё-таки убогий! пришлось закомментить кучу кода, чтобы съел)

Так вот, немаркированные метки (голый LOOP__RAMFLUSH) — также адекватно обрабатывает. Смотрю MAP-файл:
CSEG ramflush.4.loop__ramflush 0000000d
CSEG ramflush.5.loop__ramflush 00000013


А вот, синтаксис $Label — вообще не переваривает!
$LOOP__RAMFLUSH:  (syntax error)
BRNE	$LOOP__RAMFLUSH  (operand expected)
  • avatar
  • Celeron
  • 04 февраля 2014, 16:37
0
Тогда вопрос: Как правильнее локализовать?
Есть макрос… Префиксы $ следует приписать: и к самой Метке, и при Ссылке на неё?
.MACRO	RAMFLUSH
	LDI	ZL, Low (SRAM_START)
	LDI	ZH, High(SRAM_START)
	CLR	temp

$LOOP__RAMFLUSH:
	ST	Z+, temp
	CPI	ZL, Low (RAMEND+1)
	BRNE	$LOOP__RAMFLUSH
	CPI	ZH, High(RAMEND+1)
	BRNE	$LOOP__RAMFLUSH
.ENDM
  • avatar
  • Celeron
  • 04 февраля 2014, 16:13
0
Да, что-то такое есть и работает… Жаль только, что это не документировано. А недокументированное — не стоит использовать.

Официально рекомендуемый синтаксис — относительной адресации от PC (но это забодаешься смещение высчитывать):
RJMP PC-2

Но я также уже использовал, на свой страх и риск, и Метки в макросах. Хотя не был в них уверен…

Проверил: ассемблер AVRASM2 терпит в макросах и метки с префиксом '$' (вероятно для обратной совместимости), и обычные голые метки… Причём, при компиляции, для меток используемых в макросах — смещение генерируется совсем иначе (с суфиксами), чем для регулярных меток! Символ '$' в названиях меток, при этом, игнорируется (пробовал ассемблировать и так и этак — результат одинаковый). Смотрю MAP-файл:
; обычные метки вне макросов
CSEG RESET        0000004f
CSEG MAIN         00000080
CSEG RTOS_METHOD_ProcessTaskQueue 000000f3
CSEG RTOS_METHOD_AddTask 000000d9
; метки внутри макросов
CSEG LoopTimer__RTOS_TIMER_SERVICE@RTOS_TIMER_SERVICE@2878 0000001d
CSEG SkipTimer__RTOS_TIMER_SERVICE@RTOS_TIMER_SERVICE@2878 0000002e
CSEG EndTimer__RTOS_TIMER_SERVICE@RTOS_TIMER_SERVICE@2878 00000032
; пример метки внутри макроса, когда макрос вставлен в код два раза подряд
CSEG LOOP__RAMFLUSH@RAMFLUSH@3071 00000054
CSEG LOOP__RAMFLUSH@RAMFLUSH@3085 0000005c
(Окно Дизассемблера также демонстрирует правильно развязанные адреса в инструкциях Branch/Jump.)

Вывод: в современном AVRASM2 — можно использовать метки, и лучше писать обычные голые Label (без префикса $).
  • avatar
  • Celeron
  • 04 февраля 2014, 13:46
0
;-D
  • avatar
  • Celeron
  • 03 февраля 2014, 17:03
+1
«Ассемблер уже затем учить следует, что он ум в порядок приводит» (с) М.В.Ломоносов
  • avatar
  • Celeron
  • 03 февраля 2014, 15:02
0
Аргумент за процедуры: В отличие от макросов, в процедурах можно использовать Ветвления и Циклы (они терпят Метки внутри), их код легче поддерживать. Также, их легче согласовывать с прикладным кодом, организовывать циклы и вложенные вызовы — поскольку интерфейс процедур более упорядочен и код изолирован (меньше побочных эффектов).

лучше было сделать в виде макросов, тк делать call к функции в несколько инструкций — не рационально.
Согласен, там много очень коротких функций — может быть, со временем, решу выделить часть кода в ещё некий <genmacrolib.inc>… На самом деле, эта библиотека родилась между делом, вместив в себя общий код из нескольких проектов. Но её идеология ещё не устоялась.
  • avatar
  • Celeron
  • 03 февраля 2014, 11:22
0
Перемычки для макетных плат «папа-папа» можно заказать в «ЧП Ворон»: у них на складе, вижу, сейчас аж полторы сотни комплектов (кстати, нужно зарегистрироваться/залогиниться у них на сайте, чтобы видеть остатки).

Да и на сайте arduino-ua.com показывают много перемычек в наличии: как поштучно, так и в комплекте

Между прочим, в отсутствие специальных удобных «перемычек» — цанговые разъёмы позволяют использовать отрезки обычного монтажного провода: одножильный, диаметром 0.5-0.7мм, зачищенный с двух концов на ~1см. (будучи пацанами, мы его называли «телефонным проводом», потому что его обрезки находились возле телефонных колодцев — обрезки магистрального кабеля)
  • avatar
  • Celeron
  • 06 января 2014, 03:38
0
зачем стремиться к такой миниатюризации?

Ради модульности! Модульность — ради гибкости. Простота — для удобства.
Есть множество замечательных «Лабораторных блоков питания», которые есть в лаборатории каждого электронщика, функциональные и надёжные… Лучше использовать их для питания своих макетов. (Кстати, для питания микроконтроллеров, обычно используется не более 5V.)

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

Если хочется больше периферии — есть отличная макетная плата «PinBoard», спроектированная основателем этого сайта DI HALTом. «PinBoard» — отлично подходит для обучения приёмам проектирования устройств на микроконтроллерах (для начала, на 8-битных AVR). Именно для этой цели была и спроектирована «PinBoard», для неё написан целый обучающий курс, и основан этот сайт — такова была Цель её автора…

Моя же макетная плата имеет иное назначение: минималистичная обвязка для надёжного запуска микроконтроллера (наиболее широкого спектра камней, для большего охвата проектируемых задач), как альтернатива контактному breadboard. И это лишь кирпичик в общей системе. Остальные узлы — следует набирать на других макетных платах, и подключать к этой базовой, по необходимости. Такова была моя Цель!
  • avatar
  • Celeron
  • 06 января 2014, 03:26
0
Замечание!Добавлено решение: «Выпрямительный мост на МОП-транзисторах» — обеспечивающий мизерное паразитное падение напряжения.
Теперь, будут разрешены все проблемы с «источниками питания» для макетной платы, обсуждаемые выше.
  • avatar
  • Celeron
  • 04 января 2014, 02:11
0
Маркетинг — он такой «маркетинг»… ;)
yvasi.com.ua/?g=1&seller=&k=zif+40+pin+universal
voron.ua/catalog/000382
  • avatar
  • Celeron
  • 02 января 2014, 20:47
0
Изучая схему принципиальную «STK500» — там тоже задействовали: подвод внешнего питания через «стандартный штекер 5.5х2.1мм», затем, тумблер питания, диодный мост, затем, стабилизатор питания. Причём, стабилизатор питания (LM317) — регулируемый программно, и управляемый через GUI «AVR Studio / Tools / плата STK500» (см. Atmel STK500 User Guide / пункт 5.3.5.1 VTARGET)…

Однако, все эти сложности — очень ограничивают! С возрастом, приходит понимание (мудрость), что «хитрость и сложность — это от Лукавого»… А «всё гениальное — просто».
  • avatar
  • Celeron
  • 02 января 2014, 20:35
0
Диодный мост тут, по моему, лишний
Без мостика, нельзя задействовать любой бытовой «сетевой адаптер питания», без оглядки на полярность его «стандартного штекера 5.5х2.1мм».
Обычно, используется кодировка: "-" --C o-- "+"
но всяко может быть… а штекер переделать проблематично.
  • avatar
  • Celeron
  • 02 января 2014, 19:59
0
В модуле питания явно не хватает стабилизатора.
Не годится! Стабилизатор — слишком сложное решение для данного концепта макетной платы: «просто, значит удобно!» Напряжение питания должно регулироваться внешним источником: т.е. к чему подключишь — такое и будет…

не хватает возможности прокинуть питание с разъемов в обход моста.
Вот это, как раз, можно: подключить питание на внутренние шины «VCC» и «GND» непосредственно, в обход «блока управления питанием». Правда, тогда не будет работать кнопка выключения питания. Но т.к. шины визуально разнесены, то полярность питания перепутать сложно. Однако, я не документировал эту фичу — т.к. «deprecated»…

кнопка вообще на 0.3А рассчитана (по этой же причине мостик можно заменить полуамперным)
Ага, кнопка, действительно, слабоватая. Надо поставить помощнее…
А вот мостик уменьшать до полуампера — не стоит! Общее потребление макета устройства может быть гораздо больше полуампера — на это я старался рассчитывать.
А что такое «СВП»?

На таких соплях кварцевый генератор запросто может не запуститься.
Я тоже немного сомневался в таком решении. Но проверил: на Кварце 8Мгц — микроконтроллер запускается чётко. Выше, пока, не тестировал…

в итоге у тебя получился обычный бредборд
Не обычный, а на «цанговых соединителях» — как у DI HALTа на PinBoard, макетная панель!
  • avatar
  • Celeron
  • 02 января 2014, 17:52
0
Да, я тоже очень удивился и обрадовался такой находке! В то время как, встречал, средняя цена на такую «универсальную ZIF-панель» 120грн. и выше (она очень популярная, для всяких программаторов, вот и возят специально многие, да накручивают) — здесь же, всего 26грн.
Качество панельки меня устроило — производитель «3M» (Китай), обычное китайское качество… Похоже, что это дилер с прямыми поставками из Китая — вот и получаются небольшие накрутки, но очень ограниченный ассортимент товаров.
Отзывы о магазине мне понравились. Заказал у них 2шт. ZIF-панели и комплект соединительных проводов — заказ отработали чётко и быстро, как в отзывах. Похоже, что компания маленькая (фактически, это ЧП) и работают в ручном режиме…
  • avatar
  • Celeron
  • 02 января 2014, 17:23
0
левой кнопкой «изображение» (Ctrl-P) добавляешь уменьшенное изображение (движок его сам уменьшит, так что можно заливать то же, что и на внешних хостинг).
Настоятельно рекомендую: до заливки на сайт, самостоятельно (вручную) уменьшать размер изображения до требуемых сайтом ограничений (720px по горизонтали)! Используя хорошую программу для редактирования изображений (например, Photoshop; или ещё очень удобна «FastStone Image Viewer»).
Движок сайта, при трансформации, сильно ухудшает качество картинки (похоже, не интерполирует, а использует примитивные алгоритмы)… Таким образом, для сайта, следует отдельно готовить уменьшенные копии картинок (превьюшек).
  • avatar
  • Celeron
  • 02 января 2014, 17:03
0
Заливаешь полноразмерку на внешних хостинг, получаешь URL на нее.
Рекомендую использовать буржуйский хостинг картинок: ImageShack.us Но обязательно завести там свой аккаунт, и под него заливать свои картинки (т.е. не анонимно) — тогда картинки будут храниться «вечно».
ImageShack.us FAQ:
How long will my uploaded files be available?

Your files will only be deleted if they do not adhere to our Terms of Service. If you are registered, your files will be available forever. If you are not registered, any file that you upload will continue to be available if it is accessed by anyone at least onc per year.
kb.http://kb.imageshack.us/is/article?22=faq#a9/is/article?22=faq#a9

Хороший хостинг картинок...

Ограничения: Free ImageShack.us даёт:
места под хостинг 5GB; размер картинки до 5MB (!!!)
(больше — уже за деньги)
  • avatar
  • Celeron
  • 02 января 2014, 16:54
0
Угу, понял.
И всё же, полагаю, в данной схеме, в качестве VT2 — лучше взять биполярник. Но не потому что у него меньше токи утечки, а потому что так схема — проще (меньше деталей) и надёжнее работает (используя природные свойства биполярников).

Если взять полевой VT2, то ему обязательно нужно подтянуть Затвор к Земле (чтобы сам не открывался, от наводок). Но и в штатном режиме, при работе устройства, через эту подтяжку будет утекать заряд с Затвора — поэтому его прийдётся накачивать, практически, так же как и биполярник.
А биполярнику, за счёт существования ПРИРОДНОЙ гальванической связи База->Эмиттер->Земля, никакая дополнительная «подтяжка к Земле» не нужна — сам не откроется.

Разница появится, когда требуемый «ток Базы» биполярника превысит «ток утечки через подтяжку» полевика — тогда полевик станет выгоднее (в плане потребления) и надежнее/предсказуемее (в плане управления)…

p.s. Поздравляю всех с наступающим Новым годом!
  • avatar
  • Celeron
  • 31 декабря 2013, 02:39
0
Дык, не только «мега8» жрёт! А и все другие цепи, подключённые к «шине питания» устройства. Вот и набегает «2-3мА»…
  • avatar
  • Celeron
  • 31 декабря 2013, 01:49
0
О, да! Вот эта концепция: «паразитное питание»! Я забыл, как это называется, но чуял, что причина в этом. А транзистор VT2 — используется «для развязки»…
  • avatar
  • Celeron
  • 31 декабря 2013, 01:30
0
добавлено:
3) Токоограничивающий R2 остаётся...
Хотя, для смягчения режимов заряда/разряда Затвора VT2, можно и ему токоограничивающий резистор вставить…
  • avatar
  • Celeron
  • 31 декабря 2013, 01:01