본문 바로가기

AVR9

[AVR] ATmega8 브레드보드 테스트 - 스위치 & LED [ATmega8 브레드보드 테스트 - 스위치 & LED] 지난 글에서 ATmega8에 대한 주변회로를 구성하고 간단한 테스트를 위해 LED를 500ms만큼 껐다 키는 프로그램을 업로드하여 실행시켰었다. 이 과정에서 많은 실수를 범하고 심지어는 칩을 날려먹기도 했지만 매우 뜻깊은 활동이었다 자부할 수 있다. 이번에는 프로젝트를 위한 브레드보드에서의 두 번째 테스트로 외부 풀업 저항을 단 스위치로 입력을 받고, 해당하는 스위치가 입력되었을 때 해당 LED가 켜지도록 하는 프로그램을 작성하고 실행해보았다. 코드는 아래와 같다. 회로도에 대해서는 생략을 했는 데, 지난 글에서 구성한 ATmega8 주변 회로에서 코드만 봐도 알 수 있다시피 포트D 2,3,4 핀에 10k 저항의 풀업 저항을 단 스위치를 연결하고 .. 2020. 6. 11.
[AVR] ATmega8 브레드 보드에서 사용하기 - 퓨즈Fuse 비트를 잘못 변경하면 생기는 일 [ATmega8 브레드 보드에서 사용하기 - 퓨즈Fuse 비트를 잘못 변경하면 생기는 일]최근에 프로젝트를 하나 진행하고자 ATmega8 외 기타 주변회로를 구성하기 위한 부품 + 프로젝트 부품들을 구매했다. ATmega8의 경우, 완성된 보드 가격이 12000원에 달하는 것에 비해 ATmega8-PU 칩 가격은 1700원밖에 하지 않는다. 여기서 주변회로에 사용한 부품들까지 합해도 절대 12000원이 되지 않을 것이다라는 계산을 했고, 직접 ATmega8 보드를 만들어서 사용하기로 했다. 일단 브레드보드에서 ATmega8을 사용하기 위해 필요한 부품은 아래와 같다. 총 가격은 2080원으로 이는 가장 기본적인 것만 계산한 결과이다. 기타 전원부 회로라던가, 기타 등등을 추가하게 되면 더 늘어날 것이다... 2020. 6. 10.
[AVR] LED 실습 6. LED 순차 점등 제어(for 문 이용) [LED 실습 5. LED 순차 점등 제어(for 문 이용) ] 이 글에서는 AVR(Atmega128A)에서 LED제어하는 것을 실습한 내용을 다루려고 한다. 이 글은 지식을 나누고자 하는 목적이 아닌 개인 기록의 목적으로 작성했다는 점을 기억하기를 바란다. # 실습 6. LED 순차 점등 제어(for 문 이용) 이 문제에서 알아야 할 것은 LED실습2와 같으므로 생략하겠다. 회로의 경우, 실습1 과 동일하다. 코드의 핵심 동작은 LED 실습 5와 동일하다. 여기서 달라지는 것은 구현 방식이다. 기존에는 while문 안에서 buff 변수의 값이 모두 시프트되었는 지를 확인하여 모두 시프트되어 켜졌을 때 다시 buff 변수에 초깃값을 대입해줬다면, 아래의 코드는 while문의 반복이 시작되었을 때 buff.. 2020. 6. 9.
[AVR] LED 실습 5. LED 순차 점등 제어(if 문 이용) [LED 실습 5. LED 순차 점등 제어(if 문 이용) ] 이 글에서는 AVR(Atmega128A)에서 LED제어하는 것을 실습한 내용을 다루려고 한다. 이 글은 지식을 나누고자 하는 목적이 아닌 개인 기록의 목적으로 작성했다는 점을 기억하기를 바란다. # 실습 5. LED 순차 점등 제어(if 문 이용) 이 문제에서 알아야 할 것은 LED실습2와 같으므로 생략하겠다. 회로의 경우, 실습1 과 동일하다. LED 상태를 기록하는 버퍼 역할의 변수를 선언하고, while(1){}안에서 이 버퍼를 PORTn에 대입한다. 그리고 이 버퍼를 시프트 시킨 값에 1을 더한 후 버퍼에 대입한다. 이때 만약 버퍼값이 0xFF라면 이 작업 대신 버퍼를 초기값인 0x00로 초기화시킨다. 버퍼를 시프트시키고 1을 더하는 .. 2020. 6. 8.
[AVR] LED 실습 4. LED 일일히 설정하여 Shift On/Off [LED 실습 4. LED 일일히 설정하여 Shift ON/OFF ] 이 글에서는 AVR(Atmega128A)에서 LED제어하는 것을 실습한 내용을 다루려고 한다. 이 글은 지식을 나누고자 하는 목적이 아닌 개인 기록의 목적으로 작성했다는 점을 기억하기를 바란다. # 실습 4. LED 일일히 설정하여 Shift ON/OFF 이 문제에서 알아야 할 것은 LED실습2와 같으므로 생략하겠다. 회로의 경우, 실습1 과 동일하다. 먼저 LED를 모두 키고 500ms동안 대기한다. 그 다음에는 LED를 모두 끄고 500ms만큼 대기한다. 그 다음에는 왼쪽 LED 4개를 키고 500ms만큼 대기하고 LED를 모두 끄고 500ms만큼 대기한다. 이번에는 오른쪽 LED 4개를 키고 500ms만큼 대기하고 LED를 모두 .. 2020. 6. 4.
[AVR] LED 실습 3. LED 잔상 실험 [LED 실습 3. LED 잔상 실험 ] 이 글에서는 AVR(Atmega128A)에서 LED제어하는 것을 실습한 내용을 다루려고 한다. 이 글은 지식을 나누고자 하는 목적이 아닌 개인 기록의 목적으로 작성했다는 점을 기억하기를 바란다. # 실습 3. LED 잔상 실험 이 문제에서 알아야 할 것은 LED실습2와 같으므로 생략하겠다. 회로의 경우, 실습1 과 동일하다. 코드의 로직은 LED실습2와 매우 유사하다. 단지 지연 시간만 짧게 해주면 된다. 그 이유는 LED가 짧은 시간 동안 껐다 켜지게 되면 우리 눈에 LED의 "잔상"이 남아 LED가 켜진 것으로 인식하기 때문이다. 이 실습은 그것을 실험하기 위함일 듯하다. 여기서는 지연 시간을 10ms로 설정하였다. #define F_CPU 16000000UL.. 2020. 6. 4.
[AVR] LED 실습 2. LED의 ON/OFF 반복 [LED 실습 2. LED의 ON/OFF 반복 ] 이 글에서는 AVR(Atmega128A)에서 LED제어하는 것을 실습한 내용을 다루려고 한다. 이 글은 지식을 나누고자 하는 목적이 아닌 개인 기록의 목적으로 작성했다는 점을 기억하기를 바란다. # 실습 2. LED의 ON/OFF 반복 이 문제에서 알아야 할 것은 LED실습1 과 동일하지만 지연(delay) 시키는 것을 더 알아야 한다. 일반적으로 ms단위로 delay시키는 함수인 _delay_ms()함수를 사용하며, 이를 위해 F_CPU를 정의하여 외부 클럭을 정의해준다. 내가 사용하고 있는 ATmega128 보드의 경우 16MHz를 사용하고 있어 16000000UL로 정의해줬다. 회로의 경우, 실습1 과 동일하다. 코드의 로직은 단순하다. 먼저 DDR.. 2020. 6. 4.
[AVR] LED 실습 1. LED 출력 포트 설정하고 다 켜놓기 [LED 실습 1. LED 출력 포트 설정하고 다 켜놓기 ] 이 글에서는 AVR(Atmega128A)에서 LED제어하는 것을 실습한 내용을 다루려고 한다. 이 글은 지식을 나누고자 하는 목적이 아닌 개인 기록의 목적으로 작성했다는 점을 기억하기를 바란다. # 실습 1. LED 출력 포트 설정하고 다 켜놓기 이 문제에서 알아야 할 것은 AVR 포트를 출력으로 설정하는 것과 포트의 출력값을 변경하는 것이다. 이것을 위해서는 각각 DDRn 레지스터와 PORTn 레지스터를 다뤄야 한다.(여기서 n은 포트 A,B,C,D ...를 의미한다. 포트의 m핀을 입력으로 설정하고자 한다면 DDRn레지스터의 m번째 비트를 0으로, 출력으로 설정하고 싶다면 DDRn레지스터의 m번째 비트를 1로 설정하면 된다. 포트의 m핀의 .. 2020. 6. 3.
[AVR] Atmel Studio 7.0 설치하고 샘플 프로젝트 실행하기(+ ISP를 통해서 USB전원 공급하는 방법) [Atmel Studio 7.0 설치하고 샘플 프로젝트 실행하기(+ ISP를 통해서 USB전원 공급하는 방법)] 이 글에서는 전에 만들어둔 AVR 개발환경 준비하는 과정을 담은 영상을 글로 표현해보려고 한다. 시작하기에 앞서 준비물이 있다. 바로 AVRISP와 AVR 보드이다. AVR 보드는 AVR 칩을 사용하기 위한 기타 요소들을 모아 하나의 보드로 만든 것이며 AVRISP는 이 보드에 PC에서 작성한 코드를 업로드하기 위한 도구이다. 내가 사용한 AVRISP와 AVR 보드는 AVRISP-mk2와 AT128A-70B V2.0이다. 먼저 ISP를 통해서 USB 전원을 공급하기 위해서는 AVRISP-mk2를 분해시켜 줘야 한다. 설명서를 보면 "USB에서 나오는 5V를 타겟보드의 전원으로 사용 할 때는 제.. 2020. 4. 24.
반응형