Interrupt Arduino UNO R4 Minima disponibili

Ciao a tutti,
ho un dubbio su quali sono i pin di interrupt su Arduino minima R4, la documentazione riporta nel cheat-sheet solo il pin D2 e D3, anche nel language-reference.
Se invece faccio riferimento al Datasheet pagina 4 sono riportati più 8 IRQ. Ho notato che alcuni IRQ sono condivisi ad esempio IRQ1 si trova sia su A4 che su D3.
Io in particolare vorrei usare il pin A5 con IRQ2 e dalle prime prove sembra funzionare, allego il codice.

void setup() {
    pinMode(PG, INPUT_PULLUP);
    attachInterrupt(digitalPinToInterrupt(PG), ISR, FALLING );
}
void ISR() {
  pg_value = false;
}

PS: ho visto questo post dove uno del team di Arduino fa riferimento al Datasheet per capire quali pin usare

> Forum Pin Change interrupt - Finding various variable names

Mi piacerebbe fare chiarezza sulla documentazione.
Grazie :slight_smile:

La verità è:

PIN             MINIMA          WIFI

D0              P301            P301
D1              P302            P302
D2              P105            P104
D3              P104            P105
D8              P304            P304
D12             P110            P410
D13             P111            P102
D15(A1)         P000            P000
D16(A2)         P001            P001
D17(A3)         P002            P002
D18(A4)         P101            P101
D19(A5)         P100            P100

Contrariamente a quanto riportato nel reference, sembra, da prove che a suo tempo ho fatto, che questi siano TUTTI utilizzabili con la attachInterrupt() (... mentre il reference indica solo il D2 e D3) ... ovviamente se non utilizzati per altre funzionalità. :wink:

Guglielmo

1 Like

I seguente programmino:

void setup() {
   uint8_t pinArray[] = {0, 1, 2, 3, 8, 12, 13, 15, 16, 17, 18, 19};
   uint8_t pinIndex   = 0;
   uint8_t pin        = 0;

   delay ( 500 );
   Serial.begin ( 115200 );
   while ( !Serial ) delay ( 100 );

   for ( pinIndex = 0; pinIndex < 12; pinIndex++ ) {
      pin = pinArray[pinIndex];
      auto irq = getPinCfgs ( pin , PIN_CFG_REQ_INTERRUPT );
      if ( 0 == irq[0] ) continue;
      Serial.print ( "IRQ value for pin " );
      Serial.print ( pin );
      Serial.print ( ": " );
      Serial.println ( GET_CHANNEL ( irq[0] ) );
   }
}

void loop() {
   // put your main code here, to run repeatedly:

}

... ti restituisce il IRQ in funzione del pin. :wink:

Guglielmo

2 Likes

Salve Guglielmo,
Questo è quello che mi ritorna con Arduino Minima R4.

> IRQ value for pin 0: 6
IRQ value for pin 1: 5
IRQ value for pin 2: 0
IRQ value for pin 3: 1
IRQ value for pin 8: 9
IRQ value for pin 12: 3
IRQ value for pin 13: 4
IRQ value for pin 15: 6
IRQ value for pin 16: 7
IRQ value for pin 17: 2
IRQ value for pin 18: 1
IRQ value for pin 19: 2

Per altre funzionalità si intende se il pin è ANLOG,I2C ecc si perde quella funzionalità relativa al pin non si perde ad esempio qualche timer,PWM ?
Un`altra domanda ma la funzione "getPinCfgs " non è presente nel language-reference, ho trovato riferimenti nel solo nelArduinoCore-renesas .
PS: Se fossero utilizzi leciti di IRQ potrebbero sistemare la documentazione quelli del team di Arduino? Ma non saprei come fare la richiesta.

Il contesto in cui uso il pin A5 come interrupt, è un pin di una shield FPGA che sto sviluppando e mi permette di acquisire il power-good di un`alimentatore presente sulla shield.

Grazie

Si intende che se il pin è in uso per altre cose, ovviamente non puoi usarlo tu cone pin di INPUT per fare l'attachInterrupt().

Ovvio che NO, sono funzioni interne che si trovano se si studia il "core" Renesas.

Mah, a suo tempo se ne è parlato anche nelle sezioni di lingua inglese ... dato che è "uso condizionato" (al fatto che un altra periferica non stia usando quei pin) esulano dall'utilizzo standard del '"utente medio" e quindi, secondo me ... no, NON vanno documentati (per evitare problemi).

Guglielmo

1 Like

Comunque, se ti diverti con Arduino UNO R4, ci sono varie mie discussioni in area "Software" che magari ti posso interessare. Per trovarle basta che cerchi (con l'apposita finestrella creca, in alto a destra), "gpb01 Arduino UNO R4 - " dato che nel titolo ho sempre messo per tutte "Arduino UNO R4 - xxxxxxxxxxx" :wink:

Guglielmo

Grazie mille Guglielmo, ho provato anche questa stringa "Arduino UNO R4 @gpb01" ho trovato anche la vecchia discussione su RTC clock.:slight_smile:

La prossima cosa che vorrò sperimentare è invertire MISO e MOSI sulla mia R4 :crossed_fingers:

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.