Study/AVR ATmega128 Easy Processor Kit

8. AVR의 GPIO 특성 이해

안녕하세요~~!!! 오랜만에 찾아뵙네요 ㅎㅎ 2학기 시작하고 시간이 부족해서 블로그 신경을 못쓰고 있었답니다 ㅠㅠ


이제 겨울방학이고 해서 다시 새마음 새뜻으로 차근차근 AVR 관련 공부한 것을 포스팅 하려구 해요!! ^^


다시 힘을 내서!! 시작해보도록 하죠. 저번에 Easy Processor Kit에 있는 ATmega128의 외부 LED 제어를 해보았는데요


이번 시간에는 간략하게 AVR GPIO의 특성에 대해서 공부해보도록 할게요.


 - AVR GPIO 특성


 ATmega128 모두 6개의 8비트 양방향 병렬 I/O 포트(PORTA~F)1개의 5비트 양방향 병렬 I/O 포트(PORTG)를 가지고 있어요. 포트 A~E는 범용 I/O 포트로 사용될 경우 기능적으로 모두 read-modify-wirte 동작이 가능합니다!!

 그림과 같이 각 I/O 핀에는 보호용 다이오드가 붙어있으며, 스위치 작동시 내부 풀업저항의 사용 여부를 선택적으로 설정할 수도 있답니다.


 그렇다면 과연 풀업저항이란 뭘까요??

그림과 같이 스위치가 OFF일 때는 +5v라는 High 값이 A로 가게 되며, 스위치가 ON일 때는 대부분의 전류가 Ground로 빠지게 되어 A에는 Low값이 입력되는 회로에서 저항의 명칭을 말하죠.

 그럼 이것을 쓰는 이유는 무엇이냐? 바로 플로팅 상태를 해결하기 위해서 쓰이는 것입니다. 플로팅 상태는 보통 스위치 off 상태에서 나타나게 되는 현상으로 HIGH인지 LOW인지 입력 상태를 알 수 없는 상태를 말합니다.


 그럼 이러한 포트들을 제어해주는 레지스터들은 무엇이냐? Easy Processor Kit에서는 외부 메모리 사용시 CPLD라는 외부 메모리 디코더가 있어 필요 없지만 ATmega128 보드나 아두이노 보드 사용시 반드시 포트들을 초기화 해주어하는 레지스터들이에요. 알아두시는게 유용할 겁니다!


 

빨강 : DDxn, 파랑 : PORTxn, 초록 : PINxn

 각 포트에는 3개의 I/O 레지스터 영역을 가지고 있는데, 입출력의 방향을 설정하는 DDRx 레지스터, 데이터 출력에 해당하는 PORTx 레지스터, 포트 입력 핀에 해당하는 PINx 레지스터 등이 있습니다!!

 좀 더 자세히 이 레지스터들을 알아보면 DDxn은 방향설정 레지스터 DDRx의 각 비트로서 이것을 1로 주면 이 핀은 출력핀으로 설정되고, 0으로 주면 입력핀으로 설정되요. 그리고 PORTxn은 출력으로 설정된 포트에 데이터를 출력하는 레지스터 비트이며, PINxn 레지스터 비트는 그 포트 핀을 읽어들이는 것입니다^^


 그 외에도 각 포트들은 부수적인 기능을 1~2가지씩 가지고 있어요. 대략적으로 요약해 보자면 다음과 같습니다.


 

 - 포트 A : 외부 메모리를 인터페이스하기 위하여 시분할다중화된 데이터 버스 및 어드레스 버스의 하위 바이트로 동작합니다.(ALE 신호 사용) 밑의 그림과 같이 외부 메모리와 연결 시 상위 8비트(포트 C)는 그대로 연결되지만, 하위 8비트(포트 A)ALE에 의해 시간차로 어드레스 버스로 갈 건지, 데이터 버스로 갈 건지 결정하게 되요. 이 부분들이 우리가 사용하는 Kit에서는 MCUCR이라는 레지스터와 함께 CPLD를 통해 연결이 다 되어 있기 때문에 우리가 편하게 사용할 수 있는 겁니다.

 - 포트 B : 타이머/카운터나 SPI 기능을 위한 신호들로 동작합니다.

 - 포트 C : 외부 메모리를 인터페이스하기 위한 어드레스 버스의 상위 바이트로 동작합니다.(포트 A 참조)

 - 포트 D : 타이머/카운터나 외부 인터럽트 또는 USART1,TWI 직렬통신 포트 기능을 위한 신호들로 동작합니다.

 - 포트 E : 타이머/카운터나 외부 인터럽트 또는 USART0 직렬 통신 포트, 아날로그 비교기, ISP 기능을 위한 신호들로 동작합니다.

 - 포트 F : A/D 컨버터나 JTAG 인터페이스 기능을 위한 신호들로 동작합니다.

 - 포트 G : 메모리 인터페이스나 타이머/카운터 기능을 위한 신호들로 동작합니다.


이러한 기능들이 있다는 것만 알아두세요 ㅎㅎ 각 기능들의 명칭들은 ATmega128 보드를 구입하신 분이나 아두이노를 구입하신 분들은 해당 포트가 어떤 용도로 이용되는지 명칭들과 함께 적혀있으니 그에 따라 사용하시면 되요.


자 이제 GPIO의 특성에 대해서 대략적으로 이해하셨나요?? 이해하셨다면 이제 실험을 해보러 가죠!! 다음 시간에는 Easy Processor Kit 외부 Dip Switch를 가지고 실험해 보겠습니다.



,

최근 댓글

최근 트랙백

알림

이 블로그는 구글에서 제공한 크롬에 최적화 되어있고, 네이버에서 제공한 나눔글꼴이 적용되어 있습니다.

링크

Yuria

카운터

Today :
Yesterday :
Total :