#include <Arduino.h>
const int PINS[] = {2, 3, 4, 5, 6, 7, 8, 9};
const int NUM_PINS = 8;
void testGPIOSpeed() {
Serial.println("=== Тест скорости GPIO ===");
// Настройка пинов как выходов
for (int i = 0; i < NUM_PINS; i++) {
pinMode(PINS[i], OUTPUT);
}
unsigned long startTime = micros();
unsigned long cycles = 100000;
for (unsigned long i = 0; i < cycles; i++) {
for (int pin = 0; pin < NUM_PINS; pin++) {
digitalWrite(PINS[pin], HIGH);
}
for (int pin = 0; pin < NUM_PINS; pin++) {
digitalWrite(PINS[pin], LOW);
}
}
unsigned long endTime = micros();
unsigned long duration = endTime - startTime;
unsigned long totalToggles = cycles * NUM_PINS * 2;
Serial.println("=== РЕЗУЛЬТАТЫ ===");
Serial.print("Циклов: "); Serial.println(cycles);
Serial.print("Время: "); Serial.print(duration); Serial.println(" мкс");
Serial.print("Всего переключений: "); Serial.println(totalToggles);
Serial.print("Скорость: "); Serial.print(totalToggles / (duration / 1000000.0));
Serial.println(" переключений/сек");
Serial.print("Время одного переключения: ");
Serial.print((double)duration / totalToggles, 3); Serial.println(" мкс");
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("Starting GPIO Speed Test...");
testGPIOSpeed();
Serial.println("Тест завершен!");
}
void loop() {
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}