Study/AVR ATmega128 Easy Processor Kit

7. Easy Processor Kit 외부 LED 제어하기

지난번 시간에 이어 이번에도 LED를 제어 해보려 합니다.


하지만 이 LED는 ATmega128 모듈에 붙어있는 것이 아니라 외부적으로 연결되어 있는 LED를 말합니다!!


이처럼 대부분의 마이크로프로세서를 이용한 시스템에는 CPU외에 ROM, RAM, 7Segment, LCD, LED, I/O 등의 주변 소자들이 연결 되어있는 경우가 있어요.


이런 공통 버스들이 충돌되지 않게 하기 위해서는 어드레스 디코딩을 통해 선택신호를 만들게 되는데, 이때 사용되는 레지스터가 MCUCR 입니다!!


 - MCUCR


8bit로 구성되어 있는 MCUCR 레지스터는 MCU의 전체적인 시스템 기능을 설정하는 레지스터에요!


현재 저희는 여기서 맨 앞부분인 8번째 bit인 SRE로 어드레스 디코딩하여 외부 메모리 영역에 접근하게 되는것 입니다!


즉, SRE bit가 1로 셋팅이 되어 있으면 외부메모리 공간을 이용할 수 있는 것이죠.


반대로 0이 되어있으면, 기본 기능인 병렬 I/O 포트(GPIO)로 동작합니다. 


나머지 비트들은 뭐... 쓰일때 있으면 찾도록 하죠!ㅎㅎ 지금은 딱히 쓰일일은 별로 없어보입니다.


외부 메모리 공간에서 주소지정을 하는 어드레스 디코더 역할은 Easy Processor Kit에서 CPLD를 이용하여 구성합니다.


 - CPLD


CPLD는 복합 프로그래밍 논리적 소자인데... 말 그대로 프로그래밍이 가능한 소자인 것 같습니다... ㅎㅎㅎ.. 일단 이쪽으로 공부할 것이 아니고 이것을 이용하는 것이니 외부 메모리 공간에서 주소를 지정하는 어드레스 디코더 역할은 한다고만 알아둡시다!!


위의 회로도를 보게 되면 LED, KEY, LCD, DOT, FND 등등 여러개가 있는데 차근차근 하도록 하죠.


저희가 이용할 외부 LED는 LED_CS라고 적인 31번 I/O네요!!



위 표를 보게 되면 LED_CS는 0x4800에 저장되는 것을 알 수 있습니다!!


 - 외부 LED 회로도


이제 저장되는 것도 알았고 프로그래밍 하기전에 외부 LED 회로도를 살펴 볼까요?



우선 LED가 정방향이므로 이전시간에 배운것과는 반대로 1일때 ON이 된다는 사실을 알 수 있고요~


흠... SN74HC574라는 칩을 통과하네요..


이러한 칩은 무슨 역할을 하는지 알아볼까요??


 - SN74HC574 칩



칩의 블락도 및 테이블을 한번 살펴보죠~


OE에 Low 신호가 입력되면 버퍼에 1의 값이 입력되고, 상승에지일때 D 플립플롭 값이 출력된다. 그럼 플립플롭이란 것을 알 수 있습니다!!

즉 이러한 칩을 이용하기 때문에 마지막 값이 저장되어 있을 수 있는 것이죠. Kit을 껐다 켜도 다시 되는 이유가 이러한 칩 때문입니다~~


그렇다면 이제 0x4800에 데이터를 넣어서 외부 LED를 제어할 수 있겠죠???


 - 실습


AVR Studio 4를 켜 봅시당~



참참!! 외부 LED 위치는 Kit의 중앙쪽에 위의 사진처럼 저렇게 초록색으로 된 LED에요. 그래픽 LCD 밑에 있네요ㅎㅎ



#include <avr/io.h>

#define LED_CS (*(volatile unsigned char *)0x4800) // 외부 LED 메모리 주소값 0x4800 정의


int main()

{

MCUCR = 0x80; // 외부 메모리를 사용하기 위해 MCUCR 레지스터 1000 0000으로 설정

unsigned char data =0x00; // 부호 없는 1Byte data 변수 0x00 초기화

while(1)

{

data = 0x55; // 0x55 data에 지정

LED_CS = data; // 외부 LED 메모리에 0x55 0101 0101 들어가게 되어 LED 작동

}

}


위의 소스코드는 아시겠져?? 0b01010101 이 0x4800 외부 메모리에 들어가서 LED가 아래 사진과 같이 나오게 되는 것입니다!!


이제 컴파일 하시고 USB 연결 후 장비 ON!!


이제 HEX파일 실험장비에 넣어서 프로그램 눌러주시면 아래와 같은 결과가 나오게 됩니다~~!



이렇게 외부 LED 제어를 하게 되었네요~!! 다음시간에는 AVR GPIO 특성들에 대해서 알아보겠습니다.!!


감사합니다~~!!

,

최근 댓글

최근 트랙백

알림

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

링크

Yuria

카운터

Today :
Yesterday :
Total :