ecco cosa intendo quando vanno tutti a 1 quando imposto solo un pin in INPUT in questo caso solo il pin 10
sketch di test
void setup() {
delay(2000);
Serial.begin(9600);
//facciamo una bella lettura di tutti pin allo stato iniziale di reset con digitalread
leggi_pin();
//leggiamo anche i registri PIO A/B/C/D
leggi_reg();
//ora mettiamo il pin 10 in INPUT, niente è collegato sui pin e nessuno shield è installato
pinMode(10, INPUT);
Serial.println("pinMode(10, INPUT);");
//andiamo a rileggere i pin con digital read
leggi_pin();
//andiamo a rileggere anche i registri PIO A/B/C/D
leggi_reg();
}
void loop() {}
void leggi_reg(){
Serial.println();
Serial.println("lettura registri PIO A B C D");
Serial.print(" PIOA_ODSR Output Data Status Register -BIN = "); Serial.print(PIOA->PIO_ODSR,BIN); Serial.print(" ; -HEX = "); Serial.println(PIOA->PIO_ODSR,HEX);
Serial.print(" PIOB_ODSR Output Data Status Register -BIN = "); Serial.print(PIOB->PIO_ODSR,BIN); Serial.print(" ; -HEX = "); Serial.println(PIOB->PIO_ODSR,HEX);
Serial.print(" PIOC_ODSR Output Data Status Register -BIN = "); Serial.print(PIOC->PIO_ODSR,BIN); Serial.print(" ; -HEX = "); Serial.println(PIOC->PIO_ODSR,HEX);
Serial.print(" PIOD_ODSR Output Data Status Register -BIN = "); Serial.print(PIOD->PIO_ODSR,BIN); Serial.print(" ; -HEX = "); Serial.println(PIOD->PIO_ODSR,HEX);
Serial.println();
Serial.print(" PIOA_PDSR Pin Data Status Register -BIN = "); Serial.print(PIOA->PIO_PDSR,BIN); Serial.print(" ; -HEX = "); Serial.println(PIOA->PIO_PDSR,HEX);
Serial.print(" PIOB_PDSR Pin Data Status Register -BIN = "); Serial.print(PIOB->PIO_PDSR,BIN); Serial.print(" ; -HEX = "); Serial.println(PIOB->PIO_PDSR,HEX);
Serial.print(" PIOC_PDSR Pin Data Status Register -BIN = "); Serial.print(PIOC->PIO_PDSR,BIN); Serial.print(" ; -HEX = "); Serial.println(PIOC->PIO_PDSR,HEX);
Serial.print(" PIOD_PDSR Pin Data Status Register -BIN = "); Serial.print(PIOD->PIO_PDSR,BIN); Serial.print(" ; -HEX = "); Serial.println(PIOD->PIO_PDSR,HEX);
Serial.println();
Serial.print(" PIOA_OSR Output Status Register -BIN = "); Serial.print(PIOA->PIO_OSR,BIN); Serial.print(" ; -HEX = "); Serial.println(PIOA->PIO_OSR,HEX);
Serial.print(" PIOB_OSR Output Status Register -BIN = "); Serial.print(PIOB->PIO_OSR,BIN); Serial.print(" ; -HEX = "); Serial.println(PIOB->PIO_OSR,HEX);
Serial.print(" PIOC_OSR Output Status Register -BIN = "); Serial.print(PIOC->PIO_OSR,BIN); Serial.print(" ; -HEX = "); Serial.println(PIOC->PIO_OSR,HEX);
Serial.print(" PIOD_OSR Output Status Register -BIN = "); Serial.print(PIOD->PIO_OSR,BIN); Serial.print(" ; -HEX = "); Serial.println(PIOD->PIO_OSR,HEX);
}
void leggi_pin(){
Serial.println();
Serial.println("lettura pin 0-69");
for (byte i=0; i <= 69; i++){
Serial.print("PIN = "); Serial.print(i); Serial.print(" ");Serial.println(digitalRead(i));
}
}
uscita debug
lettura pin 0-69 senza nessuna impostazione sui pin
PIN = 0 0
PIN = 1 0
PIN = 2 0
PIN = 3 0
PIN = 4 0
PIN = 5 0
PIN = 6 0
PIN = 7 0
PIN = 8 0
PIN = 9 0
PIN = 10 0
PIN = 11 0
PIN = 12 0
PIN = 13 0
PIN = 14 0
PIN = 15 0
PIN = 16 0
PIN = 17 0
PIN = 18 0
PIN = 19 0
PIN = 20 0
PIN = 21 0
PIN = 22 0
PIN = 23 0
PIN = 24 0
PIN = 25 0
PIN = 26 0
PIN = 27 0
PIN = 28 0
PIN = 29 0
PIN = 30 0
PIN = 31 0
PIN = 32 0
PIN = 33 0
PIN = 34 0
PIN = 35 0
PIN = 36 0
PIN = 37 0
PIN = 38 0
PIN = 39 0
PIN = 40 0
PIN = 41 0
PIN = 42 0
PIN = 43 0
PIN = 44 0
PIN = 45 0
PIN = 46 0
PIN = 47 0
PIN = 48 0
PIN = 49 0
PIN = 50 0
PIN = 51 0
PIN = 52 0
PIN = 53 0
PIN = 54 0
PIN = 55 0
PIN = 56 0
PIN = 57 0
PIN = 58 0
PIN = 59 0
PIN = 60 0
PIN = 61 0
PIN = 62 0
PIN = 63 0
PIN = 64 0
PIN = 65 0
PIN = 66 0
PIN = 67 0
PIN = 68 0
PIN = 69 0
lettura registri PIO A B C D
PIOA_ODSR Output Data Status Register -BIN = 0 ; -HEX = 0
PIOB_ODSR Output Data Status Register -BIN = 0 ; -HEX = 0
PIOC_ODSR Output Data Status Register -BIN = 0 ; -HEX = 0
PIOD_ODSR Output Data Status Register -BIN = 0 ; -HEX = 0
PIOA_PDSR Pin Data Status Register -BIN = 0 ; -HEX = 0
PIOB_PDSR Pin Data Status Register -BIN = 0 ; -HEX = 0
PIOC_PDSR Pin Data Status Register -BIN = 0 ; -HEX = 0
PIOD_PDSR Pin Data Status Register -BIN = 0 ; -HEX = 0
PIOA_OSR Output Status Register -BIN = 0 ; -HEX = 0
PIOB_OSR Output Status Register -BIN = 0 ; -HEX = 0
PIOC_OSR Output Status Register -BIN = 0 ; -HEX = 0
PIOD_OSR Output Status Register -BIN = 0 ; -HEX = 0
pinMode(10, INPUT);
lettura pin 0-69
PIN = 0 0
PIN = 1 0
PIN = 2 0
PIN = 3 1
PIN = 4 1
PIN = 5 1
PIN = 6 1
PIN = 7 1
PIN = 8 1
PIN = 9 1
PIN = 10 1
PIN = 11 0
PIN = 12 0
PIN = 13 0
PIN = 14 0
PIN = 15 0
PIN = 16 0
PIN = 17 0
PIN = 18 0
PIN = 19 0
PIN = 20 0
PIN = 21 0
PIN = 22 0
PIN = 23 0
PIN = 24 0
PIN = 25 0
PIN = 26 0
PIN = 27 0
PIN = 28 0
PIN = 29 0
PIN = 30 0
PIN = 31 0
PIN = 32 0
PIN = 33 1
PIN = 34 1
PIN = 35 1
PIN = 36 1
PIN = 37 1
PIN = 38 1
PIN = 39 1
PIN = 40 1
PIN = 41 1
PIN = 42 0
PIN = 43 0
PIN = 44 1
PIN = 45 1
PIN = 46 1
PIN = 47 1
PIN = 48 1
PIN = 49 1
PIN = 50 1
PIN = 51 1
PIN = 52 0
PIN = 53 0
PIN = 54 0
PIN = 55 0
PIN = 56 0
PIN = 57 0
PIN = 58 0
PIN = 59 0
PIN = 60 0
PIN = 61 0
PIN = 62 0
PIN = 63 0
PIN = 64 0
PIN = 65 0
PIN = 66 0
PIN = 67 0
PIN = 68 0
PIN = 69 0
lettura registri PIO A B C D
PIOA_ODSR Output Data Status Register -BIN = 0 ; -HEX = 0
PIOB_ODSR Output Data Status Register -BIN = 0 ; -HEX = 0
PIOC_ODSR Output Data Status Register -BIN = 0 ; -HEX = 0
PIOD_ODSR Output Data Status Register -BIN = 0 ; -HEX = 0
PIOA_PDSR Pin Data Status Register -BIN = 0 ; -HEX = 0
PIOB_PDSR Pin Data Status Register -BIN = 0 ; -HEX = 0
PIOC_PDSR Pin Data Status Register -BIN = 1111111111111111111111111111110 ; -HEX = 7FFFFFFE
PIOD_PDSR Pin Data Status Register -BIN = 0 ; -HEX = 0
PIOA_OSR Output Status Register -BIN = 0 ; -HEX = 0
PIOB_OSR Output Status Register -BIN = 0 ; -HEX = 0
PIOC_OSR Output Status Register -BIN = 0 ; -HEX = 0
PIOD_OSR Output Status Register -BIN = 0 ; -HEX = 0
in tutto 25 pin vanno a 1 a causa del PULLUP e guarda caso sono quelli che appartengono al PIO C esattamente questi
33 34 35 36 37 38 39 40 41 51 50 49 48 47 46 45 44 9 8 7 6 5 4 3 10
nel caso precedente i valori erano letti con PIOB_ODSR Output Data Status Register perchè parlavamo di OUTPUT
in questo caso i valori sono letti con PIOC_PDSR Pin Data Status Register perchè parliamo di INPUT