Jump to content

Вопросы от начинающих по МК


Recommended Posts

21 минуту назад, Гость Aira сказал:

 If(~PIND&(1<<0)

... понять сие невозможно, можно "уверовать".

... где скобку потеряли?

 

Edited by Юрий_Нд
Link to comment
Share on other sites

Guest Aira

If(~PIND&(1<<0) {лед горит}

else{ лед не горит}

PD0 на вход, подтягиваем внутренним к плюсу. Получается же когда там 1, если мк тока запустилась и 0b00000001 & 0b00000001 = 0b00000001 потом инвертируем, получается 0b11111110- истина. Получается хоть ноль, хоть 1 на PIND0 лед горит?

Link to comment
Share on other sites

23 минуты назад, Гость Aira сказал:

потом инвертируем

А потом ли ? )

PS: Вот я никогда не брезгую ставить "лишние"скобки там, где они логически визуально напрашиваются. Даже если уверен в приоритетах. И всем всегда советую это делать.

Link to comment
Share on other sites

Вебинар «Новые тенденции сетевых технологий: Ethernet по одной витой паре» (09.12.2021)

Приглашаем 9 декабря всех желающих посетить вебинар, посвященный технологии Ethernet и её новому стандарту 10BASE-T1S/L. Стандарт 802.3cg описывает передачу данных на скорости до 10 Мбит в секунду по одной витой паре. На вебинаре будут рассмотрены и другие новшества, которые недавно вошли в семейство технологий Ethernet: SyncE, PTP, TSN. Не останется в стороне и высокоскоростной 25G+ Ethernet от Microchip.

Подробнее

29 минут назад, Гость Aira сказал:

Как это понять? 

в языке Си есть такое понятие как  "приоритет операций"  Таблица 2.8.
с начала выполняется операнд с наивысшим приоритетом в конце с низшим
"~" - инверсия   имеет наивысший приоритет,
"<<" - высокий
"&" -  средний .  
первым выполняется операция в скобках
(1<<0) - "число 1 сдвинуть на 0 разрядов влево", те по сути установить бит0=1. (1<<0) = 0b00000001
вторым инверсия , к примеру был PIND= 0b01101100, стал ~PIND=0b10010011
третьим операция "поразрядное И " 0b10010011 & 0b00000001 = 0b00000001
условие if не равно нулю , выполняем действия в первых фигурных скобках.

Link to comment
Share on other sites

DC/DC-преобразователи Mornsun со склада Компэл

В сложный период для рынка электронных компонентов, когда производители увеличивают сроки поставки продукции, со склада Компэл можно приобрести широкий ассортимент DC/DC-преобразователей производства компании Mornsun. На складе представлены наиболее популярные семейства изолированных и неизолированных DC/DC-преобразователей новых поколений R3 и R4, а также предыдущего, но по-прежнему востребованного поколения R2.

Подробнее

Guest Aira

Щас на бумаге еще раз расписал, получается PIND0 уже инвертировано ждёт да? Потом тока накладывается &0b00000001? 

Link to comment
Share on other sites

Новые компоненты STMicroelectronics для учета электроэнергии

Внедрение автоматизированных систем контроля и учета всех видов энергоресурсов, невозможно без инструментов, позволяющих помимо измерения параметров, преобразовывать их для обработки цифровыми интеллектуальными системами. Микросхемы STPM32, STPM33 и STPM34 STMicroelectronics являются наиболее точными и высокопроизводительными представителями своего семейства и способны максимально точно измерять параметры электросети в системах электроснабжения переменного тока, а также осуществлять их первичную обработку. Рассмотрим подробнее их преимущества и средства разработки.

Подробнее

Карбид кремния позволяет повысить КПД и удельную мощность ИБП с двойным преобразованием

Построение источников бесперебойного питания с двойным преобразованием, широко используемых в современных хранилищах данных, на базе карбид-кремниевых MOSFETs производства Wolfspeed позволяет уменьшить мощность потерь в них до 40%, а также значительно снизить занимаемый ими объем и стоимость комплектующих.

Подробнее

Guest Aira

Первым выполняется. Спасибо, что обьяснили. Я то шёл подряд справа налево. Почитаю про приоритеты. 

Link to comment
Share on other sites

25 минут назад, Alex сказал:

//////////////

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

Повторяю:

34 минуты назад, Юрий_Нд сказал:

... и кто же это число 1 поставил в нулевой разряд?

... очень хороший человек или всё-таки "силы нам неведомые"

Link to comment
Share on other sites

1 минуту назад, Юрий_Нд сказал:

Повторяю:

Отвечаю :

Цитата

1 (единицу) двинули 0 (ноль) раз влево.

Что получится ?

Link to comment
Share on other sites

4 минуты назад, Юрий_Нд сказал:

... простите, не вижу смысла продолжать.

Аналогично... Ибо отвечать на вопрос "Откуда появилась единичка в нулевом разряде числа "1" ?" - глупо.

Link to comment
Share on other sites

22 minutes ago, Юрий_Нд said:

... очень хороший человек или всё-таки "силы нам неведомые"

Смешно. Книжку почитайте.

Link to comment
Share on other sites

Guest Aira
1 час назад, Юрий_Нд сказал:

... и кто же это число 1 поставил в нулевой разряд?
 

Юрий, скажите нам, что вы хотите сказать? (1<<0) получается 0b0000 0001 правильно же?

Link to comment
Share on other sites

16 минут назад, Гость Aira сказал:

получается 0b0000 0001

Не совсем так,  правильнее сказать: 
После  (1<<0) получается 0bххххххх1,  где вместо иксов то, что было раньше.
А вот почему это так получается,  ещё раз повторяю,  в этом можно только "уверовать".
Кстати у моих оппонентов тоже "не шибко складно получается",  как это всё доказать/пояснить можно.

... но у них есть проверенный прием:

1 час назад, _abk_ сказал:

Книжку почитайте.

 

Edited by Юрий_Нд
Link to comment
Share on other sites

3 минуты назад, Юрий_Нд сказал:

Не совсем так,  правильнее сказать: 
0bххххххх1,  где вместо иксов то, что было раньше.

Нет. Совсем нет. 

Запись (1<<0) буквально означает число у которого  нулевой бит установлен единицу и  больше ничего. Если написать (1<<5) это будет означать число с 5м битом,  установленным  в единицу и больше ничего.  

 

Link to comment
Share on other sites

4 минуты назад, dasZebra сказал:

(1<<0) буквально означает число у которого  нулевой бит установлен единицу и  больше ничего.

... а я "об чем тлумачу"?

 

Вы обратили внимание, что человек  во все остальные разряды записал нолики?

 

... это по-вашему верно?

Link to comment
Share on other sites

16 минут назад, Юрий_Нд сказал:

0bххххххх1,  где вместо иксов то, что было раньше.

Скрытый текст

 

 

31 минуту назад, Гость Aira сказал:

(1<<0) получается 0b0000 0001 правильно же?

правильно

Link to comment
Share on other sites

51 минуту назад, Юрий_Нд сказал:

Не совсем так,  правильнее сказать: 
После  (1<<0) получается 0bххххххх1,  где вместо иксов то, что было раньше.
А вот почему это так получается,  ещё раз повторяю,  в этом можно только "уверовать".

Выражение (1<<0) при операнде размера байт (char, uint8_t, int8_t) обозначает именно b00000001 << 0.
Т.е., единицу сдвинуть влево на ноль позиций.
Вообще, операция (x<<y) означает "содержимое x сдвинуть влево на y позиций"
И компилятору не важно, что вы вместо x или y написали - переменную или константу.
Удивляет ваше агрессивное невежество...
Вы общаетесь тут с людьми, которые пишут на Си многие годы. Более того, некоторые могут даже обучать тех, кто учиться желает.
И вы, не зная ничего (и похоже, не желая знать), рассказываете про "уверовать". С этим вам в церковь, а не на технический форум.

И рекомендация почитать книжки - правильная.
А вот тыкаться, как слепой котенок - неверно.

Вот даже порекомендую книжку. Она простая, не толстая. И называется просто. "Язык Си".За авторством Кернигана и Ричи. Если что, это "отцы" языка. 

Edited by LiVit
Link to comment
Share on other sites

16 минут назад, Юрий_Нд сказал:

Вы обратили внимание, что человек  во все остальные разряды записал нолики?

 

... это по-вашему верно?

Нет никаких остальных разрядов.

Запись вида (1<<х) это двоичное число с единицей в разряде номер Х (соответственно с нулями во всех других разрядах). 

Но... (1<<0) конечно все же отличается от 0b00000001. (1<<0) это 1 и все. А например (1<<1) это не 0b00000010 а всего лишь 10. В этом глубокий смысл нотиции (згачение << номер бита).

Не благодарите.

Link to comment
Share on other sites

34 минуты назад, dasZebra сказал:

А например (1<<1) это не 0b00000010 а всего лишь 10.

нет, это не 10 , а 2,  в двоичном представлении для размера байт (char, uint8_t, int8_t) именно 0b00000010

Link to comment
Share on other sites

13 минут назад, dasZebra сказал:

В этом глубокий смысл нотиции (згачение << номер бита).

тоже нет. глубокий смысл в том, что запись вида (X<<Y) буквально означает:
число X умножить на 2 в степени Y ( X*2^Y).
в двоичном исчислении это арифметический сдвиг влево на Y бит
по мимо этого существуют еще циклический сдвиг с учетом флага переноса и   циклический сдвиг без учета флага переноса
но в Си их реализация отсутствует,  

Link to comment
Share on other sites

 

Этим  вот 0b00000010 оно станнет тольто тогда когда компилятор  сначала выделит память под переменную длинной 8 бит и потом туда запишит эту (1<<1) оператором присваивания: либо простым равно с очисткой всех битов, либо "вертикальная палка" и равно - с сохранением всех других битов нетронутыми.

2 минуты назад, IMXO сказал:

тоже нет. глубокий смысл в том, что запись вида (X<<Y) буквально означает:
число X умножить на 2 в степени Y ( X*2^Y).

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

Link to comment
Share on other sites

18 минут назад, dasZebra сказал:

Этим  вот 0b00000010 оно станнет тольто тогда когда компилятор  сначала выделит память под переменную длинной 8 бит и потом туда запишит эту (1<<1) оператором присваивания:

это все лишь ваши фантазии, компилятор не будет создавать ни какой переменной и  ни какого выделения памяти под нее тоже не будет , потомушта это константа и ее значение будет вычислено еше на моменте компиляции и помещено в память программ в виде команды

18 минут назад, dasZebra сказал:

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

да компилятору абсолютно монопенисуально в каком виде будет записана константа.
буде это 0b00000010 или (1<<1) или (1*2) результат будет один и тот же.

Link to comment
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.

  • Сообщения

    • Понял. Я не про это. У меня тонер на подложку не прилипает при печати. Хотя можно, конечно, поиграться разными типами бумаги, наверняка оно как-то на скорость и температуру при печати влияет.
    • Из плюсов, и рисовать может, и из дерева фигурки резать, и плату вырезать или сложныен отверстия как дял крепления разъема питания например. Из минусов нужен 3д принтер  или будет дороже немного, на пару тысяч думаю, зато еще надежней, то есть Z ось придется купить)
    • Это в настройках ламинатора.  Если температура недостаточная, то требуется доработка платы терморегулятора. Скорость прогона приходится изменить с помощью замены ведущего двигателя, либо добавлением схемы генератора 220 в с меньшей частотой, либо прогонять плату несколько раз ...
    • Я за неделю 5 раз переделываю платку (а бывает и пару раз за день), для себя делаю всякую фигню. Не хочу я ждать месяц) вторую сторону фоторезистом норм) бумагой сложно) вот я ей делал 0.2 мм для ПЛИС. Можно и дома Металлизация делает тоже за час, медным купоросом и электролитом аккумуляторным. Но, я бросил лут, и собрал себе за 7000р станочек Вот на нем делал   Собрал, даже работает) КЗ вроде бы нет) Выходит от 4500 без ШВП до 7000 р с ШВП)  Плюс можно взять лазер за 3к 10Вт для резки дорожек по краске или самоклейке бумаге, если шум от фрезы напрягает) Я вот жду, уже до Краснодара доехал)) На сверловку не смотрите пока)) Это я накосячил) Первый раз делал) Координаты сбивал, плюс стол думал не над центровать) А сверло под углом стало) Это все решаемо)
    • А это где? В настройках принтера такого, кажись, нет... По крайней мере на своем не видел.
    • Короче с парафином все ясно По поводу КР544УД2А и ОРА134 обоих вставлял в предварительный усилитель Натали, розницы на слух не заметил. Наш то не плох однако

  • Мультиметр ANENG 618C

  • Similar Content

    • By eyuw
      Б/у контролеры холодильной установки: 1) Eliwell 974LX  на atmega16A-PU , 3 реле - характеристики на фото.Цена 15 бел.руб. 2) Eliwell IDPlus974  на atmega32A-PU, 3 реле - характеристики на фото.Цена 18 бел.руб. Корпуса без передней панели закрывающей цифровой индикатор, без датчиков температуры! г.Толочин, Витебская обл. Отправка по Беларуси наложенным платежом. Покупатель также оплачивает почтовые расходы. 


    • By АртемК
      Уже весь интернет прошерстить, помогите найти, или где он приставует, чтоб его достать нужен очень срочно, или может у кого то есть куплю!

    • By Эдик Ибрагимов
      Использовать микроконтроллер семейства 8951
       
    • By Илья1964
      Нужен специалист, ориентирующийся в MotionLab3 для настройки серводрайвера EVEREST XCR ETHERCAT SERVO DRIVE (EVE-XCR-E) от компании INGENIA для привода отечественного BLDC (0,7 кВт). Энкодер магнитный от компании RLS. Мануал с описанием MotionLab3 можно скачать здесь https://doc.ingeniamc.com/mot3/documentation/motionlab3-user-manual, сам пакет здесь https://doc.ingeniamc.com/mot3/downloads  .  BLDC сидит на оси  линейного перемещения и должен вращаться влево-вправо. Никаких особых хитростей в движении мотора нет.
    • By Klumjuk
      Добрый день! Никак не могу найти резистор R97 на плате бумбокса. Можете определить на фото, либо как-нибудь объяснить мне, где он...
      Вот фотка основной платы,и платы зарядки.
      (На основной плате обозначен контролер заряда,если что)


×
×
  • Create New...