ARM 첫번째 시간(수량 확인, LED 점등 실습)
- 브레드보드, 라인 박스(20)
⇒ 선 60개
- 초음파 센서(SRF 05) 1set (미수령)
- LCD(16216D-4-B102A) 1set
- 스테핑 모터(SE-SM243) 1set
- USB cable 1set
- 시리얼 cable 1set
(연결 부분의 선이 헐겁다. 교체할 선이 없는 관계로 이대로 수령)
- ARM 보드 1set
→ 스위치 2개(ON/OF, USB/EXT)
→ USB 2.0 단자
→ 2핀 몰렉스
→ 3핀 몰렉스
→ RESET 스위치
→ AT91SAM7S256 (48MHz)
→ crystal(수정진동자-oscillator)-18.432(속도)
→ D1(발광 다이오드)
→ RLC
⇒ 위와 같이 브레드 보드에 ARM 보드를 연결하였다. 추후 LED 연결 등을 위해 보드는 브래드 보드 최하단에 연결.
실행순서
1) POWER → EXT, TST → ON, POWER → USB
2) CABLE 연결
3) D1에 불이 들어오면 → 10초간 상태 유지(ARM이 프로그램을 받을 준비하는 데 10초정도 걸린다.)
4) POWER → EXT
5) TST → OFF
6) POWER → USB
7) SAMBA 2.9 실행
→ Send File Name : D:/arm/ARM_LED/at91sam7s_flash_wc.bin 를 불러오고 SEND 시킨다.
// ARM J1 핀에 연결된 LED에 불이 깜빡이게 하는 소스
#define PIOA_PER (*(volatile unsigned int *)0xFFFFF400)
#define PIOA_OER (*(volatile unsigned int *)0xFFFFF410)
#define PIOA_PPUDR (*(volatile unsigned int *)0xFFFFF460)
#define PIOA_CODR (*(volatile unsigned int *)0xFFFFF434)
#define PIOA_SODR (*(volatile unsigned int *)0xFFFFF430)
void LED_INIT(void)
{
// Configure the pin in output
PIOA_OER = 0x00000001;
// Set the PIO controller in PIO mode instead of peripheral mode
PIOA_PER = 0x00000001;
// Disable pull-up
PIOA_PPUDR = 0x00000001;
}
int main(void)
{
volatile unsigned int iCount = 0;
LED_INIT();
while (1)
{
PIOA_CODR = 0x00000001;
for(iCount=0;1000000 >= iCount; ++iCount);
PIOA_SODR = 0x00000001;
for(iCount=0;1000000 >= iCount; ++iCount);
}
return 0;
}
⇒ 실습
⇒ J1에 LED의 GND 다리를 연결하고 반대편 다리에 Vcc 3.3을 연결하여 LED의 빛이 깜빡이는 것을 확인.
// LED를 1번부터 8번까지 순차적으로 ON/OFF 시키는 프로그램
#define PIOA_PER (*(volatile unsigned int *)0xFFFFF400)
#define PIOA_OER (*(volatile unsigned int *)0xFFFFF410)
#define PIOA_PPUDR (*(volatile unsigned int *)0xFFFFF460)
#define PIOA_CODR (*(volatile unsigned int *)0xFFFFF434)
#define PIOA_SODR (*(volatile unsigned int *)0xFFFFF430)
void LED_INIT(void)
{
// Configure the pin in output
PIOA_OER = 0x00000001;
// Set the PIO controller in PIO mode instead of peripheral mode
PIOA_PER = 0x000000FF;
// Disable pull-up
PIOA_PPUDR = 0x000000FF;
}
int main(void)
{
volatile unsigned int iCount = 0; // 지연시간 설정을 위한 변수
volatile unsigned int i = 0; // 반복문 변수 선언
LED_INIT();
while (1)
{
// 1에서 8번 LED까지 순차적으로 ON/OFF를 반복한다.
for(i=0;i<8;++i)
{
PIOA_OER = 0x00000001<<i;
PIOA_CODR = 0x00000001<<i;
for(iCount=0;1000000 >= iCount; ++iCount);
PIOA_SODR = 0x000000FF;
for(iCount=0;1000000 >= iCount; ++iCount);
}
}
return 0;
}
⇒ 실습
⇒ 동영상