카테고리 없음

ARM 첫번째 시간(수량 확인, LED 점등 실습)

동화다아아 2011. 6. 21. 15:42

- 브레드보드, 라인 박스(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;

}

⇒ 실습

 

 

⇒ 동영상