티스토리 뷰

EMBEDDED/8-bit AVR

4) LED 제어

chrisysl 2018. 4. 18. 23:07

이번엔 실제 코드를 가지고 LED의 불빛을 제어해보도록 하자.


# 지난번 진행한 코드


이렇게 되면 DDRB 에서는 LED가 연결된 5번비트를 출력으로 바꿔줬고, 

PORTB에서는 동일한 5번비트를 1로 써줘서 High상태로 출력을 만들어줬다.


실제 이 코드를 한번 보드에 옮겨서 실행을 해보자.


# 하단의 깜빡이는 LED를 코드를 입력하여 제어해보도록 하자.






# 보드를 연결하면 현재 컴퓨터에 연결된 장비가 아트멜스튜디오상에 표시된다.






코드를 실행하기에 앞서 지난번에 설정해둔 설정을 변경해주어야한다.


# 실제 보드를 연결하였기 때문에, 속성(Properties) 창에서 연결된 장비를 선택해주고 인터페이스를 설정해준다.


인터페이스에는 ISP와 debugWIRE 이 두개중에 선택할 수  있는데, 

ISP는 디버깅을 하지않고, 단순히 작성된 프로그램을 MCU로 옮길때 사용하는 모드다

debugWIRE는 JTAG디버깅을 지원하는 모드다.


따라서 우리는 debugWIRE를 선택하고 메인에서 다시 디버그모드로 돌아가자.



그러면 원래 깜빡이던 LED의 불빛이 계속 들어와있는것을 확인 할 수 있다.


# 위와같이 디버깅을 진행해보면 PORTB에 값이 쓰여지는 순간 LED가 켜지는것을 확인할 수 있다.






그럼 이번엔 끄는 코드를 삽입해보도록 하자.


# 위와같이 코드를 작성하고 Break-point를 걸어 둔 뒤 디버그를 시작해보자






# 이와같이 PORTB의 5번비트에 값이 할당 되는지 안되는지에 따라 LED를 제어할 수 있다.






참고로 칩셋의 중앙 상단에 위치한 초록색 LED는 JTAG의 동작을 표시해주는 LED이므로 

우리가 제어하고있는 LED가 아니다.



이번에는 while루프 안에서 켰다 꺼졌다를 시간제한을 걸어 지속적으로 제어가 되고 있음을 나타내보도록 하자.


# 위와같이 delay를 걸어준다.


#define으로 현재 보드의 mhz를 정의해주고, delay헤더를 include 한 뒤, 500ms간 딜레이를 걸어줬다.

위와같이 작성한 뒤 실행시켜보면 불빛이 깜빡깜빡이는것을 확인 할 수 있다.





















댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함