букварь писал(а): ....Для микроконтроллера ATtiny2313 адрес последней ячейки памяти будет равен $7FF. Адрес последней ячейки памяти всегда на единицу меньше объема этой памяти ....
Растолкуйте, откуда взялось $7FF? Яндекс подсказывает, что у него 2 Кб памяти.
Ну либо предполагается, что он где-то когда-то изучал системы исчисления с разными основаниями и знает как они обозначаются, либо нужно спросить у кого-то (что ты с успехом и сделал ).
В букваре написано, что у ATtiny2313 есть какие-то порты "A", "B", "D". Что это за порты? Я вижу только 20 ножек. И если эти порты есть, то куда пропал порт "С"? Это что-то абстрактное?
И еще, что такое "инициализация" и "стек", и "вершина стека"? Зачем выключать компаратор, если он в схеме вообще не задействован? Что такое "старший бит"?
За каждую ногу отвечает отдельный бит. Но контроллер оперирует не с битами, а с байтами. В байте хранится инфа о состоянии сразу 8 ног. Аналогично с настройкой направления работы ног. В байте настройки сразу для 8 ног. Вот такое объединение и есть порт.
Почему нет порта C - это к разработчикам (может алфавит забыли).
Инициализация - это предварительные процедуры, которые необходимо выполнить, чтобы что-то заработало. Иногда на одни и те же ноги в контроллере повешена куча разной периферии и чтобы нога работала именно так, как тебе нужно - сначала надо в определённых регистрах указать (установкой или сбросом определённых бит) как ты собираешься эту ногу использовать. Вот это и есть инициализация. Например, чтобы какая-то нога заработала как вход или выход - надо сначала в байте, отвечающем за направление работы ног установить или сбросить определённый бит.
Стек - это такая структура хранения данных. Вершина стека - это адрес, по которому сохраняется первый байт. После сохранения каждого нового байта адрес в указателе стека увеличивается (или уменьшается) - стек растёт. Особенность стека в том, что он напоминает, например, коробку. Если ты положил в коробку что-то, потом сверху ещё что-то и ещё что-то, то доставать это всё нужно в обратном порядке. Чтобы добраться до вещи, которая в самом низу - нужно сначала убрать то, что наложено сверху. Так и в стеке, - сохранил туда байт, потом ещё один, потом ещё. А выгружаешь в обратном порядке.
Компаратор выключают именно тогда, когда он не задействован, чтобы уменьшить энергопотребление. Зачем запитывать ту часть, которая тебе не нужна?
Старший бит - это тот, у которого вес больше. Например, если записать байт в двоичной форме, и рассматривать веса отдельных битов справа налево, то вес самого первого бита будет единица (два в нулевой степени), второго - двойка (два в первой степени), третьего - четвёрка (два в квадрате), четвёртого - восьмёрка, пятого - шестнадцать, шестого - тридцать два, седьмого - шестьдесят четыре, восьмогго - сто двадцать восемь. Следовательно, 5-й бит старше, чем, скажем, третий, а самый старший бит - восьмой. Самый младший - первый. Только биты обычно считаются не с единицы (это я просто для примера так сделал), а с нуля, то есть самый младший в байте - это нулевой, а самый старший - седьмой.
rhf-admin писал(а):В байте настройки сразу для 8 ног. Вот такое объединение и есть порт.
Как узнать какие именно ножки объединены в порт?
Не получается по 8 ног у каждого порта - ножек не хватает. Три порта по 8 = 24 ножки, да еще питание, а у ATtiny2313 всего 20 выводов.
Компаратор выключают именно тогда, когда он не задействован, чтобы уменьшить энергопотребление. Зачем запитывать ту часть, которая тебе не нужна?
Он потребляет энергию когда НЕ выключен, и НЕ используется?
А ты как научился кодить, и много ли времени на это ушло?
Узнать какие ножки объединены в порт можно из доки на камень.
В байте не обязательно должны быть задействованы все 8 бит. Какие-то могут не использоваться.
Компаратор и некоторая другая периферия (в других камнях) естественно потребляет энергию, даже если не используется, поэтому её надо выключать. Как контроллер-то узнает используется она или нет, если ты этого ему не скажешь? Вдруг тебе в программе данные компаратора понадобятся, а их нет. Камень не анализирует всю твою программу целиком и не знает будешь ты использовать компаратор или нет. Он извлекает из памяти инструкции, которые ты туда залил и выполняет их по очереди, по одной штуке.
Я учусь кодить всю жизнь, со школы, и научился - это сильно сказано. Под что-то умею, под что-то ещё нет.