copy data from input pin to output pin - example ws8212 data stream fast way to copy read/write register values void loop() { int v1 = 0; portDISABLE_INTERRUPTS(); for(;;) { auto v1 = (GPIO_REG_READ(GPIO_IN_REG) & BIT(25)); if (v1) { GPIO_REG_WRITE(GPIO_OUT_W1TS_REG, BIT(27)); //cnt3 = 0; } else { GPIO_REG_WRITE(GPIO_OUT_W1TC_REG, BIT(27)); //cnt3 ++; } cnt3 ++; if (cnt3 % 1000000 == 0) { //Serial.println("loop"); portENABLE_INTERRUPTS(); vTaskDelay(10); portDISABLE_INTERRUPTS(); } } } speed is like 3.5 times faster * 07:31:40.620 -> register based read : 53 * 07:31:40.620 -> digitalRead based read : 172 auto t1 = micros(); int v1; for (int i=0;i<1000;i++) v1 = (GPIO_REG_READ(GPIO_IN_REG) & BIT(25)); auto t2 = micros(); auto t3 = micros(); for (int i=0;i<1000;i++) v1 = digitalRead(25); auto t4 = micros(); Serial.printf("register based read : %d\n",t2-t1); Serial.printf("digitalRead based read : %d\n",t4-t3);