Короче элементарно когда запускаешь шаговик и через порт смотришь какую либо динамику, то на 9600 скорость на порядок ниже. При повышении скорости и щаговик ускоряется. А когда убираю вывод данных на плоттер, то щаговик работает на нормальной скорости. Это факт.
Комментарии: 40
Th0r
этот факт действителен для твоего кода
Dinar
Пфффф
Th0r
гляди https://i.imgur.com/Sz2fRZc.png
Byte
Это кривой код.
Dinar
Нет либ. Есть только степ =1 и степ = 0. И сериал принт Что может быть кривым в 5 строчках??
Byte
Да даже в пяти асмовских командах кривизна быть может ;) Юарт на прерываниях работает?
Anonim
парни, я извиняюсь за врыв в вашу дискуссию, но как новичок хочу спросить - здесь только такие вопросы и обсуждаются?
Th0r
разные обсуждаются
Dinar
Короче 5 строчек. Степ = 1; Делей (1); Степ = 0; Делей (1); Сериал.принтлн(степ); И при разных значениях сериал.бегин(скорость) меняется скорость шаговика. Это как и почему??
Byte
Сериал реализован там через задницу, как минимум.
Dinar
Это где именно? В ide? Или в атмеге в целом?
Byte
В ардуино. В атмеге всё нормально :)
Dinar
То есть в нормальной среде если код написать, и залить через программатор, то будет четко работать?
Wings
Прежде всего хотел 1060-3
Vasil
Не особо потанцевально (4+ гига надо), но это уже не тематика чата.
Wings
Для игры в доту, кс и пубг мне не особо и нужно столько)
Th0r
такой код не будет, у тебя слишком много данных отправляется по сериалу
Anonim
дело не в среде и не в программаторе, а в реализации алгоритмов
Byte
Если нормально написать код, а не так, как сейчас ;)
Dinar
Что тут не есть нормально? Я гуглил, инфы не нашел
Th0r
гляди, ты на каждый шаг отправляешь минимум байт данных (а то и два с переводом строки) байт данных на 9600 сколько времени занимает? вот и считай, у тебя Serial.write сперва выполняет асинхронно, пока буфер пустой, через несколько итерация буфер заполняется и он начинает блочить выполнение кода, пока в буфере не освободится место выше же я скинул описание
Dinar
И что с этим делать??
Th0r
не отправлять там много данных отправлять например каждые 1000 шагов, или мигать лампочкой или вообще ничего не отправлять
Dinar
То есть отправлять только по изменению, а не постоянно??
Byte
Именно.
Dinar
Вот наконец то сказали. А то рофлите на до мной, а чё делать не говорите, чёртовы партизаны
Th0r
ты сам как партизан - ничего не сказал, а мы должны догадаться
Dinar
Я же все сказал что знал
Th0r
нет, ты говорил "невозможно", "ардуина медленная на 20мгц" и тд.
Dinar
Я ещё много чего сказал помимо этого ) Спасибо в итоге за инфу. То есть так будет правильно Степ = 1; Делей (1); Степ = 0; Делей = 1; Если (переменная != Степ) { Сериал.принтлн(переменная); Переменная = степ; } ?
Th0r
непонятно чо за переменная и зачем ее сравнивать со степом, если до этого степ = 0
Anonim
Обработчики прерываний как используются?
Anonim
ch340 Скорость передачи больше 115200 Отсутствие кварца Чтоб передавалось корректно между двумя мк - нужен протокол с проверкой на ошибки
Anonim
В трехфазном драйвере ШД, что я раньше сюда скидывал фото, стоит DSP TMS320, в нем 12 каналов ШИМ, и куча таймеров. Предполагаю, что DSP там не просто так стоит.
Anonim
Есть ещё момент, мега не выполняет все инструкции за 1 такт.
Linxuil
А умножение и деление там реализовано уже на ассемблере?
Anonim
Хз, нет исходников.
Th0r
умножение есть, деления нет
Dinar
Ну это я понимаю. То есть нужно исключить ежетактный цикличный опрос, и использовать прерывания. И все эти сравнения миллис и микрос каждый такт тоже жрет ресурс