Jump to content

Recommended Posts

05.07.2020 в 15:02, my504 сказал:

но зачем весь этот вычурный перфоманс?

перформанс устраивали вы, а я просто ответил на вопрос. Откуда взялся такой ИНТЕРЕСНЫЙ вопрос мне не важно.


Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites
7 минут назад, Дмитрий Мамедиев сказал:

Не понял какие 40?

рукалицо...


Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Share this post


Link to post
Share on other sites

Как сделать ИП с ультрашироким диапазоном?

Ключевыми особенностями высоковольтных SiC MOSFET Wolfspeed являются малое сопротивление канала в открытом состоянии и минимальное значение паразитных емкостей, что позволяет максимально снизить статические и динамические потери, и, соответственно, увеличить рабочую частоту преобразователей.

Подробнее

Вебинар «Практика разработки IoT-устройств с BlueNRG-LP – волшебной палочкой разработчика» (23/03/2021)

Приглашаем 23 февраля на бесплатный практический вебинар по BlueNRG-LP - новой SoC STMicroelectronics. Будут рассмотрены новые возможности создания прототипов IoT-устройств на BlueNRG-LP с использованием экосистемы и отладочных средств ST, а также практические примеры по использованию BlueNRG-GUI v.4.0.0, настройке и работе в сети BLE-MESH, пример управления умным домом с помощью BlueNRG-LP и другие.

Подробнее

6 часов назад, yaroslav.s сказал:

while(OCR1A=0) OCR1A=OCR1A-5

Работать не будет, поскольку присваивание OCR1A нулевого значения не позволит циклу выполниться ни разу. 

Я вообще фигею: прерывание по таймеру - это уже аналог цикла с задержкой! Какие там еще задержки и циклы внутри обработчика?


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

Материалы вебинара Практическое использование TrustZone в STM32L5

Материалы вебинара, посвященного экосистеме безопасности и возможностях, которые дает новая технология TrustZone в МК STM32L5, содержат две подробные практические работы: создание простого приложения с изоляцией в TrustZone, и пример отладки и тестирования TFM-SBSFU. Программа рассчитана на технических специалистов и тех, кто уже знаком с основами защиты ПО в STM32.

Подробнее

это логический оператор


Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Share this post


Link to post
Share on other sites
Guest Гость

Почитайте про операции https://prog-cpp.ru/c-operation/

Share this post


Link to post
Share on other sites
59 минут назад, Дмитрий Вас сказал:

а если бы я

логические операторы  не могут ничего присваивать.

==   <=  >=  >   <   ||  &&

они возвращают логическое значение (true/false)  для условий.

Edited by my504

Share this post


Link to post
Share on other sites

@my504 только что об этом прочитал, ахах всегда так, задаю вопрос и тут же нахожу ответ. а вот это

59 минут назад, Дмитрий Вас сказал:

а если бы я написал так OCR1A<200 то это присваение значения? какое тогда значение? все что меньше 200?

так и не нашел разьяснения

Share this post


Link to post
Share on other sites

Выражение вида 

OCR1A<200;

вызовет ошибку или будет проигнорировано с варнингом.

Выражение вида

OCR1A = OCR1A<200;

присвоит результат логической операции переменной OCR1A.

Edited by my504

Share this post


Link to post
Share on other sites
12 минут назад, Дмитрий Вас сказал:

так и не нашел разьяснения

Объясняю: язык Си позволяет присваивать значения переменным в самых неожиданных местах, и для него все это полностью корректно. Например, можно (можно - не значит нужно) написать так:

int a,aa,aaa;

aaa = (a = 2) * (aa=12) + (aaa = 32);

и это будет правиьно воспринято компилятором: он присвоит начальные значения переменным и вычислит результат выражения над ними одновременно. Поэтому вполне корректной будет запись цикла, как у вас:

while(aaa = 24){
  // если здесь aaa никогда не обнуляется, цикл будет вечным
}

while(aaa = 0){
  // а этот цикл никогда ни одного раза не отработает, зато присвоит aaa нулевое значение
}

Условие продолжения любого цикла - ненулевое значение выражения, а само выражение может быть любым, с любыми знаками: оно будет вычислено, и, если значение будет ненулевым - цикл продолжит работу, в противном случае остановится.

Так понятно? Это азы Си, прописанные в любой книжке по языку.

Вы совершили классическую ошибку начинающего, перепутав оператор = с оператором ==

Оба эти оператора вычисляют значение, но второй не изменяет содержимое переменной, стоящей слева от него, а первый - изменяет.

Edited by ARV

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites
1 минуту назад, ARV сказал:

Так понятно?

я это и так понимал, но не пойму почему 

 

12 минут назад, my504 сказал:

OCR1A<200;

вызовет ошибку или будет проигнорировано с варнингом.

когда 

 

цикд.jpg

Share this post


Link to post
Share on other sites
Только что, Дмитрий Вас сказал:

когда 

А где в вашем коде есть обсуждаемое выражение?

Условие под if не изменяет тестируемую переменную.

Edited by my504

Share this post


Link to post
Share on other sites

Выражение OCR1A < 200 абсолютно корректно и ничего не вызовет. Если будет написано так:

OCR1A < 200;

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

Edited by ARV

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

стоп

5 минут назад, my504 сказал:

Условие под if не изменяет тестируемую переменную.

if(button==1)
    {
    if(f_button==0)
        {
        f_button=1;
        while(OCR1A<=200)OCR1A=OCR1A+5//ка не меняет разве эта сторка не увеличивает OCR1A???
      if(f_button==1)
          {
          f_button=0;
          while(OCR1A=0) OCR1A=OCR1A-5
          }
    }

коментарий в коде

Edited by Дмитрий Вас

Share this post


Link to post
Share on other sites
5 минут назад, Дмитрий Вас сказал:

комментарий в коде

while(OCR1A<=200)   OCR1A=OCR1A+5;

OCR1A<=200 ничего не меняет, а возвращает логическое значение для while. Значение меняется в выражении OCR1A=OCR1A+5;

Может вам будет понятнее писать в две строки или вообще с фигурными скобками?

while(OCR1A<=200)   {OCR1A=OCR1A+5;}

Share this post


Link to post
Share on other sites

Нет, такая запись вызовет ошибку из за отсутствия точки с запятой после выражения.

ЗЫ. Если оставить в покое точку с запятой, данное выражение означает, что  выражение OCR1A=OCR1A-5 будет выполняться пока OCR1A равно нулю. Проверяется условие -> принимается решение о выполнении выражения.

Edited by my504

Share this post


Link to post
Share on other sites
Только что, my504 сказал:

точки с запятой

эт ясное дело... 

while(OCR1A) {OCR1A=OCR1A-5;}// получается так можно записать?

 

цикл.jpg

Например, while (i) – более краткий вариант while (i != 0):

Share this post


Link to post
Share on other sites

Стесняюсь спросить - а мы про Си сейчас говорим?

Что это за let? Или у вас такой тип определен?

1 минуту назад, Дмитрий Вас сказал:

while(OCR1A) {OCR1A=OCR1A-5;}// получается так можно записать?

 

Естественно можно. Но цикл может стать бесконечным из за некратности начального значения пятерке.

Edited by my504

Share this post


Link to post
Share on other sites

@ARV  в таком случае если я напишу такой код в ISR?

if(button==1) { if(f_button==0) { f_button=1; while(OCR1A<=200)OCR1A=OCR1A+5//ка не меняет разве эта сторка не увеличивает OCR1A??? if(f_button==1) { f_button=0; while(OCR1A=0) OCR1A=OCR1A-5 } }

if(button==1)
    {
    if(f_button==0)
        {
        f_button=1;
        while(OCR1A<200) 
        {OCR1A=OCR1A+5;}
      if(f_button==1)
          {
          f_button=0;
          while(OCR1A) 
          {OCR1A=OCR1A-5;}
          }
    }

 

скрин.jpg

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

Что это за let?

это скрин из инета как пример. я ведь учусь только

14 минут назад, my504 сказал:

OCR1A<=200 ничего не меняет, а возвращает логическое значение для while

вот этому обьяснения я не находил, выходит логическое <= ВОЗВРАЩАЕТ значение? а  <   задает? 

Share this post


Link to post
Share on other sites
Только что, Дмитрий Вас сказал:

это скрин из инета как пример. я ведь учусь только

let будет иметь смысл только если ранее есть:

typedef   char   let;

Share this post


Link to post
Share on other sites
10 минут назад, Дмитрий Вас сказал:
25 минут назад, my504 сказал:

OCR1A<=200 ничего не меняет, а возвращает логическое значение для while

вот этому обьяснения я не находил, выходит логическое <= ВОЗВРАЩАЕТ значение? а  <   задает? 

я правильно понял?

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

let будет иметь смысл

до этого мне далеко еще

Share this post


Link to post
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...

  • Сообщения

  • Similar Content

    • Guest Moonlight
      By Guest Moonlight
      Нужна помощь в выборе перспективной дипломной работы ( не просто тяп ляп лишь бы выпустили). Хотелось бы сконструировать беспилотник или просто разработать небольшое устройство (развести и напечатать плату, закинуть прошивку на микроконтроллер). И если бы ещё это все было взаимосвязано с авиацией, то было бы супер, так как авиационный вуз оканчиваю. Из того что умею, это писать на Си, плюс минус хорошо ориентируюсь в дисциплинах связанных с антеннами и радиолокаторами, был небольшой опыт конструирования. Хочется сделать проект, который будет не стыдно показать на собеседовании)). Буду очень благодарен, если поможете определиться с темой!)
    • By Evgenii53
      Здравствуйте.
      Нужна прошивка на микроконтроллер 12F629/675.
      Схема скачана в интернете и предназначена для освещения курятника лампами накаливания 220 вольт с имитацией «восхода и заката».
       Временные интервалы «восхода и заката» выбраны 6 утра и 21 час вечера.
      Длительность «восхода и заката» по 20 минут (лампы медленно загораются или гаснут под управлением симистора).
      Если в дневное время срабатывает датчик освещённости (фоторезистор HER –  GL5528), лампы не включаются и включаются, когда он разрешит, в ночное время фоторезистор бездействует. Фоторезистор можно (или нужно?) переключить на 5 ногу.
      Нужно установить программное ограничение на срабатывание датчика освещения от кратковременного изменения освещённости (например падение света фар движущегося автомобиля на датчик и т.д). Фоторезистор устанавливается на кабеле длинной около 2 метра.
      Логика работы кнопки: длительное нажатие (больше 3 секунд), устанавливает внутренние часы на полдень.  Время синхронизируется от сети 50Гц.
      Светодиод отображает наличие питания сети. Если сеть есть, он всё время светится и раз в 2 секунды кратко моргает. Если сети нет и устройство питается от батарей, светодиод погашен и раз в 2 секунды вспыхивает. При установке времени полдня светодиод несколько раз моргает.
      Схема рабочая, я проверял в работе (без фоторезистора) на тестовой прошивке, работает нормально.
      По оплате, думаю договоримся.

    • By HHHIII
      Сломался пульт управления беговой дорожки. Теперь хочу с помощью Ардуино управлять мотором, но не понятно как происходит управление. к панели идёт 4 контакта: чёрный красный белый зелёный. на плате 5 контактов, но 1 не используется. Как происходит управление скоростью?

    • By DANY Lee
      Здравствуйте ! помогите пожалуйста в написании прошивки для ATTINY2313a _ дело в Том что есть семисегментный, 6 разрядный индикатор _ Хочу сделать себе дублирующий табло для весов _ о семисегментных индикаторах есть какие то понятия но на практике не когда не дедал дуб. табло_  проблема возникает при написании кода _ веси передает данные через порт RS232  ................. что делать ? буду рад к любому совету ,,, спасибо заранее ..... 
    • Guest Юрий
      By Guest Юрий
      Добрый день. Возможно ли читать с gpio данные с частотой 198 МГц при частоте шины AHB 240 МГц посредством DMA burst? Мне кажется нельзя, но хотелось бы знать, что это не сможет работать как конвейер. В App note к stm32f7 написано, что передача по шине с dma осуществляется за 2 цикла шины. Но я не смог найти подобной информации для stm32h7. 
      И правильно я понимаю,  что для чтения порта через ядро,  один такт тратится на защелкивание во входном регистре порта, а второй такт уходит на запись в регистр общего назначения? 
×
×
  • Create New...