Задержка не целого числа delayMicroseconds();
- Войдите на сайт для отправки комментариев
Пнд, 20/11/2017 - 12:46
Собственно...
Нужно что бы задержка была допустим 2,7 микросекунды.
Возможно ли это?
С Уважением,
Собственно...
Нужно что бы задержка была допустим 2,7 микросекунды.
Возможно ли это?
С Уважением,
нет. да и минимум 3 мкс при кварце в 16 МГц
43 команды "nop" на ассемблере = 2,6875µS :)
86 байт всего. :)
Возможно ли это?
Конечно. 100500 способов.
Про 43 нопа Вам уже сказали (кстати, не обязательно прямо в ассемблере, есть макрос).
Те же нопы с циклом, чтобы память не жрали - нет проблем.
Таймер на переполнение, а в программе цикл пока таймер не выставит флаг.
Всё от задачи зависит, делайте как Вам удобно.
Все...
Нашел куда копать, спасибо!
С Уважением,
Просто
сколько надо раз.
С циклом всё просто - этот же макрос в цикле, но там надо считать накладные расходы цикла в тактах. Вам сильно надо? Это с полчаса возни.
C циклом подсказать не смогу, но у меня лично есть мнение, что с ним задержка не будет столь точна и придется корректировать количество ноп-ов, чтобы учесть время выполнения команд присвоения, вычитания и сравнения с переходом. Хотя я, в этом вашем asm, разбираюсь не так хорошо, как остальные ))
Для проекта "Transistor Tester for Arduino" (http://arduino.ru/forum/proekty/transistor-tester-arduino) переделал функцию delayMicroseconds(), чтобы она была на 500 нс дольше: