Assemblage sur l'Arduino: registres IO

13

Question: Quels registres dois-je utiliser pour accéder à l'IO sur l'Arduino Uno lorsque j'utilise l'assembly pour la programmation?

Contexte: Je souhaitais pratiquer mes compétences en langage d'assemblage sur l'Arduino (je pensais qu'il serait plus facile d'allumer / éteindre les LED que de se soucier des E / S de la console). Après avoir effectué une recherche préliminaire , j'ai découvert que la chaîne d'outils AVR peut être utilisée pour programmer l'Arduino. Pourtant, je ne sais pas trop comment trouver les registres correspondants pour les broches IO.

apnorton
la source

Réponses:

8

Les fiches techniques des microcontrôleurs AVR sont assez bonnes à lire. Il vous suffit de rechercher le contrôleur exact sur votre Arduino (par exemple, ATmege328) et de trouver la fiche technique "complète" sur le site Web atmel.com . Ne téléchargez pas le "Résumé", il ne contient pas beaucoup d'informations. Téléchargez la fiche technique sur atmel.com, qui est le seul emplacement avec la documentation la plus récente.

Il existe trois registres utilisés dans les E / S de base (consultez le chapitre intitulé "Ports d'E / S"):

n est un identifiant de port, une lettre allant de A, B, C, ... selon le nombre de broches IO de votre contrôleur. Chaque bit dans chaque registre représente une seule broche GPIO (oui, vous avez besoin de quelques connaissances de base sur le binaire pour bien comprendre cela).

  • DDR n , registre de direction des données: il configure essentiellement une broche pour l'entrée (0) ou la sortie (1).
  • PORT n , Port n Data Register: Lorsqu'une broche est définie comme sortie, le bit associé fait basculer la broche de sortie haut (1) ou bas (0). Lorsqu'il est configuré en entrée, cela permet une faible résistance de pull up sur la broche de sortie.
  • PIN n , registre d'entrée du port n: utilisez ce registre pour lire le niveau actuel sur une broche configurée en entrée.
jippie
la source
3
Cette. Étape 1: Arrêtez de le considérer comme un arduino. Ce n'est pas. C'est un MCU ATmega sur un PCB. 2. Lisez la fiche technique. 3. Non vraiment, lisez la fiche technique .
Connor Wolf
Ah ... c'est exactement ce dont j'avais besoin. Je pense que j'ai passé tellement de temps à chercher des tutoriels ciblés sur Arduino, que j'ai oublié que je programmais simplement un contrôleur AVR et que je pouvais utiliser sa fiche technique.
apnorton du
1

Vérifiez ceci: http://arduino.cc/en/Reference/PortManipulation

Aussi: http://arduino.cc/en/Hacking/PinMapping168

Quant aux autres ports et broches, vérifiez la fiche technique de votre contrôleur, ils sont vraiment utiles aux personnes qui peuvent les comprendre! :)

Le docteur
la source
3
Les réponses de lien uniquement ne sont pas utiles pour le site, car nous n'essayons pas d'établir un référentiel de liens. De plus, la réponse par lien uniquement est inutile si le lien tombe en panne à l'avenir. Il serait préférable de résumer ou de paraphraser le contenu dans la réponse elle-même afin que les utilisateurs puissent trouver ce dont ils ont besoin ici eux-mêmes ou à tout le moins obtenir un contexte suffisant pour pouvoir trouver eux-mêmes des solutions.
asheeshr