Условные 3мА и 3.2мА потребления. Между ними пропасть!
Я перфекционист, приятно познакомиться😄
костыльно … конечно же я прочитал статью до конца .
я то думал в ардуино есть старт и стоп счетчика/таймера по уровню ноги . а оказалось что все не так двояко и вообще нет такой возможности
можете попробовать изложить задачу, где без этого ну никак?
Ответ:
В чём проблема? Как бы…может для кого и секрет, но именно человек посредством написания программы управляет микроконтроллером. МК не может знать что человеку нужно. Он всегда говорит: " Нас рать! Как скажешь так и будет!"
но ногу номер N приходит импульс шириной X , во время пребывания на ноге N высокого уровня (не фронта и не спада а именно высокого уровня) . внутренний счетчик начинает тактироватся от внутреннего тактового генератора микроконтроллера .
по окончанию высокогого уровня на ноге номер N и наличнию на ноге N низкого уровня .
внутренний счетчик прекращает счет . и из регистров счетчика извекается количество посчитанных импульсов.
Это минуты или пикосекунды? Было бы интересно узнать.
Мы не претендуем на суперсекретную военную разработку, так, любопытство. Так что нам сказать можно. По секрету.
То, что счетчик считает все время - никак не мешает вашей задаче.
Это делается просто
Сначала настраиваете захват счетчика по высокому фронту.
В момент прихода фронта значение счетчика копируется в регистр ICRx и вызывается прерывание. В прерывании запоминаете ICRx в переменную, скажем Т1 и настраиваете захват по спаду. В момент спада опять вызывается прерывание , разность значений ICRx и Т1 дает нужное вам число импульсов за время высокого уровня на входе
Импульс без фронта - оригинально-с.
А если нужна точность при длинном импульсе, то считаются и переполнения.
Так вроде, ТС давно уже всем доказал, что он не читатель.
В ардуине эта задача решается одной командой. pulseIn() | Аппаратная платформа Arduino
Не, ну не по-пацански!
Что, правда что-ли?
Ну не предделитель, а регистр режима работы, ладно)
сосем забыл уточнить.
ширина измеряемого импульса 1 мкс +/- 0,5 мкс (половина импульса)
почитал матчасть ардуины.
а если одним пином ловить фронт - старт счетчика CS12. CS11, CS 10 записать 1
другим пином ловить спад - стоп счетчика CS12. CS11, CS 10 записать 0
затем прочитать регистры счетчика.
так вот вопрос . какую частоту будет считать внутренний железный счетчик ардуино нано ? сколько мегагерцев
Странный вопрос. Частоту таймера задаете вы. Сколько зададите - столько и будет (кратное к частоте ядра).
Другой вопрос, что для импульса в 1 мкс задавать что-либо менее 16 МГц смысла нет.
“пином ловить фронт” - это через прерывание? - точность будет не особо, но попробовать можно
1 мкс нереально поймать.
На 16 МГц 1мкс это всего 16 тактов МК.
Даже если использовать режим захвата и ничего более не выполнять, то:
- Ловим флаг захвата(в цикле)
- Запоминаем ICR
- Меняем захват со спада(фронта) на фронт(спад)
- Ловим 2й флаг захвата.
Это минимум 8-15 тактов навскидку. Безо всяких прерываний и прочего. Чего там считать? Таймер насчитает максимум 16 тактов, а если второй захват не успеем перенастроить, тогда вообще всё пролетит мимо.
Тут либо более жирный МК, либо на рассыпухе делать. По сути тот же частотомер.
Конечно есть tiny26, у него таймер можно на 64 МГц запустить, но это уже извращение.
не надо в цикле, по захвату есть прерывание
Но то что перестроить таймер с фронта на спад скорее всего за 1 мкс не успеть - тут согласен.
Пробовать надо.
Сколько тактов проходит между событием и началом обработки прерывания? Напомнить?