728x90
반응형
http://chilles.tistory.com/22
001.//---------- 입출력 IO설정002.#define PIO_PER (*(volatile unsigned int *) 0xFFFFF400) //병렬 입출력 제어 레지스터 병렬 입출력 포트로 사용한다.003.#define PIO_PDR (*(volatile unsigned int *) 0xFFFFF404)004.#define PIO_OER (*(volatile unsigned int *) 0xFFFFF410) //출력 방향 설정005.#define PIO_SODR (*(volatile unsigned int *) 0xFFFFF430) //출력006.#define PIO_CODR (*(volatile unsigned int *) 0xFFFFF434) //출력 하지 않음007.#define PIO_ISR (*(volatile unsigned int *) 0xFFFFF44C) //인터럽트 스테이터스 레지스터008.#define PIO_ASR (*(volatile unsigned int *) 0xFFFFF470)009.#define PIO_BSR (*(volatile unsigned int *) 0xFFFFF474)010. 011.//----------- 인터럽트 IO설정012.#define AIC_IDCR (*(volatile unsigned int *) 0xFFFFF124)013.#define AIC_SVR ((volatile unsigned int *) 0xFFFFF080)014.#define AIC_SMR ((volatile unsigned int *) 0xFFFFF000)015.#define AIC_ISR ((volatile unsigned int *) 0xFFFFF108)016.#define AIC_ICCR (*(volatile unsigned int *) 0xFFFFF128)017.#define AIC_IECR (*(volatile unsigned int *) 0xFFFFF120)018. 019.//---------- DBGU IO설정020.#define DBGU_CR (*(volatile unsigned int *) 0xFFFFF200)021.#define DBGU_MR (*(volatile unsigned int *) 0xFFFFF204)022.#define DBGU_IER (*(volatile unsigned int *) 0xFFFFF208)023.#define DBGU_CSR (*(volatile unsigned int *) 0xFFFFF214)024.#define DBGU_RHR (*(volatile unsigned int *) 0xFFFFF218)025.#define DBGU_THR (*(volatile unsigned int *) 0xFFFFF21C)026.#define DBGU_BRGR (*(volatile unsigned int *) 0xFFFFF220)027. 028.//---------- 전력 제어 설정029.#define PMC_PCER (*(volatile unsigned int *) 0xFFFFFC10)030. 031.#define MASTERCLOCK 48000000032. 033.void DBGU_TX_char(unsigned int data);034. 035.void Delayms(unsigned int ms) //딜레이 함수..036.{037.volatile unsigned int count, countmax = (MASTERCLOCK / 10000) * ms;038. 039.for(count = 0; count < countmax; count++);040.}041. 042.void DBGU_RX_ISR(void) /* DBGU interrupt service routine */043.{044.static int flag = 0;045. 046.flag ^= 1;047. 048.if(flag)049.{050.PIO_SODR = 0x000000FF;051.DBGU_TX_char('1');052.}053.else054.{055.PIO_CODR = 0x000000FF;056.DBGU_TX_char('2');057.}058.DBGU_TX_char(DBGU_RHR);059.}060. 061.void DBGU_TX_char(unsigned int data) /* transmit a character by DBGU */062.{063.while(!(DBGU_CSR & 0x0002)); // wait until TXRDY=1064.DBGU_THR = data; // transmit a character065.}066. 067.int main(void)068.{069.PMC_PCER = 1 << 2;070.PIO_OER = 0x000000FF;071.PIO_CODR = 0x000000FF;072. 073.// 주변장치A DTXD와 DRXD를 사용074.PIO_ASR = (unsigned int)1 << 10 | (unsigned int)1 << 9;075.// 주변장치B 사용 불가076.PIO_BSR = 0;077.// PA9,PA10을 병렬I/O포트로 사용하는것을 금지(주변장치로 사용O)078.PIO_PDR = ((unsigned int)1 << 10 | (unsigned int)1 << 9) | 0;079. 080.// 패리티 사용X081.DBGU_MR = 0x00000800; // normal mode, no parity082.// 보레이트 발생 레지스터083.DBGU_BRGR = 26; // MCK/16/26 = 115200 bps084. 085.// 0x150 = 101010000086.// RSTSTA=1, TXEN=1, RXEN=1087.// DBGU_SR 레지스터의 PARE,FRAME,OVRE 에러비트를 RESET, 송신부/수신부 동작 허용088.DBGU_CR = 0x00000150; // TX, RX enable089. 090.// RXRDY = 1 (RX레디 인터럽트허용)091.DBGU_IER = (unsigned int)1 << 0;092. 093.// 주변장치1(System Controller)의 인터럽트 금지094.AIC_IDCR = (unsigned int)1 << 1;095.// 인터럽트 서비스 루틴의 Addr을 저장096.AIC_SVR[1] = (unsigned int)DBGU_RX_ISR;097.// SRCtype과 우선순위 설정098.AIC_SMR[1] = 1 | 7;099.// SYS의 에지 검출기 클리어100.AIC_ICCR = (unsigned int)1 << 1;101.// SYS의 인터럽트 허용(AIC_IDCR과 반대)102.AIC_IECR = (unsigned int)1 << 1;103.while(1);104.}728x90
'관리자 기고' 카테고리의 다른 글
| vi vim 편집기 문장 치환, Dos 캐럿 문자(^M 엔터) 제거 (0) | 2019.03.29 |
|---|---|
| 뿌띠 PuTTY SSH 자동 로그인 접속 설정 (0) | 2019.03.29 |
| 인디언 기도문 (0) | 2018.09.05 |
| ATMega ADC Convert Pseudo Code (0) | 2013.06.05 |
| AVR 매크로 어셈블리 (atmega2560 MACRO ASSEMBLY) (4) | 2013.06.03 |
| AT91SAM7S ARM 수업 pseudocode Timer0_Init (5) | 2013.05.14 |
| AT91SAM7S의 USART(DBGU) 수업 보조 자료 (6) | 2013.05.07 |
| [양식] 프로젝트 제안서 (9) | 2013.05.06 |