manipulation registre arduino DUE

Si tu veux écrire simultanément sur 4 broches de type PBx, c'est très simple:

Dans le setup():

1/ Tu actives PIOB avec PMC : PMC->PMC_PCER0 |= PMC_PCER0_PID12;

2/ Tu valides le fait que les broches numéros x0, x1, x2 et x3 sont commandées par le GPIO:

PIOB->PIO_PER |= PIO_PER_Px0 | PIO_PER_Px1 | ....

3/ Tu déclares que toutes les broches qui n'ont pas pour numéros x0, ..... ne doivent pas être affectées par une écriture dans PIO_ODSR : PIOB->PIO_OWDR = PIO_OWDR_Py | ....

4/ Tu déclares que les broches x0, .... doivent être affectées par une écriture dans PIO_ODSR:
PIOB->PIO_OWER = PIO_OWER_Px0 | ....

Dans la loop():

Tu écris sur les broches x0,... avec PIOB->PIO_ODSR en plaçant un 0 ou un 1 sur les 4 broches sélectionnées, ailleurs c'est indifférent.

Un exemple de ce qui précède avec 2 broches activées:

const uint32_t PinSelection = PIO_ODSR_P13 | PIO_ODSR_P27;

void setup() {

  PMC->PMC_PCER0 |= PMC_PCER0_PID12;  // PIOB power ON

  PIOB->PIO_PER |= PinSelection;

  PIOB->PIO_OER = PinSelection; 

  PIOB->PIO_OWDR = ~PinSelection;
                 
  PIOB->PIO_OWER = PinSelection;

}

void loop() {

  PIOB->PIO_ODSR = PinSelection;
  delay(1000);

  PIOB->PIO_ODSR = ~PinSelection;
  delay(1000);

}