Как рассчитать приблизительные циклы в секунду от импульсного контакта на Arduino MKR Zero?

frequency mkr1000

Соответствующие технические характеристики MKR Zero: 32,768 кГц (RTC*), 48 МГц

*Часы реального времени

Мне интересно, как я могу приблизительно рассчитать количество циклов в секунду на основе операций.

Я запускаю следующий (чрезвычайно упрощенный) код:

int pin3 = 3;
void setup() {
  //устанавливаем цифровой вывод pin3 как выход

  pinMode(pin3,OUTPUT);
}

void loop(){
  digitalWrite(pin3,HIGH);//устанавливаем вывод pin3 на +5В
  delay(100);//ждём 100мс
  digitalWrite(pin3,LOW);//устанавливаем вывод pin3 на 0В
  delay(100);//ждём 100мс
}

Теперь мне интересно, сколько циклов в секунду (приблизительно) это может составлять.

Уравнение?

Какое уравнение поможет это рассчитать?

Не коды операций процессора

Можно ли это вообще приблизительно оценить? Я понимаю, что это будет сложно, потому что эти строки кода не соответствуют фактическим кодам операций и не разбиваются на конкретные циклы процессора или что-то еще.

Это будет что-то вроде:

48,000,000 (48MHz) / 200 (millisecond pause) = 240KHz?

Или я бы использовал тактовую частоту реального времени?

32768 / 200 = @163Hz

Или что-то совсем другое? Я пытаюсь лучше понять, как создать очень простой генератор частоты, и знаю, что в зависимости от скорости чипа код будет меняться.

, 👍0

Обсуждение

Знаете ли вы библиотеку для внутреннего RTC Arduino MKR Zero? https://www.arduino.cc/en/Reference/RTC Вы можете увеличить счетчик в цикле и измерить его в реальном времени. Например, в течение часа, тогда вы можете рассчитать фактическое количество циклов в секунду. Это может быть 4,999 Гц в секунду. Вы также можете использовать миллис, чтобы установить выходной сигнал точно на определенное количество циклов в секунду. Возможно, даже можно использовать функцию тона., @Jot


2 ответа


Лучший ответ:

1

Неясно, что именно вы пытаетесь сделать, однако частота, генерируемая кодом, составит ~5 Гц, что соответствует периоду 200 мс

,

Спасибо, какое уравнение вы применили, чтобы прийти к этому ответу? О, (шлепок по лбу) он генерирует импульс каждые 200 мс, поэтому 1000 мс (1 с) / 200 мс = 5 Гц. Так что на самом деле это будет ~ 5 Гц (не кГц), верно? Спасибо за ответ. Если вы измените его на Гц, я отмечу это как ответ. Вы помогли мне добраться до нужной точки. Я думал о другом. Спасибо., @raddevus


1

Зависимость от тактовой частоты скрыта в реализации функции задержки(). Он работает с «читабельными» миллисекундами.

Герцы — это количество повторений за одну секунду. Одна секунда имеет 1000 мс. Таким образом, при задержке 200 мс в секунду происходит 5 повторений. Тогда частота равна 5 Гц.

,