Как рассчитать приблизительные циклы в секунду от импульсного контакта на Arduino MKR Zero?
Соответствующие технические характеристики 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
Или что-то совсем другое? Я пытаюсь лучше понять, как создать очень простой генератор частоты, и знаю, что в зависимости от скорости чипа код будет меняться.
@raddevus, 👍0
Обсуждение2 ответа
Лучший ответ:
Неясно, что именно вы пытаетесь сделать, однако частота, генерируемая кодом, составит ~5 Гц, что соответствует периоду 200 мс
Спасибо, какое уравнение вы применили, чтобы прийти к этому ответу? О, (шлепок по лбу) он генерирует импульс каждые 200 мс, поэтому 1000 мс (1 с) / 200 мс = 5 Гц. Так что на самом деле это будет ~ 5 Гц (не кГц), верно? Спасибо за ответ. Если вы измените его на Гц, я отмечу это как ответ. Вы помогли мне добраться до нужной точки. Я думал о другом. Спасибо., @raddevus
Зависимость от тактовой частоты скрыта в реализации функции задержки(). Он работает с «читабельными» миллисекундами.
Герцы — это количество повторений за одну секунду. Одна секунда имеет 1000 мс. Таким образом, при задержке 200 мс в секунду происходит 5 повторений. Тогда частота равна 5 Гц.
- Установите частоту ШИМ на 25 кГц.
- Максимальная частота цифрового сигнала в Arduino Uno?
- Постоянный выход тактовой частоты Arduino
- Чтение частоты ввода в цифровых выводах
- Генерировать 1,7 МГц с PWM в Uno?
- Можно ли сгенерировать точный тактовый импульс 15 кГц с помощью ардуино?
- Использование SD-адаптера 5 В в системе 3,3 В
- Изменение ШИМ на Arduino Mega, контакты 9 и 10 на 20–25 кГц
Знаете ли вы библиотеку для внутреннего RTC Arduino MKR Zero? https://www.arduino.cc/en/Reference/RTC Вы можете увеличить счетчик в цикле и измерить его в реальном времени. Например, в течение часа, тогда вы можете рассчитать фактическое количество циклов в секунду. Это может быть 4,999 Гц в секунду. Вы также можете использовать миллис, чтобы установить выходной сигнал точно на определенное количество циклов в секунду. Возможно, даже можно использовать функцию тона., @Jot