Arduino에서 조립 : IO 레지스터


13

질문 : 프로그래밍에 어셈블리를 사용할 때 Arduino Uno의 IO에 액세스하기 위해 어떤 레지스터를 사용합니까?

배경 : Arduino에서 어셈블리 언어 기술을 연습하는 데 관심이있었습니다 (콘솔 IO에 대해 걱정하는 것보다 LED를 켜고 끄는 것이 더 쉽다고 생각했습니다). 예비 검색을 수행 한 결과, AVR 툴체인을 사용하여 Arduino를 프로그래밍 할 수 있습니다. 그러나 IO 핀에 해당하는 레지스터를 찾는 방법을 잘 모르겠습니다.

답변:


8

AVR 마이크로 컨트롤러의 데이터 시트는 읽기에 적당합니다. Arduino의 정확한 컨트롤러 (예 : ATmege328)를 Google에서 찾아보고 atmel.com 웹 사이트 에서 "Complete"데이터 시트를 찾으십시오 . "요약"을 다운로드하지 마십시오. 많은 정보가 포함되어 있지 않습니다. atmel.com에서 데이터 시트를 다운로드하십시오. 최신 문서가있는 유일한 위치입니다.

기본 IO에는 세 개의 레지스터가 사용됩니다 ( "I / O- 포트"장 참조).

여기서 n 은 포트 식별자이며 컨트롤러의 IO 핀 수에 따라 A, B, C, ... 범위의 문자입니다. 각 레지스터의 각 비트는 단일 GPIO 핀을 나타냅니다 (예,이를 완전히 이해하려면 이진에 대한 기본 지식이 필요합니다).

  • DDR n , 데이터 방향 레지스터 : 기본적으로 입력 (0) 또는 출력 (1)에 대한 핀을 구성합니다.
  • PORT n , Port n 데이터 레지스터 : 핀이 출력으로 설정되면 관련 비트가 출력 핀을 높음 (1) 또는 낮음 (0)으로 토글합니다. 입력으로 구성된 경우 출력 핀에서 약한 풀업 저항을 활성화합니다.
  • PIN n , 포트 n 입력 레지스터 :이 레지스터를 사용하여 입력으로 구성된 핀의 현재 레벨을 읽습니다.

3
이. 1 단계 : 아두 이노라고 생각하지 마십시오. 그렇지 않습니다. PCB의 ATmega MCU입니다. 2. 데이터 시트를 읽습니다. 3. 실제로, 데이터 시트를 읽으십시오 .
코너 울프

아 .. 정확히 내가 필요한 것입니다. Arduino 대상 자습서를 찾는 데 너무 많은 시간을 보냈기 때문에 단순히 AVR 컨트롤러를 프로그래밍하고 데이터 시트를 사용할 수 없었습니다.
apnorton

1

이것을 확인하십시오 : http://arduino.cc/en/Reference/PortManipulation

또한 : http://arduino.cc/en/Hacking/PinMapping168

다른 포트 및 핀에 대해서는 컨트롤러의 데이터 시트를 확인하십시오.이 데이터 시트는 이해하는 사람들에게 실제로 유용합니다! :)


3
링크 리포지토리를 설정하려고 시도하지 않으므로 링크 전용 답변은 사이트에 유용하지 않습니다. 또한, 나중에 링크가 다운되면 링크 만 응답이 쓸모가 없습니다. 사용자가 솔루션 자체를 찾을 수 있도록 여기에서 필요한 내용을 찾거나 최소한 충분한 컨텍스트를 얻을 수 있도록 답변 자체의 내용을 요약하거나 역설하는 것이 좋습니다.
asheeshr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.