Zgromadzenie na Arduino: rejestry IO


13

Pytanie: Jakich rejestrów używam, aby uzyskać dostęp do IO na Arduino Uno, kiedy używam asemblera do programowania?

Tło: Byłem zainteresowany ćwiczeniem umiejętności asemblera na Arduino (myślałem, że łatwiej będzie włączyć / wyłączyć diody LED niż martwić się o IO konsoli). Po przeprowadzeniu wstępnego wyszukiwania odkryłem, że do programowania Arduino można użyć zestawu narzędzi AVR. Jednak nie do końca wiem, jak znaleźć odpowiednie rejestry dla pinów IO.

Odpowiedzi:


8

Arkusze danych dla mikrokontrolerów AVR są dość dobre do odczytania. Wystarczy Google dla dokładnego kontrolera w Arduino (np. ATmege328) i znajdź arkusz danych „Kompletny” na stronie atmel.com . Nie pobieraj „Podsumowania”, nie zawiera ono wielu informacji. Pobierz arkusz danych z atmel.com, która jest jedyną lokalizacją z najnowszą dokumentacją.

Istnieją trzy rejestry używane w podstawowym We / Wy (patrz rozdział „Porty we / wy”):

Gdzie n jest identyfikatorem portu, litera od A, B, C, ... w zależności od liczby pinów IO twojego kontrolera. Każdy bit w każdym rejestrze reprezentuje pojedynczy pin GPIO (tak, potrzebujesz podstawowej wiedzy na temat binarnych, aby w pełni to zrozumieć).

  • DDR n , rejestr kierunku danych: zasadniczo konfiguruje pin dla wejścia (0) lub wyjścia (1).
  • Rejestr danych PORT n , Port n: Gdy pin jest ustawiony jako wyjściowy, odpowiedni bit przełącza pin wysoki na (1) lub niski (0). Po skonfigurowaniu jako wejście umożliwia słaby rezystor podciągający na styku wyjściowym.
  • PIN n , Port n Rejestr wejść: Użyj tego rejestru, aby odczytać bieżący poziom na pinie skonfigurowanym jako wejście.

3
To. Krok 1: Przestań myśleć o tym jak o arduino. To nie jest. To ATmega MCU na płytce drukowanej. 2. Przeczytaj arkusz danych. 3. Naprawdę nie, przeczytaj arkusz danych .
Connor Wolf

Ach ... właśnie tego potrzebowałem. Wydaje mi się, że spędziłem tyle czasu, szukając samouczków ukierunkowanych na Arduino, że zapomniałem po prostu programować kontroler AVR i mogłem skorzystać z jego arkusza danych.
apnorton

1

Sprawdź to: http://arduino.cc/en/Reference/PortManipulation

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

Jeśli chodzi o inne porty i piny, zaznacz pole danych kontrolera, są naprawdę przydatne dla osób, które je rozumieją! :)


3
Odpowiedzi tylko na link nie są przydatne dla witryny, ponieważ nie próbujemy utworzyć repozytorium linków. Co więcej, odpowiedź tylko na link jest bezużyteczna, jeśli link kiedykolwiek spadnie w przyszłości. Lepiej byłoby streścić lub sparafrazować treść w samej odpowiedzi, aby użytkownicy mogli znaleźć tutaj to, czego potrzebują, lub przynajmniej uzyskać wystarczający kontekst, aby móc samodzielnie znaleźć rozwiązania.
asheeshr
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.