D'où sort PIN0?

Bonjour à tous,

Après une recherche d'erreur sur un programme, j'ai fini par écrire:

void setup()
{
  Serial.begin(115200);
  Serial.print("PIN0 = "); Serial.println(PIN0);
}

void loop(){}

Et cela me donne

PIN0 = 0

Ou sont définies les nombres PIN0 à PIN7? Je suis sur Uno V3

Du coup, on ne peut pas écrire:

const uint8_t PIN3 = 3;

void setup()
{
  Serial.begin(115200);
  pinMode(PIN3, OUTPUT);
  digitalWrite(PIN3, HIGH);
}

void loop()
{
}

On a le droit à PIN_3, Pin3....
Mais je n'aime pas Pin3 car j'ai la mauvaise habitude de mettre mes constantes en majuscules..

entre autres dans un fichier portpins.h (mais pas que)
chez moi il est ici :
C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr

La seule provenance que je connais est les Charentes :rofl:

Sur quelle carte ?

Effectivement dans avr-libc on les trouve

Vous pouvez toujours faire dans votre fichier

#ifdef PIN0
#undef PIN0
#endif

#define PIN0 42 // ce que vous voulez 

Effectivement, chez moi il est dans un fichier bien planqué:
C:\Users\Utilisateur\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr
Dans ce répertoire, il y a 333 fichiers .h Quand on compile, on lit tous ces fichiers?

S'ils sont là c'est que ça doit servir — ou faut espérer :slight_smile:

Il me semble que lors des compilations des bibliothèques il y a un cache qui se fait. Elle sont ensuite conservées en format objet intermédiaire et juste linkée lors de l'édition de lien.

Non, le compilateur ne lit que celui qui correspond à ton CPU. En l’occurrence ce doit être "iom328p.h" et quelques autre comme "portpins.h"