Just_Fluffy, насчёт отладки.
На мой взгляд, при отладке с точками остановок есть недостатки.
Иногда нельзя останавливать МК, потеря управления может привести к тяжёлым последствиям, скажем, система пойдёт в разнос.
Кроме того, вы смотрите данные только в одной точке.
Для меня это старая отладка из прошлого века.
Давно использую следующую отладку.
В нужных точках программы ставятся команды, выводящие в программатор номера точек и интересующие переменные.
При пуске МК на компьютере появляются номера точек и значения переменных.
Такая отладка, на мой взгляд, намного удобней. Можно проконтролировать ход выполнения программы и значения переменных в реальном режиме и без остановки МК.
Недостаток – используется пара выводов МК (реально обычно один) и вывод переменных занимает некоторое время. В основном, это несущественно.
Такой программатор недорогой, комплектация – Atmega8 и немного периферии.
«...Для больших – РОНов не напасёшься...»
Почему не напасёшься?
Есть же определённые правила программирования.
Большей частью программа состоит из вызовов подпрограмм (Sub и макросы). Подпрограммы решают небольшие задачи.
В подпрограммах в РОНах объявляются локальные переменные, их там обычно относительно немного.
Какие переменные объявить в РОН, какие в SRAM, решает разработчик. После компиляции можно посмотреть число вызовов той или иной переменной. Много вызовов – объявить в РОН, мало – в SRAM.
«…грамотно написанная программа на СИ на 20-30 % больше…»
Сильно сомнительно, что в СИ код возрастает только на 20-30 %.
Кто утверждает, как сравнивали? Возможно, взяли небольшую программу, неплохо написанную на СИ, и получили такой результат.
Скорее всего, в серьёзных программах всё гораздо хуже.
«…независимость от МК – в этом прелесть ЯВУ…»
Не вижу в этом прелести. Выигрыш почти никакой, а потери большие. Возрастание объёма, может быть, не очень существенно, а вот скорость работы может быть очень критична.
Сталкивался с плохо работающей следящей системой, СИ-шник писал.
На форуме описывали случай, когда «медленный» МК вообще привёл к смертельному случаю.
На мой взгляд, описание работы на СИ уместно, поскольку идёт сравнение с ассемблером.
Стесняюсь спросить, а почему вы называете регистры общего назначения через латинскую транслитерацию? Что означает RON?
Отчего стал применять аббревиатуру RON, сейчас уже не вспомнить. Скорее всего, где-то в программе, где только английские буквы, надо было использовать такую переменную, GPR показалось неблагозвучным.
Конечно, здесь на сайте надо было использовать общепринятое обозначение, а не «самодельное», заметили правильно.
Какая аббревиатура на английском общепринятая – для меня вопрос. На мой взгляд, GPR не подойдёт.
В новых МК АВР в регистрах ввода/вывода есть регистры общего применения, которые также называются. Причём это официальная документация, так что такая аббревиатура уже занята. Похоже, эти регистры удобно использовать для флагов, поскольку с ними работают команды SBI и другие.
В документации ещё указывают, что РОН это ещё и рабочие регистры, но про аббревиатуру GPWR я ничего не слышал.
По поводу полемики о фьюзах.
В новых МК АВР фьюзы действительно расположены в общем адресном пространстве данных, адрес &H1050. Однако записать фьюзы можно также только программатором UPDI, через CPU невозможно.
Если кому интересно, в даташите на МК AVR32DA32 в разделе 7 есть таблица 7-5, где указано, что можно программировать через программатор, что через CPU.