Velocità del loop Mega 2560

La curiosità è nata dal fatto che avendo una Mega con 70 pin utilizzabili, mi chiedevo se era davvero utile convertire tutti i cicli for di digital.write(x,0) e digital.read in PORTxx |= _BV(PORTxx); e PINxx

e direi proprio di si!! il tempo si dimezza quasi, un programma molto lungo, va ottimizzato al massimo, sapevo che era + veloce la manipolazione delle porte, ma non sapevo quanto :slight_smile:

unsigned long preMillis=0;
unsigned long counter=0;

void setup(){
Serial.begin(9600);  
}

void loop (){
//----------------------------------
  /* accendi il led */ //44
  //PORTL |= _BV(PORTL5);
  /* spegni il led */ //44         questo lo fa 76.123/sec
  //PORTL &= ~_BV(PORTL5);
//----------------------------------

//----------------------------------
  digitalWrite(44,1);
  digitalWrite(44,0);//            questo lo fa 38.324/sec
//----------------------------------

 counter++;
 
   if(millis() - preMillis >= 1000) 
  {   
       preMillis = millis();       
       Serial.println((String)counter);
       counter=0;
  }
}