Busan IT/ARM Controller

AT91SAM7S254회로도, LED불켜기

newind2000 2015. 7. 21. 17:27

================================ Outline ====================================

AT91SAM7S254회로도 

LED불켜기

----------------------------------------------------------------------------

AT91SAM7S254회로도 


http://www.devicemart.co.kr/5713 에서 회로도를 다운로드 받는다.




 

 

 

 

regulator - 전압을 규칙적으로 공급해주는 소자

Regulator에서 남은 전압은 열로 방출되기 때문에 발열이 발생한다.

발열이 많은 소자는 보드에서 떨어뜨린 후(플라스틱을 사용하여 이격) 납땜을 한다.




LED 불켜기


LED에 불을 켜는 코딩을 해보자.


소스를 컴파일 한 후 arm을 USB 포트에 연결하여 pc에 끼운다.


Sam-ba를 실행한다.


컴파일 된 flash용 bin파일을 올려준다.








/*** 소스 ***/


#define  PIO_PER    (*((volatile unsigned int *)0xFFFFF400))  //PIO enable register
#define  PIO_PDR    (*((volatile unsigned int *)0xFFFFF404))
#define  PIO_PSR    (*((volatile unsigned int *)0xFFFFF408))
#define  PIO_OER    (*((volatile unsigned int *)0xFFFFF410))
#define  PIO_ODR    (*((volatile unsigned int *)0xFFFFF414))
#define  PIO_OSR    (*((volatile unsigned int *)0xFFFFF418))
#define  PIO_IFER  (*((volatile unsigned int *)0xFFFFF420))
#define  PIO_IFDR  (*((volatile unsigned int *)0xFFFFF424))
#define  PIO_IFSR  (*((volatile unsigned int *)0xFFFFF428))
#define  PIO_SODR  (*((volatile unsigned int *)0xFFFFF430))
#define  PIO_CODR  (*((volatile unsigned int *)0xFFFFF434))
#define  PIO_ODSR  (*((volatile unsigned int *)0xFFFFF438))
#define  PIO_PDSR  (*((volatile unsigned int *)0xFFFFF43C))
#define  PIO_IER    (*((volatile unsigned int *)0xFFFFF440))
#define  PIO_IDR    (*((volatile unsigned int *)0xFFFFF444))
#define  PIO_IMR    (*((volatile unsigned int *)0xFFFFF448))
#define  PIO_ISR    (*((volatile unsigned int *)0xFFFFF44C))
#define  PIO_MDER  (*((volatile unsigned int *)0xFFFFF450))
#define  PIO_MDDR  (*((volatile unsigned int *)0xFFFFF454))
#define  PIO_MDSR  (*((volatile unsigned int *)0xFFFFF458))
#define  PIO_PUDR  (*((volatile unsigned int *)0xFFFFF460))
#define  PIO_PUER  (*((volatile unsigned int *)0xFFFFF464))
#define  PIO_PUSR  (*((volatile unsigned int *)0xFFFFF468))
#define  PIO_ASR    (*((volatile unsigned int *)0xFFFFF470))
#define  PIO_BSR    (*((volatile unsigned int *)0xFFFFF474))
#define  PIO_ABSR  (*((volatile unsigned int *)0xFFFFF478))
#define  PIO_OWER  (*((volatile unsigned int *)0xFFFFF4A0))
#define  PIO_OWDR  (*((volatile unsigned int *)0xFFFFF4A4))
#define  PIO_OWSR  (*((volatile unsigned int *)0xFFFFF4A8))

int main()
{
  volatile unsigned int iCount = 0;
  
  PIO_PER = 0x00000003;  //0,1번 핀을 활성화 시킨다.
  PIO_OER = 0x00000003;  //0,1번 핀을 출력 시킨다.
  

  

  while (1)
  {
    PIO_SODR = 0x00000003//SET으로 바꾸고 싶은 자리에 1을 넣으면 high로 바뀐다.
               //다른 비트에는 영향을 미치지 않는다.

    for(iCount=0;1000000 >= iCount; ++iCount);

    PIO_CODR = 0x00000003//SET으로 바꾸고 싶은 자리에 1을 넣으면 low로 바뀐다.
               //다른 비트에는 영향을 미치지 않는다.
  

    for(iCount=0;1000000 >= iCount; ++iCount);
  }  


  return 0;
}




cstartup.S


elf32-littlearm.lds


lowlevel.c


main.c


Makefile



반응형