Таймеры

Вовуся
Offline
Зарегистрирован: 11.04.2014

Здравствуйте! Читал-читал, но не совсем понял.

Необходимо выполнять функцию tone(2, 36000, 1) с периодичностью 0,4 мкс. Реально ли это сделать с помощью таймеров? Подскажите код, пожалуйста.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

При частоте 36кГц, период равне 27,8 мкс.

Как можно сигнал с таким периодом запускать с периодичность 0,4 мкс? Там же ниодного периода не поместится!

Или Вам надо типа 1мс сигнал, потом 4мкс пауза, потом снова 1мс сигнал и т.д.? Т.е. Вам нужно организаовать такую последовательность

Бескончено повторять
      36 раз повторить
            HIGH - 13,9мкс
            LOW - 13,9мкс
      пауза (LOW) 0,4 мкс

Правильно?

Если так, то точно - не получится. Минимальная единица времени - 1 такт, т.е. 1/16 микросекунды (0,0625 мкс). Можно что-то сделать, но все временые интервалы должны быть кратны этой величине. Например, 0,4 мкс точно не задашь. Ближайшее приближение - 6 тактов - 0,375 мкс. 13,9 мкс тоже точно не не задашь. Ближайшее приближение - 222 такта - 13,875 мкс.

Если такая точность устраивает, то можно сделать, почему нет?

Вовуся
Offline
Зарегистрирован: 11.04.2014

ОЙ, извиняюсь, периодичность 0.4 мс

большая точность не нужна. Это для облучения ИК приемника типа tsop1836 и ему подобных

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Вовуся, в 0.4 мс не укладывается целое количество периодов 36 кГц.

Объясните подробно (или нарисуйте), что именно Вы хотите.

Logik
Offline
Зарегистрирован: 05.08.2014

То мелочи что не укладывается. А надо ему вестимо что. Сигнал ИК для TSOP-а. Там особой точности не требуется, и ошибки фазы не проблема. В общем таймер настроить на 36КГц, и включать его согласно требуемой модуляции. После выключения не забывать гасить светодиод. На выход таймера - транзисторный ключь. Мой прогноз - ТС проект не осилит, если готовую либу не наковыряет.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017
digitalWrite(13, (millis() >> 2) & 1); //  4 millis

 

Вовуся
Offline
Зарегистрирован: 11.04.2014

В общем, проще наверное, на микросхеме спаять генератор.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Вовуся пишет:
В общем, проще наверное, на микросхеме спаять генератор.

"Проще" оно у всех индивидуально . Если это не ваше, то делать вам так не "проще". Опять же микросхемы разные бывают. Так у аналоговых разброс еще больше. Резисторы конденсаторы это + - 10%

Вовуся
Offline
Зарегистрирован: 11.04.2014

Клапауций 112 пишет:

digitalWrite(13, (millis() >> 2) & 1); //  4 millis

 


Можете пояснить?

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

Вовуся пишет:
Клапауций 112 пишет:

digitalWrite(13, (millis() >> 2) & 1); //  4 millis

Можете пояснить?

if ((micros() >> 9) & 1) {tone(2, 36000, 1);} // 512 micros