Utilisation de l'Arduino IDE pour un Arduino Uno ...asm vers AVR port à partir de variable
je peux envoyer avec succès à un port en utilisant des macros telles que PORTB
mais je ne peux pas comprendre comment envoyer des données à un port est défini dans une variable comme ceci:
uint8_t pin = 0; // any value...
uint8_t port = digitalPinToPort(pin);
uint8_t *portreg = portModeRegister(port);
uint8_t portsfr = _SFR_IO_ADDR(port);
asm volatile
(
// other asm instructions...
"out %[port], %[masklo] \n\t"
::
[port] "I" (_SFR_IO_ADDR(PORTB)) // works
// [port] "I" (_SFR_IO_ADDR(port)) // doesn't compile
// [port] "I" (portreg) // doesn't compile
// [port] "I" (portsfr) // doesn't compile
);
Je trouve l'article suivant qui coud connexes, mais ne montre pas un exemple comment: avr gcc inline asm variable input operand
Comme toute référence du jeu d'instructions vous dira, 'out' ne prend pas une variable. Voyez si vous pouvez accéder à votre port en utilisant l'adresse mappée mémoire à la place. – Jester