main()함수
먼저 main()함수에서 relay_init()을 호출한다.
아래 그림의 relay_init()함수를 주목한다.
realay.c
헤더파일에서 RELAY_PIN은 1로 정의하였다. 이것은 1번핀을 relay와 arm칩을 연결하기 위해서이다.
p248
init ()함수에서
PIO_OER =1<<RELAY_PIN; -> 출력 활성화 레지스터에 1번자리에 1을 넣어 출력 활성화한다.
P250참고
P251참고
PIO_PER = 1<<RELAY_PIN;-> 핀을 활성화 레지스터. 1번핀을 사용하기 위해 핀 활성화 레지스터 1번 자리에 1을 넣는다.
PIO_SODR =1<<RELAY_PIN;->출력 데이터 레지스터 자리에 1을 넣어 high값으로 만든다.
P254참고
main()함수에서 init()함수가 호출되고 셋팅되어 아래 반복문이 실행된다.
dbgu 하이퍼 터미널과 연결이 되어 3번을 누르는 순간, 딸깍하는 소리가 나야 한다. 그러기 위해서
relay_toggle()함수
static unsigned int uiState=0; 전역변수 선언. 전역변수는 한 번만 초기화 한다.
다음 조건에 만즌 if문이 실행된다.
PIO_CODR=1<<RELAY_PIN; -> 출력데이터를 0v로 만드는 레지스터에 1번 자리에 1을 넣어 출력데이터를 0v로 만든다.
p255참고
uiState = 1; 그리고 uistat를 1로 만든다.
그러면 if문이 종료되고 함수가 종료된다.
다시 main()에서 반복문에 의해 실행되고 한번 더 3번으 누르면, relay_toggle()함수가 호출된다.
uiState가 if문에서 종료직전에 1을 넣었기 때문에 else문으로 가서 실행된다.
PIO_SODR=1<<RELAY_PIN; ->출력 데이터 레지스터 자리에 1을 넣어 high값으로 만든다.
p250참고
uiState = 0; ->다시 0을 넣는다.
이런방식으로 계속해서 반복하여 '딸깍'소리를 낼수 있게 동작한다.
그리고 relay를 결선시 아래그림을 참고하여 결선.
'임베디드 > Arm2567SAM' 카테고리의 다른 글
10월 16일 arm boot 코드분석(기초) (0) | 2013.10.17 |
---|---|
4월 LED정리 (0) | 2013.05.31 |
4월 17일 LCD문자입력함수 만들기 (0) | 2013.05.30 |
4월 16일 CMD_Write와 DATA_write함수 만들기 (0) | 2013.05.28 |
5월 27일 LCD에 한글이름 찍기 (0) | 2013.05.27 |