Versammlung auf dem Arduino: IO-Register


13

Frage: Mit welchen Registern greife ich auf das E / A auf dem Arduino Uno zu, wenn ich Assembly für die Programmierung verwende?

Hintergrund: Ich war daran interessiert, meine Assemblersprachkenntnisse auf dem Arduino zu üben (ich dachte, es wäre einfacher, LEDs ein- und auszuschalten, als mich um die E / A-Funktionen der Konsole zu kümmern). Durch eine vorläufige Suche habe ich festgestellt, dass die AVR-Toolchain zum Programmieren des Arduino verwendet werden kann. Ich weiß jedoch nicht genau, wie ich die entsprechenden Register für die IO-Pins finden soll.

Antworten:


8

Die Datenblätter für die AVR-Mikrocontroller sind recht gut zu lesen. Suchen Sie bei Google nach dem genauen Controller auf Ihrem Arduino (z. B. ATmege328) und finden Sie das Datenblatt "Complete" auf der atmel.com- Website. Laden Sie die "Zusammenfassung" nicht herunter, sie enthält nicht viele Informationen. Laden Sie das Datenblatt von atmel.com herunter. Dies ist der einzige Speicherort mit der neuesten Dokumentation.

In Basic IO werden drei Register verwendet (siehe Kapitel "I / O-Ports"):

Wobei n eine Portkennung ist, ein Buchstabe von A, B, C, ... abhängig von der Anzahl der E / A-Pins Ihres Controllers. Jedes Bit in jedem Register stellt einen einzelnen GPIO-Pin dar (ja, Sie benötigen einige Grundkenntnisse in Binär, um dies vollständig zu verstehen).

  • DDR n , Data Direction Register (Datenrichtungsregister): Hiermit wird im Grunde ein Pin entweder für Eingang (0) oder Ausgang (1) konfiguriert.
  • PORT n , Port n-Datenregister: Wenn ein Pin als Ausgang festgelegt ist, schaltet das zugehörige Bit den Ausgangs-Pin auf High (1) oder Low (0). Bei Konfiguration als Eingang wird dadurch ein schwacher Pull-up-Widerstand am Ausgangspin aktiviert.
  • PIN n , Port n-Eingangsregister: Verwenden Sie dieses Register, um den aktuellen Pegel an einem als Eingang konfigurierten Pin zu lesen.

3
Dies. Schritt 1: Hör auf, es als Arduino zu betrachten. Es ist nicht. Es ist eine ATmega-MCU auf einer Platine. 2. Lesen Sie das Datenblatt. 3. Nein, lesen Sie das Datenblatt .
Connor Wolf

Ah ... das ist genau das, was ich brauchte. Ich habe so viel Zeit damit verbracht, nach auf Arduino ausgerichteten Tutorials zu suchen, dass ich vergaß, einfach einen AVR-Controller zu programmieren und dessen Datenblatt verwenden zu können.
Apnorton

1

Überprüfen Sie dies: http://arduino.cc/en/Reference/PortManipulation

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

Weitere Anschlüsse und Pins entnehmen Sie bitte dem Datenblatt Ihres Controllers. Sie sind für Menschen, die sie verstehen, sehr nützlich. :)


3
Nur-Link-Antworten sind für die Website nicht hilfreich, da wir nicht versuchen, ein Repository für Links einzurichten. Darüber hinaus sind Antworten nur auf Links nutzlos, wenn der Link in Zukunft jemals ausfällt. Es ist besser, den Inhalt in der Antwort selbst zusammenzufassen oder zu paraphrasieren, damit der Benutzer hier selbst das findet, was er benötigt, oder zumindest einen ausreichenden Kontext erhält, um selbst Lösungen zu finden.
Asheeshr
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.