AT91SAM7S256

2013.04.16_ARM칩_제어전_활성화단계

성엽이 2013. 4. 16. 16:26

소스를 넣기전에 활성화 시키는 단계를 알아보자!



< main.c >


LCD_Init() 를 이용하여 Lcd.c 함수를 호출한다. 여기서 LCD_Init() 는 제어하기전 활성화 해주기 위한 함수를 가져온다. 




< Lcd.c >


 LCD_RS or LCD_RW or LCD_EN or LCD_BS(버스) 각각을 

 PIO_OER(Output Enable Register), PIO_PER(PIO Enable Register) 활.성.화 시켜주기 위한 간략한

 소스이다. shift 연산자를 이용하였다. 밑에 나옴. 




< Lcd. h >


 LCD_RS , LCD_RW, LCD_EN 각각은 32비트의 0에서부터 24칸(∵ARM칩의 24번핀 - char LCD 4번핀 연결), 25칸(∵ARM칩의 25번핀 - char LCD 5번핀 연결), 26칸(∵ARM칩의 26번핀 - char LCD 6번핀 연결)Shift 연산을 시켜서 그 위치에 1을 넣어 활성화 시켰다. 마찬가지로 LCD_BS(버스) 0xFF(0x11111111) 을 넣어서 16칸 즉, 16~23번까지에 0xFF

(0x11111111) 를 넣어줘 활성화 시켜주었다.




※ makefile 파일에서 추가시켜준 정보들

  

 
#define  PIO_PER   (*((volatile unsigned int*)0xFFFFF400))
#define  PIO_PER   (*((AT91_REG*)0xFFFFF400))


#define AT91C_PIOA_PER  (AT91_CAST(AT91_REG *)   0xFFFFF400)  // 전처리시에 AT91_CAST는 없어지므로
#define AT91C_PIOA_PER  ((AT91_REG *)   0xFFFFF400)       //  이와같으며
#define AT91C_PIOA_PER  ((volatile unsigned int *)   0xFFFFF400) //  AT91_REG는 volatile unsigned int
                                                                     //  로 typedef문으로 재정의해주었다.