Мелкие вопросы по МК

Общие вопросы функционирования и программирования МК, обсуждение типовых алгоритмов...
Ответить
Аватара пользователя
БАРС
модератор, спонсор, писатель, идеолог, редактор
модератор, спонсор, писатель, идеолог, редактор
Сообщения: 2019
Зарегистрирован: 16 ноя 2009, 15:25
Откуда: СССР, г. Москва

Мелкие вопросы по МК

Сообщение БАРС »

Читаю букварь "Самоучитель разработчика устройств на микроконтроллерах AVR." (А.В.Белов).
Стр. 85.
букварь писал(а): ....Для микроконтроллера ATtiny2313 адрес последней ячейки памяти будет равен $7FF. Адрес последней ячейки памяти всегда на единицу меньше объема этой памяти ....
Растолкуйте, откуда взялось $7FF? :? Яндекс подсказывает, что у него 2 Кб памяти.
Сотрудничаю с НАСА, Роскосмос, Газпром, РЖД, Интер РАО ЕЭС, Роснано и др. (конкретно уточняйте у самой организации) ©.
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Мелкие вопросы по МК

Сообщение rhf-admin »

2 Кб = 2*1024 байт = 2048 байт. Байты считаются с нуля, поэтому последний байт - это 2047-й, что в шестнадцатиричной системе как раз будет 07FFh.
С уважением, администрация сайта.
Аватара пользователя
БАРС
модератор, спонсор, писатель, идеолог, редактор
модератор, спонсор, писатель, идеолог, редактор
Сообщения: 2019
Зарегистрирован: 16 ноя 2009, 15:25
Откуда: СССР, г. Москва

Re: Мелкие вопросы по МК

Сообщение БАРС »

И как, взявший впервые в руки такую книжку, должен понять, что 07FFh и $7FF это одинаковые значения?
Сотрудничаю с НАСА, Роскосмос, Газпром, РЖД, Интер РАО ЕЭС, Роснано и др. (конкретно уточняйте у самой организации) ©.
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Мелкие вопросы по МК

Сообщение rhf-admin »

Ну либо предполагается, что он где-то когда-то изучал системы исчисления с разными основаниями и знает как они обозначаются, либо нужно спросить у кого-то (что ты с успехом и сделал :) ).
С уважением, администрация сайта.
Аватара пользователя
БАРС
модератор, спонсор, писатель, идеолог, редактор
модератор, спонсор, писатель, идеолог, редактор
Сообщения: 2019
Зарегистрирован: 16 ноя 2009, 15:25
Откуда: СССР, г. Москва

Re: Мелкие вопросы по МК

Сообщение БАРС »

Это крах... Изображение
Сотрудничаю с НАСА, Роскосмос, Газпром, РЖД, Интер РАО ЕЭС, Роснано и др. (конкретно уточняйте у самой организации) ©.
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Мелкие вопросы по МК

Сообщение rhf-admin »

Виндовый инженерный калькулятор поможет. ;)
С уважением, администрация сайта.
Аватара пользователя
БАРС
модератор, спонсор, писатель, идеолог, редактор
модератор, спонсор, писатель, идеолог, редактор
Сообщения: 2019
Зарегистрирован: 16 ноя 2009, 15:25
Откуда: СССР, г. Москва

Re: Мелкие вопросы по МК

Сообщение БАРС »

В букваре написано, что у ATtiny2313 есть какие-то порты "A", "B", "D". Что это за порты? Я вижу только 20 ножек. И если эти порты есть, то куда пропал порт "С"? Это что-то абстрактное?

Изображение

И еще, что такое "инициализация" и "стек", и "вершина стека"? Зачем выключать компаратор, если он в схеме вообще не задействован? Что такое "старший бит"? :?
Сотрудничаю с НАСА, Роскосмос, Газпром, РЖД, Интер РАО ЕЭС, Роснано и др. (конкретно уточняйте у самой организации) ©.
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Мелкие вопросы по МК

Сообщение rhf-admin »

За каждую ногу отвечает отдельный бит. Но контроллер оперирует не с битами, а с байтами. В байте хранится инфа о состоянии сразу 8 ног. Аналогично с настройкой направления работы ног. В байте настройки сразу для 8 ног. Вот такое объединение и есть порт.

Почему нет порта C - это к разработчикам (может алфавит забыли).

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

Стек - это такая структура хранения данных. Вершина стека - это адрес, по которому сохраняется первый байт. После сохранения каждого нового байта адрес в указателе стека увеличивается (или уменьшается) - стек растёт. Особенность стека в том, что он напоминает, например, коробку. Если ты положил в коробку что-то, потом сверху ещё что-то и ещё что-то, то доставать это всё нужно в обратном порядке. Чтобы добраться до вещи, которая в самом низу - нужно сначала убрать то, что наложено сверху. Так и в стеке, - сохранил туда байт, потом ещё один, потом ещё. А выгружаешь в обратном порядке.

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

Старший бит - это тот, у которого вес больше. Например, если записать байт в двоичной форме, и рассматривать веса отдельных битов справа налево, то вес самого первого бита будет единица (два в нулевой степени), второго - двойка (два в первой степени), третьего - четвёрка (два в квадрате), четвёртого - восьмёрка, пятого - шестнадцать, шестого - тридцать два, седьмого - шестьдесят четыре, восьмогго - сто двадцать восемь. Следовательно, 5-й бит старше, чем, скажем, третий, а самый старший бит - восьмой. Самый младший - первый. Только биты обычно считаются не с единицы (это я просто для примера так сделал), а с нуля, то есть самый младший в байте - это нулевой, а самый старший - седьмой.
С уважением, администрация сайта.
Аватара пользователя
БАРС
модератор, спонсор, писатель, идеолог, редактор
модератор, спонсор, писатель, идеолог, редактор
Сообщения: 2019
Зарегистрирован: 16 ноя 2009, 15:25
Откуда: СССР, г. Москва

Re: Мелкие вопросы по МК

Сообщение БАРС »

Спасибо за подробный ответ!
rhf-admin писал(а):В байте настройки сразу для 8 ног. Вот такое объединение и есть порт.
Как узнать какие именно ножки объединены в порт?
Не получается по 8 ног у каждого порта - ножек не хватает. Три порта по 8 = 24 ножки, да еще питание, а у ATtiny2313 всего 20 выводов.
Компаратор выключают именно тогда, когда он не задействован, чтобы уменьшить энергопотребление. Зачем запитывать ту часть, которая тебе не нужна?
Он потребляет энергию когда НЕ выключен, и НЕ используется?

А ты как научился кодить, и много ли времени на это ушло?
Сотрудничаю с НАСА, Роскосмос, Газпром, РЖД, Интер РАО ЕЭС, Роснано и др. (конкретно уточняйте у самой организации) ©.
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Мелкие вопросы по МК

Сообщение rhf-admin »

Узнать какие ножки объединены в порт можно из доки на камень.
В байте не обязательно должны быть задействованы все 8 бит. Какие-то могут не использоваться.
Компаратор и некоторая другая периферия (в других камнях) естественно потребляет энергию, даже если не используется, поэтому её надо выключать. Как контроллер-то узнает используется она или нет, если ты этого ему не скажешь? Вдруг тебе в программе данные компаратора понадобятся, а их нет. Камень не анализирует всю твою программу целиком и не знает будешь ты использовать компаратор или нет. Он извлекает из памяти инструкции, которые ты туда залил и выполняет их по очереди, по одной штуке.
Я учусь кодить всю жизнь, со школы, и научился - это сильно сказано. Под что-то умею, под что-то ещё нет.
С уважением, администрация сайта.
Ответить