Jump to content

Yurkin2015

Members
  • Content Count

    1969
  • Joined

  • Last visited

  • Days Won

    1

Yurkin2015 last won the day on August 31 2020

Yurkin2015 had the most liked content!

Community Reputation

620 Очень хороший

5 Followers

About Yurkin2015

  • Rank
    Живу я тут

Информация

  • Пол
    Мужчина

Электроника

  • Стаж в электронике
    Более 20 лет
  • Сфера радиоэлектроники
    Микроконтроллеры

Recent Profile Visitors

  1. Если использовать speed внутри функции start(), то переменная speed будет плавно увеличиваться. Если использовать снаружи speed = start(speed), то было speed = 0, затем пока start() считает, speed будет всё ноль-ноль-ноль, наконец после выполнения start() переменная скачком изменится до speed = 401, никакой плавности не останется.
  2. Вот на чёрной картинке: куда фигурные скобки подевались после первого ифа? Вот этот "return button_short" будет выполняться всегда и будет всегда выходить из этого места и остальное проскакивать.
  3. Тут в дискуссии участвует два варианта написания функции start(). Я имел в виду первый вариант. В Вашем варианте всё нормально - будет выполняться в цикле то, что в фигурных скобках. Ну так и используйте прямо эту переменную speed в функции start(), не надо никаких "int s" добавлять в функцию.
  4. Для принятия возвращаемого значения надо это значение куда-то положить, например вот так: speed = start(speed); т.е. функция отработала, и результат присвоили обратно в переменную speed. В тексте объявлен цикл for() и в этом цикле будет выполняться одна операция return s, следующая строчка кода, потому что нету точки с запятой после for().
  5. Функция выполняется так, как написано у автора: принять значение переменной, затем 401 раз его вернуть, увеличивая на 1 после каждого раза. Но вернуть получится только один раз, естественно, в первом же круге цикла for(). Причём возвращаемое значение никто не принимает, оно так и остаётся умирать внутри функции start().
  6. Скобки тут не при чём, и без скобок сначала проверяется == 0, а потом уже делается логическое "И", так как приоритет == выше, чем &&. А проходит мимо, потому что после проверки if() в скобках { } ничего нету: в программе после компиляции вместо start(speed) находится пустое место, компилятор выкинул бесполезную часть кода. Я думаю, что и проверку он выкинул тоже, нет смысла проверять, если от результата проверки ничего не зависит.
  7. @Alik3796 Очевидно, что если то это среднее напряжение. Мгновенное входное напряжение пульсирует от 10В до 20В, например. Поэтому и выходное напряжение проваливается в моменты, когда входное ниже 15В. Вот и имеем среднее выходное 10В, хотя микросхема и вполне нормально работает!
  8. Ну, вот, всё и прояснилось: подтяжка таки есть! При наличии полной схемы понятно, как 2.6В проникают сквозь диод. Этот R1 и создаёт подтяжку к плюсу, и это как раз открывает диод для пропускания постоянного напряжения. P.S. Суровые итальянские разработчики погорячились, конечно, с резистором R3! Нахрена такой ток запускать в транзистор? Я бы увеличил резистор раз в 10, или в 100.
  9. Это не нелиненйность АЦП. Это пропуски в измерениях из-за синхронизации входной синусоиды и выборки точек измерения. Просто каким-то образом на определённые участки синусоиды никогда не попадали моменты измерения, поэтому и получилсь разрывы на графике. Например, система сама генерирует синусоиду и сама же её измеряет. В некоторые, одни и те же, моменты времени, например, процессор подгружает данные в выходной буфер синусоиды генератора, и именно в эти моменты процессор занят, и приостанавливается "произвольность" выборок АЦП: возникают пропуски в измерениях в одних и тех же местах синусоиды.
  10. А что это за график такой? Что там по осям находится?
  11. В функции start(int s) будет увеличиваться новая переменная s, но после окончания увеличения эта переменная s так и останется внутри функции неиспользованная. Более того, при компиляции: оптимизатор увидит такое неиспользованное дело и просто выкинет этот кусок кода из программы.
  12. Таймер будет работать, нет проблем. Вам бы после изучения оператора цикла for(;;) неплохо бы прочитать про оператор while() Тут другая проблема в Вашем коде. Например, если в самом начале speed = 0; // присвоили 0 start(speed); speed = ? // по-прежнему speed равна 0 потому, что ваши функции не изменяют значения переменной speed.
  13. Может, особенно когда его передвинули в цепь Reset'а Для начала - неплохо. Я бы поставил конденсаторы С1, С2 сверху, было бы удобнее тянуть проводники. Дорожки от резисторов R4 R6 к кнопкам поменял бы сторонами справа-налево, тогда не пришлось бы протягивать между ногами SW1. Транзистор VT1 повернул бы на 90 градусов по часовой.
  14. @IMXO А зачем так часто опрашивать кнопки, что аж тонкая структура дребезга видна?!? Опрашивайте в 10 раз реже, и всё будет пучком: либо нажата кнопка либо нет, никакого дребезга. Заодно и жизнь процессора облегчится
×
×
  • Create New...